다음을 통해 공유


테이블 형식 모델의 DirectQuery 모드

적용 대상: SQL Server Analysis Services Azure Analysis Services 패브릭/Power BI Premium

이 문서에서는 1200 이상 호환성 수준에서 Analysis Services 테이블 형식 모델에 대한 DirectQuery 모드 에 대해 설명합니다. DirectQuery 모드는 Visual Studio에서 디자인하는 모델 또는 이미 배포된 테이블 형식 모델의 경우 SSMS(SQL Server Management Studio)를 사용하여 DirectQuery 모드로 변경할 수 있습니다. DirectQuery 모드를 선택하기 전에 이점과 제한 사항을 모두 이해하는 것이 중요합니다.

이점

기본적으로 테이블 형식 모델은 메모리 내 캐시를 사용하여 데이터를 저장하고 쿼리합니다. 테이블 형식 모델이 메모리에 있는 데이터를 쿼리할 때 복잡한 쿼리도 매우 빠를 수 있습니다. 그러나 캐시된 데이터를 사용하는 데는 몇 가지 제한 사항이 있습니다. 예를 들어 매우 큰 데이터 집합은 사용 가능한 메모리를 초과할 수 있으며 메모리 내 모델 데이터의 처리(새로 고침)는 자주 필요한 경우 과도한 양의 사용 가능한 리소스가 필요할 수 있습니다.

DirectQuery는 쿼리 실행을 보다 효율적으로 만드는 RDBMS 기능을 활용하는 동시에 이러한 제한 사항을 극복합니다. DirectQuery를 사용하면:

  • 데이터는 최신 상태입니다. 데이터는 항상 데이터 원본에서 쿼리되므로 클라이언트 보고 애플리케이션은 항상 최신 데이터를 가져옵니다.

  • 별도의 데이터 복사본(메모리 내 캐시)을 유지 관리해야 하는 추가 관리 오버헤드는 없습니다. 모델 데이터의 처리(새로 고침)가 필요하지 않습니다. 기본 원본 데이터를 변경하면 데이터 모델에 대한 쿼리에 바로 반영될 수 있습니다.

  • 데이터 세트는 Analysis Services 서버 리소스의 메모리 용량보다 클 수 있습니다.

  • DirectQuery는 메모리 최적화 열 인덱스에서 제공하는 것과 같은 공급자 쪽 쿼리 가속을 활용할 수 있습니다.

  • 데이터베이스의 행 수준 보안 기능을 사용하여 백 엔드 원본 데이터베이스에서 보안을 적용할 수 있습니다(또는 DAX를 사용하여 모델에 정의된 행 수준 보안 규칙을 사용할 수 있음).

  • 모델에 포함되어 있는 복합 수식에 여러 쿼리가 필요할 수 있는 경우 Analysis Services에서는 최적화를 수행하여 벡 엔드 데이터베이스에 대해 실행된 쿼리의 쿼리 계획 효율성을 극대화할 수 있습니다.

제한 사항

DirectQuery 모드의 테이블 형식 모델에는 몇 가지 제한 사항이 있습니다. 모드를 전환하기 전에 기능이 감소되는 것보다 백 엔드 서버에서 쿼리를 실행하는 이점이 더 큰지를 확인해야 합니다. Visual Studio에서 기존 모델의 모드를 변경하는 경우 테이블 형식 모델 디자이너는 DirectQuery 모드와 호환되지 않는 모델의 모든 기능을 알립니다. 다음 제한 사항에 유의합니다.

기능 제한 사항
데이터 원본 DirectQuery 모델은 Azure SQL Database, Azure Synapse Analytics, SQL Server, Oracle 및 Teradata 형식의 단일 관계형 데이터베이스에서만 데이터를 사용할 수 있습니다.
SQL 저장 프로시저 DirectQuery 모델의 경우 SQL 문에 저장 프로시저를 지정하여 테이블을 정의할 수 없습니다.
계산된 테이블 계산 테이블은 DirectQuery 모델에서 지원되지 않지만, 계산 열은 지원됩니다. 계산 테이블을 포함하는 테이블 형식 모델을 전환하려고 시도하면 붙여넣은 데이터를 모델에 포함할 수 없다고 말하는 오류가 발생합니다.
쿼리 제한 기본 행 제한은 백만 개의 행입니다. MaxIntermediateRowSize를 지정하여 이 제한을 늘릴 수 있습니다. 자세한 내용은 DAX 속성을 참조하세요.
DAX 수식 DirectQuery 모드에서 테이블 형식 모델을 쿼리할 때 Analysis Services는 DAX 수식 및 측정값 정의를 SQL 문으로 변환합니다. SQL 구문으로 변환할 수 없는 요소를 포함하는 DAX 수식은 모델에서 유효성 검사 오류를 반환합니다.

이 제한은 주로 특정 DAX 테이블 함수로 제한됩니다. 측정값에 대해, DAX 수식은 관계형 데이터 저장소에 대한 집합 기반 연산으로 변환됩니다. 즉, 암시적으로 생성되는 모든 측정값이 지원됩니다.

유효성 검사 오류가 발생할 경우 다른 함수로 대체하여 수식을 다시 작성하거나 데이터 원본의 파생 열을 사용하여 문제를 해결해야 합니다. 테이블 형식 모델에 호환되지 않는 함수가 포함된 수식이 포함된 경우 디자이너에서 DirectQuery 모드로 전환하면 보고됩니다.

참고: 모델의 일부 수식은 모델을 DirectQuery 모드로 전환할 때 유효성을 검사할 수 있지만 캐시와 관계형 데이터 저장소에 대해 실행될 때 다른 결과를 반환합니다. 캐시에 대한 계산은 Excel의 동작을 에뮬레이트하기 위한 기능이 포함된 메모리 내 분석 엔진의 의미 체계를 사용하는 반면 관계형 데이터 원본에 저장된 데이터에 대한 쿼리는 SQL의 의미 체계를 사용하기 때문입니다.

수식 일관성 특정 경우에 동일한 수식에서 관계형 데이터 저장소만 사용하는 DirectQuery 모델과 비교했을 때 캐시된 모델의 경우 다른 결과를 반환할 수 있습니다. 이러한 차이는 메모리 내 분석 엔진과 데이터 원본 간의 의미 체계 차이의 결과입니다.

MDX 제한 사항 상대적인 개체 이름이 없습니다. 모든 개체 이름은 정규화된 이름이어야 합니다.

세션 범위 MDX 문(명명된 집합, 계산 멤버, 계산 셀, 보이는 합계, 기본 멤버 등)이 없지만 'WITH' 절과 같은 쿼리 범위 구문을 사용할 수 있습니다.

MDX subselect 절에 있는 다양한 수준의 멤버가 포함된 튜플이 없습니다.

사용자 정의 계층이 없습니다.

네이티브 SQL 쿼리가 없습니다.(일반적으로 Analysis Services는 T-SQL 하위 집합을 지원하지만, DirectQuery 모델의 하위 집합은 지원하지 않습니다.)

데이터 소스에 연결

Visual Studio에서 DirectQuery 모델을 디자인할 때 데이터 원본에 연결하고 모델에 포함할 테이블과 필드를 선택하는 것은 메모리 내 모델과 거의 동일합니다.

DirectQuery를 이미 설정했지만 아직 데이터 원본에 연결하지 않은 경우 데이터 가져오기(또는 레거시 공급자 데이터 원본에 대한 데이터 가져오기 마법사)를 사용하여 데이터 원본에 연결하고 테이블 및 필드를 선택할 수 있습니다. 차이점은 작업을 마쳤을 때 실제로 데이터를 메모리 내 캐시로 가져오지 않는다는 것입니다.

DirectQuery 가져오기 성공

데이터 가져오기를 사용하여 데이터를 가져왔지만 아직 DirectQuery 모드를 설정하지 않은 경우 메모리 내 캐시가 지워집니다.

DirectQuery 모델 프로젝트에 샘플 데이터 추가

기본적으로 SSDT(Visual Studio)에서 테이블 형식 모델 디자이너를 사용하여 DirectQuery 테이블 형식 모델 프로젝트를 디자인하는 경우 모델의 작업 영역 데이터베이스에는 데이터가 포함되지 않습니다. 각 테이블에 대해 하나의 기본 파티션이 있으며 이 파티션은 모든 쿼리를 데이터 원본으로 전달합니다. DirectQuery가 처음 도입된 이후 테이블 형식 모델 디자이너는 파티션 관리자에서 샘플로 설정 기능을 포함합니다. 이 기능을 사용하면 소량의 샘플 데이터를 작업 영역 데이터베이스로 가져오는 데 사용할 수 있는 테이블에 복사 파티션을 추가할 수 있습니다. 이 기능은 데이터 원본에 영향을 주지 않고 모델링 결정의 유효성을 검사하는 데 도움이 됩니다.

중요

현재 테이블 형식 모델 디자이너의샘플로 설정 기능은 지원되지 않습니다. Table <TableName>을 무시해도 샘플 파티션이 없습니다. SSDT에서 데이터를 사용하려면 샘플 파티션 경고를 추가하세요.

DirectQuery 모델 배포

DirectQuery 모델은 가져오기 모델과 동일하게 배포됩니다. 그러나 가져오기 모델과 달리 DirectQuery 모델에 계산 열 또는 계산 그룹과 같은 계산 항목이 포함된 경우 배포된 후에는 모든 테이블에서 프로세스 다시 계산 을 수행해야 합니다. 자세한 내용은 데이터베이스, 테이블 또는 파티션 처리를 참조하세요.

추가 정보

Visual Studio에서 DirectQuery 모드를 사용하도록 설정
SSMS에서 DirectQuery 모드를 사용하도록 설정
DirectQuery 모델에서 파티션 정의DirectQuery 모드에서 모델 테스트
Azure Analysis Services에서 지원되는 데이터 원본
SQL Server Analysis Services 테이블 형식 1400 이상 모델에서 지원되는 데이터 원본입니다.