DirectQuery 모드DirectQuery Mode

적용 대상:예SQL Server Analysis Services예Azure Analysis ServicesAPPLIES TO:yesSQL Server Analysis ServicesyesAzure Analysis Services이 항목에서는 설명 DirectQuery 모드 1200 이상 호환성 수준에서 Analysis Services 테이블 형식 모델에 대 한 합니다. This topic describes DirectQuery mode for Analysis Services tabular models at the 1200 and higher compatibility levels . SSDT에서 디자인하는 모델에 대해 DirectQuery 모드를 설정하거나 이미 배포된 테이블 형식 모델에 대해 SSMS에서 DirectQuery 모드로 변경할 수 있습니다.DirectQuery mode can be turned on for models you're designing in SSDT, or for tabular models that have already been deployed, you can change to DirectQuery mode in SSMS. DirectQuery 모드를 선택하기 전에 이점과 제한 사항을 이해하는 것이 중요합니다.Before choosing DirectQuery mode, it's important to understand both the benefits and restrictions.

이점Benefits

기본적으로 테이블 형식 모델은 메모리 내 캐시를 사용하여 데이터를 저장하고 쿼리합니다.By default, tabular models use an in-memory cache to store and query data. 테이블 형식 모델이 메모리에 있는 데이터를 쿼리할 경우 복잡한 쿼리도 아주 빨리 처리할 수 있습니다.When tabular models query data residing in-memory, even complex queries can be incredibly fast. 그러나 캐시된 데이터를 사용할 경우 몇 가지 제한 사항이 있습니다.However, there are some limitations to using cached data. 다시 말해, 큰 데이터 집합은 사용 가능한 메모리를 초과할 수 있으며 데이터 새로 고침 요건을 정기적인 프로세싱 일정으로 수행하는 것이 (불가능하지 않다면) 어려울 수 있습니다.Namely, large data sets can exceed available memory, and data freshness requirements can be difficult if not impossible to achieve on a regular processing schedule.

DirectQuery는 쿼리 실행을 보다 효율적으로 만드는 RDBMS 기능을 활용하는 동시에 이러한 제한 사항을 극복합니다.DirectQuery overcomes these limitations while also leveraging RDBMS features making query execution more efficient. DirectQuery를 사용하면:With DirectQuery:

  • 데이터가 최신 데이터이며, 메모리 내 캐시에서 별도의 데이터 복사본을 유지 관리해야 하는 추가적인 관리 오버헤드가 없습니다.Data is up-to-date, and there is no extra management overhead of having to maintain a separate copy of the data (in the in-memory cache). 기본 원본 데이터를 변경하면 데이터 모델에 대한 쿼리에 바로 반영될 수 있습니다.Changes to the underlying source data can be immediately reflected in queries against the data model.

  • 데이터 집합이 Analysis Services 서버의 메모리 용량보다 클 수 있습니다.Datasets can be larger than the memory capacity of an Analysis Services server.

  • DirectQuery는 메모리 최적화 열 인덱스에서 제공 하는 공급자 측 쿼리 가속 기능 활용을 걸릴 수 있습니다.DirectQuery can take advantage of provider-side query acceleration, such as that provided by memory optimized column indexes.

  • 데이터베이스의 행 수준 보안 기능을 사용하여 백 엔드 데이터베이스에서 보안을 적용할 수 있습니다(또는 DAX를 통해 모델에서 행 수준 보안을 사용할 수 있음).Security can be enforced by the back-end database , using row-level security features from the database (alternatively, you can use row-level security in the model via DAX).

  • 모델에 포함되어 있는 복합 수식에 여러 쿼리가 필요할 수 있는 경우 Analysis Services에서는 최적화를 수행하여 벡 엔드 데이터베이스에 대해 실행된 쿼리의 쿼리 계획 효율성을 극대화할 수 있습니다.If the model contains complex formulas that might require multiple queries, Analysis Services can perform optimization to ensure that the query plan for the query executed against the back-end database will be as efficient as possible.

제한 사항Restrictions

DirectQuery 모드의 테이블 형식 모델에는 몇 가지 제한 사항이 있습니다.Tabular models in DirectQuery mode have some restrictions. 모드를 전환하기 전에 기능이 감소되는 것보다 백 엔드 서버에서 쿼리를 실행하는 이점이 더 큰지를 확인해야 합니다.Before switching modes, it's important to determine whether the advantages of query execution on the backend server outweigh any reduction in functionality.

SQL Server Data ToolsSQL Server Data Tools에서 기존 모델의 모드를 변경하면, 모델 디자이너는 DirectQuery 모드와 호환이 되지 않은 모델의 기능을 알려줍니다.If you change the mode of an existing model in SQL Server Data ToolsSQL Server Data Tools, the model designer will notify you of any features in your model that are incompatible with DirectQuery mode.

다음 목록에는 유의해야 하는 주요 기능 제한 사항이 요약되어 있습니다.The following list summarizes the main feature restrictions to keep in mind:

기능 영역Feature area 제한Restriction
데이터 원본Data sources DirectQuery 모델은 SQL Server, Azure SQL Database, Oracle 및 Teradata 유형의 단일 관계형 데이터베이스의 데이터만 사용할 수 있습니다.DirectQuery models can only use data from a single relational database of the following types: SQL Server, Azure SQL Database, Oracle, and Teradata. 버전 및 공급자 정보는 이 문서의 뒷부분에 있는 DirectQuery에 대해 지원되는 데이터 원본을 참조하세요.See Data sources supported for DirectQuery later in this article for version and provider information.
SQL 저장 프로시저SQL stored procedures DirectQuery 모델의 경우 데이터 가져오기 마법사를 사용할 때 SQL 문에서 저장 프로시저를 지정하여 테이블을 정의할 수 없습니다.For DirectQuery models, stored procedures cannot be specified in a SQL statement to define tables when using Data Import Wizard.
계산 테이블Calculated tables 계산 테이블은 DirectQuery 모델에서 지원되지 않지만, 계산 열은 지원됩니다.Calculated tables are not supported in DirectQuery models, but calculated columns are. 계산 테이블을 포함하는 테이블 형식 모델을 전환하려고 시도하면 붙여넣은 데이터를 모델에 포함할 수 없다고 말하는 오류가 발생합니다.If you try to convert a tabular model that contains a calculated table, an error will occur stating that the model cannot contain pasted data.
쿼리 제한Query limits 기본 행 제한은 백만개의 행이며, msmdsrv.ini 파일에서 MaxIntermediateRowSize 를 지정하여 늘릴 수 있습니다.Default row limit is one million rows, which you can increase by specifying MaxIntermediateRowSize in the msmdsrv.ini file. 자세한 내용은 DAX 속성 을 참조하세요.See DAX Properties for details.
DAX 수식DAX formulas DirectQuery 모드에서 테이블 형식 모델을 쿼리하는 경우 Analysis ServicesAnalysis Services 에서 DAX 수식과 측정값 정의를 SQL 문으로 변환합니다.When querying a tabular model in DirectQuery mode, Analysis ServicesAnalysis Services converts DAX formulas and measure definitions into SQL statements. SQL 구문으로 변환할 수 없는 요소를 포함하는 DAX 수식은 모델에서 유효성 검사 오류를 반환합니다.DAX formulas containing elements that cannot be converted into SQL syntax will return validation errors on the model.

이러한 제한 사항은 대개 특정 DAX 함수로 제한됩니다.This restriction is mostly limited to certain DAX functions. 측정값에 대해, DAX 수식은 관계형 데이터 저장소에 대한 집합 기반 연산으로 변환됩니다.For measures, DAX formulas are converted to set-based operations against the relational data store. 즉, 암시적으로 생성되는 모든 측정값이 지원됩니다.This means that all measures created implicitly are supported.

유효성 검사 오류가 발생할 경우 다른 함수로 대체하여 수식을 다시 작성하거나 데이터 원본의 파생 열을 사용하여 문제를 해결해야 합니다.When a validation error occurs, you'll need to re-write the formula, substituting a different function, or workaround it by using derived columns in the data source. 테이블 형식 모델에 호환되지 않는 함수를 포함하는 수식이 있을 경우 디자이너에서 DirectQuery 모드로 전환하면 보고됩니다.If a tabular model includes formulas containing incompatible functions will be reported when you switch to DirectQuery mode in the designer.

참고: 모델을 DirectQuery 모드로 전환하는 경우 모델의 일부 수식이 유효성 검사를 수행할 수 있지만 캐시와 관계형 데이터 저장소에 대해 실행될 때는 다른 결과를 반환합니다.Note: Some formulas in the model might validate when you switch the model to DirectQuery mode, but return different results when executed against the cache vs. the relational data store. 캐시에 대한 계산은 Excel 동작을 에뮬레이트하는 기능이 포함된 메모리 내 분석 엔진의 의미 체계를 사용하는 반면 관계형 데이터 원본에 저장된 데이터에 대한 쿼리는 반드시 SQL Server의 의미 체계를 사용하기 때문에 이러한 결과가 발생합니다.This is because calculations against the cache use the semantics of the in-memory analytics (engine, which contains features meant to emulate the behavior of Excel, whereas queries against data stored in the relational data source use the semantics of SQL Server.

SQL 저장SQL Stored

자세한 내용은 DirectQuery 모드에서의 DAX 수식 호환성을 참조하세요.To learn more, see DAX Formula Compatibility in DirectQuery Mode.
수식 일관성Formula consistency 특정 경우에 동일한 수식에서 관계형 데이터 저장소만 사용하는 DirectQuery 모델과 비교했을 때 캐시된 모델의 경우 다른 결과를 반환할 수 있습니다.In certain cases, the same formula can return different results in a cached model compared to a DirectQuery model that uses only the relational data store. 메모리 내 분석 엔진과 SQL Server 간의 의미 체계 차이점 때문에 이러한 차이가 발생합니다.These differences are a consequence of the semantic differences between the in-memory analytics engine and SQL Server.

모델이 실시간으로 배포될 때 다른 결과를 반환할 수 있는 함수를 포함하는 호환성 문제에 대한 전체 목록은 DirectQuery 모드에서의 DAX 수식 호환성(SQL Server Analysis Services)을 참조하세요.For a complete list of compatibility issues, including functions that might return different results when the model is deployed to real-time, see DAX Formula Compatibility in DirectQuery Mode (SQL Server Analysis Services).
MDX 제한 사항MDX limitations 상대적인 개체 이름이 없습니다.No relative object names. 모든 개체 이름은 정규화된 이름이어야 합니다.All object names must be fully qualified.

세션 범위 MDX 문(명명된 집합, 계산 멤버, 계산 셀, 보이는 합계, 기본 멤버 등)이 없지만 'WITH' 절과 같은 쿼리 범위 구문을 사용할 수 있습니다.No session-scope MDX statements (named sets, calculated members, calculated cells, visual totals, default members, and so forth), but you can use query-scope constructs, such as the 'WITH' clause.

MDX subselect 절에 있는 다양한 수준의 멤버가 포함된 튜플이 없습니다.No tuples with members from different levels in MDX subselect clauses.

사용자 정의 계층이 없습니다.No user-defined hierarchies.

네이티브 SQL 쿼리가 없습니다.(일반적으로 Analysis Services는 T-SQL 하위 집합을 지원하지만, DirectQuery 모델의 하위 집합은 지원하지 않습니다.)No native SQL queries (normally, Analysis Services supports a T-SQL subset, but not for DirectQuery models).

DirectQuery에 대해 지원되는 데이터 원본Data sources supported for DirectQuery

호환성 수준 1200 이상에서 테이블 형식 모델을 DirectQuery는 다음과 같은 데이터 원본 및 공급자와 호환 됩니다.DirectQuery tabular models at compatibility level 1200 and higher are compatible with the following data sources and providers:

데이터 원본Data source 버전Versions 공급자Providers
Microsoft SQL ServerMicrosoft SQL Server 2008 이상2008 and later OLE DB Provider for SQL Server, SQL Server Native Client OLE DB 공급자, .NET Framework Data Provider for SQL ClientOLE DB Provider for SQL Server, SQL Server Native Client OLE DB Provider, .NET Framework Data Provider for SQL Client
Microsoft Azure SQL DatabaseMicrosoft Azure SQL Database 모두All OLE DB Provider for SQL Server, SQL Server Native Client OLE DB 공급자, .NET Framework Data Provider for SQL ClientOLE DB Provider for SQL Server, SQL Server Native Client OLE DB Provider, .NET Framework Data Provider for SQL Client
Microsoft Azure SQL Data WarehouseMicrosoft Azure SQL Data Warehouse 모두All .NET Framework Data Provider for SQL Client.NET Framework Data Provider for SQL Client
Microsoft SQL APS(분석 플랫폼 시스템)Microsoft SQL Analytics Platform System (APS) 모두All OLE DB Provider for SQL Server, SQL Server Native Client OLE DB 공급자, .NET Framework Data Provider for SQL ClientOLE DB Provider for SQL Server, SQL Server Native Client OLE DB Provider, .NET Framework Data Provider for SQL Client
Oracle 관계형 데이터베이스Oracle relational databases Oracle 9i 이상Oracle 9i and later Oracle OLE DB 공급자Oracle OLE DB Provider
Teradata 관계형 데이터베이스Teradata relational databases Teradata V2R6 이상Teradata V2R6 and later .Net Data Provider for Teradata.Net Data Provider for Teradata

데이터 원본에 연결Connecting to a data source

SSDT에서 DirectQuery 모델을 디자인하는 경우 데이터 원본에 연결하고 모델에 포함할 테이블 및 필드를 선택하는 작업은 메모리 내 모델의 경우와 거의 동일합니다.When designing a DirectQuery model in SSDT, connecting to a data source and selecting the tables and fields to include in your model is much the same as with in-memory models.

DirectQuery를 설정했지만 아직 데이터 원본에 연결하지 않은 경우 테이블 가져오기 마법사를 사용하여 데이터 원본에 연결하고, 테이블 및 필드를 선택하고, SQL 쿼리를 지정할 수 있습니다.If you've already turned on DirectQuery but haven't yet connected to a data source, you can use the Table Import Wizard to connect to your data source, select tables and fields, specify a SQL query, and so on. 차이점은 작업을 마쳤을 때 실제로 데이터를 메모리 내 캐시로 가져오지 않는다는 것입니다.The difference will be when you finish, no data is actually imported to the in-memory cache.

DirectQuery 가져오기 성공

테이블 가져오기 마법사를 사용하여 데이터를 가져왔지만 DirectQuery 모드를 아직 설정하지 않은 경우 설정하면 메모리 내 캐시가 지워집니다.If you've already used Table Import Wizard to import data, but haven't yet turned on DirectQuery mode, when you do, the in-memory cache will be cleared.

이 섹션의 추가 항목Additional topics in this section

SSDT에서 DirectQuery 모드를 사용하도록 설정Enable DirectQuery mode in SSDT

SSMS에서 DirectQuery 모드를 사용하도록 설정Enable DirectQuery mode in SSMS

디자인 모드에서 DirectQuery 모델에 샘플 데이터 추가Add sample data to a DirectQuery model in Design Mode

DirectQuery 모델에서 파티션 정의Define partitions in DirectQuery models

DirectQuery 모드에서 모델 테스트Test a model in DirectQuery mode

DirectQuery 모드에서의 DAX 수식 호환성DAX Formula Compatibility in DirectQuery Mode