다차원 모델용 DAX

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

이 문서에서는 Power BI가 DAX(데이터 분석 식) 쿼리를 사용하여 SQL Server Analysis Services 다차원 모델에 대해 보고하는 방법을 설명합니다.

지금까지 보고 애플리케이션은 MDX(다차원 식)를 다차원 데이터베이스에 대한 쿼리 언어로 사용합니다. MDX는 Excel의 피벗 테이블 및 다차원 비즈니스 의미 체계를 대상으로 하는 기타 보고 애플리케이션과 같은 일반적인 시각적 패턴에 최적화되어 있습니다. SQL Server 2012 SP1부터 Analysis Services는 다차원 및 테이블 형식 모델에 DAX 및 MDX를 모두 사용할 수 있습니다. 그러나 DAX는 원래 테이블 형식 데이터 모델을 위해 설계되었습니다. DAX는 사용하기 쉬운 것으로 간주되지만 보고서 및 대시보드의 테이블, 차트 및 맵과 같은 간단한 데이터 시각화에도 더 중점을 줍니다. Power BI는 DAX를 사용하여 테이블 형식 모델과 다차원 모델을 모두 쿼리합니다.

DAX는 주로 테이블 형식 모델을 위해 설계되었기 때문에 다차원 모델에 대해 DAX를 사용할 때 이해해야 하는 몇 가지 흥미롭고 유용한 매핑 및 제약 조건이 있습니다.

호환성

Power BI는 DAX를 사용하여 SQL Server 2016 이상 Enterprise 또는 Standard 버전에서 Analysis Services 다차원 모델을 쿼리합니다. SQL Server 2012 및 SQL Server 2014 Enterprise 또는 Business Intelligence 버전도 지원되지만 이러한 버전은 이제 일반 지원되지 않습니다.

기능

DAX는 MDX의 하위 집합이 아닙니다. DAX는 처음에 Excel 수식 언어와 유사하도록 설계되었습니다. 테이블 형식 모델에서 DAX는 테이블 및 관계로 구성된 관계형 데이터 저장소에 사용됩니다. DAX는 사용자 지정 측정값, 계산 열 및 행 수준 보안 규칙을 만드는 데도 사용됩니다.

DAX는 계산 언어일 뿐만 아니라 쿼리를 실행하는 데도 사용할 수 있습니다. 이 문서에서는 다차원 모델에 대해 DAX 쿼리가 작동하는 방법을 설명합니다.

MDX와 DAX 간의 상호 작용

DAX 식은 테이블 형식 모델 내에서만 지원됩니다. 다차원 모델에서는 DAX 식에서 만든 측정값을 사용할 수 없습니다. 다차원 모델에 대한 DAX 쿼리는 해당 모델에 정의된 측정값 또는 기타 계산을 참조할 수 있지만 MDX 언어를 사용하여 해당 계산을 작성해야 합니다. MDX 식이 필요하고 그 반대의 경우 DAX 식을 사용할 수 없으며 PATH와 같은 일부 DAX 함수는 다차원 모델링에 전혀 적용할 수 없습니다.

DAX 구문

DAX 수식의 구문은 Excel 수식의 구문과 매우 유사하며 함수, 연산자 및 값의 조합을 사용합니다. 개별 함수의 구문에 대한 자세한 내용은 DAX 함수 참조를 참조하세요.

다차원 개체와 테이블 형식 개체의 매핑

Analysis Services에서는 다차원 모델을 테이블 형식 모델 메타데이터로 표현합니다. 다차원 모델의 개체는 Power BI에서 테이블 형식 개체로 표시됩니다. 이 매핑은 DISCOVER_CSDL_METADATA 스키마 행 집합을 사용하여 Power BI에 노출됩니다.

개체 매핑

다차원 개체 테이블 형식 개체
큐브 모델
큐브 차원 테이블
차원 특성(키, 이름)
측정값 그룹 테이블
측정값 측정값
측정값 그룹이 없는 측정값 Measures라는 테이블의 내부
그룹 큐브 차원 관계 측정 관계
관점 관점
KPI KPI
사용자/부모-자식 계층 구조 계층
표시 폴더 표시 폴더

측정값, 측정값 그룹 및 KPI

다차원 큐브의 측정값 그룹은 계산기 아이콘이 있는 테이블로 Power BI 필드 목록에 표시됩니다.

측정값 그룹 내의 측정값은 측정값으로 나타납니다. 연결된 측정값 그룹이 없는 계산된 측정값이 있는 경우 측정값이라는 특수 테이블 아래에 그룹화됩니다.

보다 복잡한 다차원 모델을 단순화하기 쉽도록 모델 작성자는 표시 폴더에 배치할 큐브의 측정값 또는 KPI 집합을 정의할 수 있습니다. Power BI는 표시 폴더와 측정값 및 KPI를 표시할 수 있습니다.

측정값 그룹의 측정값 및 KPI

Power BI 필드 목록의 측정값 및 KPI

variant로서의 측정값

다차원 모델의 측정값은 variant입니다. 즉, 이 측정값은 강력한 형식이 아니며 다른 데이터 형식일 수 있습니다. 예를 들어 아래 이미지에서 재무 보고 테이블의 Amount 측정값은 기본적으로 통화 데이터 형식이지만 문자열 데이터 형식인 통계 계정의 부분합에 대한 문자열 값 NA도 있습니다. Power BI는 특정 측정값을 변형으로 인식하고 다양한 시각화에서 올바른 값과 서식을 표시합니다.

variant로서의 측정값

변형으로 측정

암시적 측정값

테이블 형식 모델에서는 사용자가 필드에 count, sum 또는 average와 같은 암시적 측정값을 만들 수 있습니다. 다차원 모델의 경우에는 차원 특성 데이터가 다른 방식으로 저장되므로 암시적 측정값을 쿼리하는 데 시간이 오래 걸릴 수 있습니다. 따라서 다차원 모델에 대한 암시적 측정값은 Power BI에서 사용할 수 없습니다.

차원, 특성 및 계층

큐브 차원은 테이블 형식 메타데이터에서 테이블로 표시됩니다. Power BI 필드 목록에서 차원 특성은 표시 폴더 내의 열로 표시됩니다. AttributeHierarchyEnabled 속성이 False로 설정된 차원 특성입니다. 예: Customer 차원의 생년월일 특성 또는 False로 설정된 AttributeHierarchyVisible 속성은 Power BI 필드 목록에 표시되지 않습니다. 다단계 계층 또는 사용자 계층 구조; 예를 들어 고객 차원의 고객 지리 는 Power BI 필드 목록에서 계층 구조로 노출됩니다. 차원 특성의 숨겨진 UnknownMembers는 DAX 쿼리 및 Power BI에 노출됩니다.

SQL Server Data Tools(SSDT) 및 Power BI 필드 목록의 차원, 특성 및 계층 구조

SSDT 및 Power BI 필드 목록의 차원, 특성, 계층 구조

차원 특성 유형

다차원 모델에서는 차원 특성을 특정 차원 특성 유형과 연결할 수 있습니다. 아래 이미지는 City, State-Province, Country 및 Postal Code 차원 특성 에 연결된 지리 형식이 있는 지리 차원을 보여줍니다. 이러한 차원 특성은 테이블 형식 메타데이터에 표시됩니다. Power BI는 사용자가 맵 시각화를 만들 수 있도록 하는 메타데이터를 인식합니다. Power BI 필드 목록의 Geography 테이블에 있는 도시, 국가, 우편 번호 및 State-Province 열 옆에 있는 지도 아이콘으로 표시됩니다.

SSDT 및 Power BI 필드 목록의 Geography 차원

SSDT 및 Power BI 필드 목록의 차원 특성 유형

차원 계산 멤버

다차원 모델은 단일 실제 멤버를 사용하여 All 의 자식에 대해 계산된 멤버를 지원합니다. 이러한 유형의 계산 멤버를 표시할 때의 추가 제약 조건은 다음과 같습니다.

  • 차원에 둘 이상의 특성이 있는 경우 단일 실제 멤버여야 합니다.
  • 계산 멤버를 포함하는 특성이 유일한 특성이 아닐 경우 이 특성은 차원의 키 특성일 수 없습니다.
  • 계산 멤버를 포함하는 특성은 부모-자식 특성일 수 없습니다.

사용자 계층 구조의 계산 멤버는 Power BI에서 노출되지 않습니다. 그러나 사용자는 여전히 사용자 계층의 계산 멤버가 포함된 큐브에 연결할 수 있습니다.

기본 멤버

다차원 모델에서는 차원 특성의 기본 멤버를 지원합니다. 기본 멤버는 Analysis Services에서 쿼리를 위해 데이터를 집계할 때 사용됩니다. 차원 특성의 기본 멤버는 테이블 형식 메타데이터에서 해당하는 열의 기본 값 또는 필터로 표시됩니다.

Power BI는 특성이 적용될 때 Excel 피벗 테이블과 거의 동일하게 동작합니다. 사용자가 기본값을 포함하는 Power BI 시각화(테이블, 행렬 또는 차트)에 열을 추가하면 기본값이 적용되지 않고 사용 가능한 모든 값이 표시됩니다. 사용자가 필터에 열을 추가하면 기본값이 적용됩니다.

차원 보안

다차원 모델에서는 역할을 통해 차원 및 셀 수준 보안을 지원합니다. Power BI를 사용하여 큐브에 연결하는 사용자는 인증되고 사용자가 속한 역할로 정의된 적절한 권한에 대해 평가됩니다. 차원 보안이 적용되면 Power BI에서 사용자가 해당 차원 멤버를 볼 수 없습니다. 그러나 사용자에게 특정 셀이 제한된 위치에 정의된 셀 보안 권한이 있는 경우 해당 사용자는 Power BI를 사용하여 큐브에 연결할 수 없습니다. 집계 데이터의 일부가 보안 데이터에서 계산된 경우 사용자가 집계 데이터를 볼 수 있는 경우도 있습니다.

집계할 수 없는 특성/계층

다차원 모델에서 차원의 특성은 IsAggregatable 속성을 False로 설정할 수 있습니다. 즉, 모델 작성자는 보고 애플리케이션이 데이터를 쿼리할 때 계층 구조(특성 또는 다중 수준)에서 데이터를 집계하지 않도록 지정했습니다. Power BI에서 이 차원 특성은 부분합을 사용할 수 없는 열로 노출됩니다. 다음 이미지에는 집계할 수 없는 계층 구조인 계정의 예가 표시됩니다. Accounts 부모-자식 계층의 최상위 수준은 집계할 수 없는 반면 다른 수준은 집계할 수 있습니다. 계정 계층 구조의 행렬 시각화(처음 두 수준)에는 계정 수준 02 에 대한 부분합이 표시되지만 최상위 수준인 계정 수준 01에는 표시되지 않습니다.

Power BI에서 집계할 수 없는 계층 구조

변형으로 측정

이미지

Power BI는 이미지를 렌더링하는 기능을 제공합니다. 다차원 모델에서 Power BI에 표시할 이미지를 제공할 수 있는 방법 중 하나는 이미지의 URL(Uniform Resource Locator)이 포함된 열을 노출하는 것입니다. Analysis Services는 차원 특성을 ImageURL 형식으로 태그 지정을 지원합니다. 그런 다음 이 데이터 형식은 테이블 형식 메타데이터의 Power BI에 제공됩니다. 그런 다음 Power BI는 시각화 내의 URL에 지정된 이미지를 다운로드하여 표시할 수 있습니다.

SSDT의 ImageURL 차원 특성 유형

SSDT의 ImageURL 차원

부모-자식 계층

다차원 모델은 테이블 형식 메타데이터에서 계층 구조로 노출되는 부모-자식 계층을 지원합니다. 부모-자식 계층의 각 수준은 숨겨진 열로 제공됩니다. 부모-자식 차원의 키 특성은 테이블 형식 메타데이터에 표시되지 않습니다.

SSDT 및 Power BI 필드 목록의 부모-자식 계층 구조

SSDT 및 Power BI 필드 목록의 부모-자식 계층 구조

큐브 뷰 및 번역

큐브 뷰는 일부 차원 또는 측정값 그룹만 클라이언트 도구에 표시되는 큐브의 뷰입니다. 큐브 뷰 이름을 Cube 연결 문자열 속성의 값으로 지정할 수 있습니다. 예를 들어 다음 연결 문자열 '직접 판매'는 다차원 모델의 관점입니다.

Data Source=localhost;Initial Catalog=AdventureWorksDW-MD;Cube='Direct Sales'

큐브에는 모델 내의 다양한 언어에 대해 지정된 메타데이터 및 데이터 번역이 있을 수 있습니다. 변환(데이터 및 메타데이터)을 보려면 애플리케이션에서 선택적 로캘 식별자 속성을 연결 문자열 추가할 수 있습니다. 예를 들면 다음과 같습니다.

Data Source=localhost;Initial Catalog=AdventureWorksDW-MD;Cube='Adventure Works'; Locale Identifier=3084

Power BI Desktop 다차원 모델에 연결되면 서버로 식별된 현재 사용자 로캘을 자동으로 전달합니다. 그러나 Power BI 서비스 게시된 보고서에는 이 문제가 발생하지 않습니다.

지원되지 않는 기능

셀 수준 보안 - Power BI 보고서에서 지원되지 않습니다.

작업 - Power BI 보고서 또는 다차원 모델에 대한 DAX 쿼리에서는 지원되지 않습니다.

명명된 집합 - 다차원 모델에서는 Power BI 또는 다차원 모델에 대한 DAX 쿼리에서 지원되지 않습니다.

참고

지원되지 않는 작업 및 명명된 집합은 Power BI를 사용할 때 사용자가 다차원 모델에 연결하고 탐색하는 것을 방지하지 않습니다.

CSDLBI 주석

다차원 큐브 메타데이터는 CSDLBI(비즈니스 인텔리전스 포함 개념 스키마 정의 언어) 주석을 사용하여 EDM(엔터티 데이터 모델) 기반 개념 모델로 표시됩니다.

Analysis Services 인스턴스로 DISCOVER_CSDL_METADATA 요청이 보내질 때 다차원 메타데이터는 CSDLBI 문서, 즉 CSDL 출력에서 테이블 형식 모델 네임스페이스로 표현됩니다.

예: DISCOVER_CSDL_METADATA 요청

<Envelopexmlns="http://schemas.xmlsoap.org/soap/envelope/">
   <Body>
      <Discoverxmlns="urn:schemas-microsoft-com:xml-analysis">
         <RequestType>DISCOVER_CSDL_METADATA</RequestType>
         <Restrictions>
            <RestrictionList>
              <CATALOG_NAME>"catalogname"<CATALOG_NAME>
            </RestrictionList>
         </Restrictions>
         <Properties>
            <PropertyList>
            </PropertyList>
         </Properties>
      </Discover>
   </Body>
</Envelope>

DISCOVER_CSDL_METADATA 요청에는 다음과 같은 제한이 있습니다.

이름 필수 Description
CATALOG_NAME Yes 카탈로그\데이터베이스 이름입니다.
PERSPECTIVE_NAME 큐브에 둘 이상의 큐브 뷰가 포함된 경우 필수, 큐브가 하나뿐이고 기본 큐브 뷰가 있는 경우 선택적 다차원 데이터베이스의 큐브 이름 또는 큐브 뷰 이름입니다.
VERSION Yes 클라이언트가 요청한 CSDL 버전입니다. 다차원 기능 및 구문은 버전 2.0에서 지원됩니다.

반환되는 CSDL 출력 문서에서는 모델을 네임스페이스, 포함 엔터티, 연결 및 속성으로 나타냅니다.

CSDLBI 주석에 대한 자세한 내용은 CSDL에 대한 BI 주석에 대한 기술 참조[MS-CSDLBI]: 비즈니스 인텔리전스 주석을 사용하는 개념 스키마 정의 파일 형식을 참조하세요.

SuperDAXMD

각 SQL Server Analysis Services 릴리스에서 향상된 기능은 신규 및 기존 DAX 함수 및 기능을 지원합니다. SQL Server 2019 CU5에서는 비공식적으로 SuperDAX라고 하는 테이블 형식 모델에 처음 도입된 DAX 함수 클래스가 다차원 모델에 대해 사용하도록 설정되었습니다.

일부 기존 DAX 쿼리 패턴을 다시 디자인해야 할 수도 있지만 SuperDAX 함수는 쿼리 성능을 크게 향상시켰습니다. 다차원 모델에 SuperDAX를 사용하는 최신 DAX 쿼리 패턴은 Power BI를 사용하는 조직에서 다차원 데이터 원본 서버를 CU5를 사용하여 SQL Server 2019로 업그레이드하는 강력한 인센티브를 제공합니다. 자세한 내용은 다차원 모델의 SuperDAX를 참조하세요.

추가 정보

DAX 참조