영어로 읽기

다음을 통해 공유


DAX 쿼리

Power BI and Excel과 같은 보고 클라이언트는 시각적 개체가 보고서에 표시되고 테이블에 추가된 필드를 orfilter 적용할 때 이러한 DAX 쿼리가 조정되도록 andDAX 쿼리를 실행합니다. Power BI Desktop의 성능 분석기DAX 쿼리 뷰에서 실행할 andeven 이러한 DAX 쿼리를 표시할 수 있습니다.

BI Desktop에서 쿼리 뷰 사용하여 BI 서비스에서 쿼리 쓰기를 고유한 쿼리를 실행할 만들 수 있습니다. Microsoft Fabric사용하면 Copilot를 사용하여 데스크톱 or 웹의 DAX 쿼리 보기에서DAX 쿼리를 작성할 수 있습니다. BI 도구 외에도 쿼리는 의미 체계 링크 사용하여 Fabric Notebook에서 실행될 수 있으며, 쿼리 실행 REST API 자동화사용할 수 있습니다. SSMS(SQL Server Management Studio), Power BI Report Builder, andDAX Studio같은 오픈 소스 도구와 같은 다른 도구도 DAX 쿼리를 실행할 and 만들 수 있습니다.

DAX 쿼리는 도구 내에서 right 테이블 형태로 결과를 반환하므로 당신이 신속하게 and 테스트할 수 있고 DAX 수식의 성능을 측정값에서 평가하며, 의미 모델에서 데이터를 간단히 or 확인할 수 있습니다. 정보 and 정보입니다. VIEW DAX 함수는 테이블, 열, 측정값 목록과 같은 의미 체계 모델에 대한 정보를 훨씬 더 and 수 있습니다.

쿼리에 대해 알아보기 전에 DAX 기본 사항을 확실하게 이해하는 것이 중요합니다. 이미 그렇게 하지 않으셨다면, IfDAX 개요를 꼭 확인하세요.

키워드

DAX 쿼리에는 EVALUATE하나의 필수 키워드로 구성된 간단한 구문이 있습니다. EVALUATE DAX 함수 or 테이블 이름과 같은 테이블 식이 뒤에 잇습니다. 그러면 실행 시 결과 테이블이 출력됩니다. 결과 테이블을 출력하는 테이블 식은 다음과 같습니다.

  1. SUMMARIZE, SUMMARIZECOLUMNS, SELECTCOLUMNS, FILTER, UNION, TOPN, ADDCOLUMNS, DATATABLE, and 같은 테이블을 출력하는 일반적인 DAX 함수는 EVALUATE 사용하여 결과 테이블을 출력합니다.
  2. 모델에서 이름으로 참조된 테이블은 EVALUATE를 사용하여 해당 테이블의 데이터를 보여 주는 결과 테이블로 출력됩니다. 예를 들어 EVALUATE '테이블 이름'DAX 쿼리로 실행할 수 있습니다.
  3. 모델의 모든 DAX 수식에서 스칼라 value를 반환하는 측정값은 or가 EVALUATE를 사용하여 중괄호로 묶이면 value 결과 테이블로 표시됩니다. 예를 들어 EVALUATE {[Total Sales]}orEVALUATE {COUNTROWS('Sales')}DAX 쿼리로 실행할 수 있습니다. 이를 테이블 생성자라고합니다.

DAX 쿼리와 관련된 몇 가지 선택적 키워드는 ORDER BY, START AT, DEFINE, MEASURE, VAR, TABLE, and COLUMN입니다.

EVALUATE(필수)

가장 기본적인 수준에서 DAX 쿼리는 테이블 식을 포함하는 EVALUATE 문입니다. 하나 이상의 EVALUATE 문이 필요하지만, 쿼리에는 어떤 수의 EVALUATEstatements문을 포함할 수 있습니다.

EVALUATE 구문

EVALUATE <table>

EVALUATE 매개 변수

기간 정의
table 테이블 식입니다.

EVALUATE 예제

EVALUATE
	'Sales Order'

Sales Order 테이블에서 all개의 행과 and개의 열을 결과 테이블로 반환합니다. TOPN or FILTER는 ORDER BY로 정렬된 and와 함께 사용하여 제한할 수 있습니다.

Power BI Desktop의 DAX 쿼리 보기에서 DAX 쿼리에 EVALUATE 사용하는 방법을 보여 주는 스크린샷

ORDER BY(선택 사항)

선택적 ORDER BY 키워드는 쿼리 결과를 정렬하는 데 사용되는 쿼리 or 식에 하나 or 더 많은 열을 정의합니다. 결과의 각 행에 대해 평가할 수 있는 식은 유효합니다. 쿼리 자체의 모든 열도 유효합니다.

의미 체계 모델의 열별 정렬 속성은 DAX 쿼리 결과에 not 적용됩니다. Month Name의 경우처럼 모델의 다른 열을 기준으로 열을 정렬해야 IfORDER BY사용할 DAX 쿼리에도 열 정렬을 포함해야 합니다.

ORDER BY 구문

EVALUATE <table>
[ORDER BY {<expression> [{ASC | DESC}]}[, …]]

ORDER BY 매개 변수

기간 정의
expression 단일 스칼라 valueor 열을 반환하는 모든 DAX 식, DAX 쿼리에 포함되어 있습니다.
ASC (기본값) 오름차순 정렬 순서입니다.
DESC 내림차순 정렬 순서입니다.

ORDER BY 예제

EVALUATE
	SUMMARIZECOLUMNS(
		// Group by columns
		'Date'[Month Name],
		'Date'[Month of Year],
		'Product'[Category],

		// Optional filters
		FILTER(
			VALUES('Product'[Category]),
			[Category] = "Clothing"
		),

		// Measures or explicit DAX formulas to aggregate and analyze the data by row
		"Orders", [Orders],
		"Avg Profit per Order", DIVIDE(
			[Total Sales Profit],
			[Orders]
		)
	)

	// DAX queries do not use sort order defined in Power BI, 
	// sort by columns must be included in the DAX query to be used in order by
	ORDER BY 'Date'[Month of Year] ASC

month에 따라 주문당 수익을 내며 month에 따라 오름차순으로 정렬된 andaverage 의류 주문을 결과 테이블로 반환합니다.

Power BI Desktop의 DAX 쿼리 보기에서 DAX 쿼리에 ORDER BY 사용하는 방법을 보여 주는 스크린샷

TOPN는 ORDER BY에서 지정된 정렬 순서에 따라 반환할 행의 수를 선택할 수 있는 not입니다. 대신 TOPN 상위 100개 행이 반환되기 전에 선택적으로 정렬을 지정하는 고유한 구문을 가지고 있습니다. ORDER BY는 TOPN이 반환한 결과 테이블만을 정렬합니다.

EVALUATE
	TOPN(
		100,
		'Sales Order',
		// The way the data is sorted before the top 100 rows are selected
		'Sales Order'[SalesOrderLineKey], ASC
	)
	// The way the data is sorted for the results
	ORDER BY
		'Sales Order'[Sales Order] ASC,
		'Sales Order'[Sales Order Line] ASC

SalesOrderLienKey 오름차순으로 정렬된 상위 100개의 판매 주문을 반환한 다음, 판매 주문별로 first 결과를 정렬한 다음 판매 주문 라인별로 정렬합니다.

Power BI Desktop의 DAX 쿼리 보기에서 DAX 쿼리를 위해 TOPNandORDER BY을 사용하는 방법을 보여 주는 스크린샷

START AT(선택 사항)

선택적 START AT 키워드는 ORDER BY 절 내에서 사용됩니다. 쿼리 결과가 시작되는 value을 정의합니다.

START AT 구문

EVALUATE <table>
[ORDER BY {<expression> [{ASC | DESC}]}[, …]
[START AT {<value>|<parameter>} [, …]]]

START AT 매개 변수

기간 정의
value 상수 value. 표현식일 수 없습니다.
parameter XMLA 문장의 매개 변수 이름에 @ 문자가 접두사로 붙어 있습니다.

START AT 비고

START AT 인수들은 ORDER BY 절의 열과 각각 대응합니다. START AT 절에는 ORDER BY 절보다 인수가 not개 더 있을 수 있습니다. START AT의 first 인수는 ORDER BY 열의 1번 열에서 시작하는 value를 정의합니다. START AT의 second 인수는 열 1의 firstvalue 조건을 만족하는 행에서, ORDER BY 열의 열 2에 있는 시작 value를 정의합니다.

START AT 예제

EVALUATE
	'Sales Order'
	ORDER BY 'Sales Order'[Sales Order] ASC
	// Start at this order, orders before this order will not be displayed
	START AT "SO43661"

Sales Order 테이블에서 Sales Order 번호가 SO43661부터 시작하여 오름차순으로 all 열을 반환합니다. 이 판매 주문 이전의 행은 not이 결과 테이블에 포함됩니다.

Power BI Desktop의 DAX 쿼리 보기에서 ORDER BYandSTART AT를 DAX 쿼리에 사용하는 방법을 보여주는 스크린샷

DEFINE(선택 사항)

선택적 DEFINE 키워드는 쿼리의 duration에만 존재하는 or 더 많은 계산된 엔터티 정의를 도입합니다. EVALUATE와 달리, DAX 쿼리에는 하나의 or 이상 정의를 가진 DEFINE 블록만 있을 수 있습니다. DEFINE는 쿼리 내에서 allEVALUATEstatements에 대해 유효한 andfirstEVALUATE 문 앞에 있어야 합니다. 정의는 변수, 측정값, 테이블1, and 열1수 있습니다. 정의는 현재 정의 뒤의 or 앞에 나타나는 다른 정의를 참조할 수 있습니다. DEFINE 키워드가 쿼리에 포함되는 if 하나 이상의 정의가 필요합니다.

DEFINE MEASURE 의미 체계 모델에서 기존 측정값을 편집하기 or 새 측정값을 작성하는 일반적인 시나리오입니다. 모델에 measure 이미 있는 경우 DAX 쿼리는 쿼리에 정의된 measureDAX 수식을 사용합니다. 이는 모델을 업데이트하기 전에 DAX 쿼리를 사용하여 측정값을 테스트하는 데 유용합니다.

DEFINE MEASURE 특정 DAX 쿼리에 대한 DAX 수식을 사용하여 추가 분석을 구축하는 데도 유용합니다. 이 경우, 모델에 not 필요한 notmeasureor 권한이 있을 수 있습니다.

DEFINE 구문

[DEFINE 
    (
     (MEASURE <table name>[<measure name>] = <scalar expression>) | 
     (VAR <var name> = <table or scalar expression>) |
     (TABLE <table name> = <virtual table definition>) | 
     (COLUMN <table name>[<column name>] = <scalar expression>) | 
    ) + 
]

(EVALUATE <table expression>) +

DEFINE 매개 변수

기간 정의
Entity MEASURE, VAR, TABLE1, or COLUMN1.
name measure, var, 테이블, or 열 정의의 이름입니다. 표현일 수 없습니다. 이름은 꼭 고유해야 합니다. not. 이름은 쿼리의 duration 대해서만 존재합니다.
expression 테이블 or과 스칼라 value를 반환하는 모든 DAX 표현식입니다. 표현식은 정의된 엔터티를 사용할 수 있습니다. 스칼라 식을 테이블 식으로 convert 중괄호가 {}테이블 생성자 안에 식을 래핑해야 하는 IfROW() 함수를 사용하여 단일 행 테이블을 반환할 or 있습니다.

[1]주의: 쿼리 범위 테이블의 and 열 정의는 내부 사용을 위한 것임을 명심하세요. 구문 error없이 쿼리에서 TABLE and COLUMN 식을 define 사용할 수 있지만, 이는 런타임 오류를 발생시킬 수 있으므로 andnot 권장되지 않습니다.

DEFINE 설명

  • DAX 쿼리에는 여러 EVALUATEstatements있을 수 있지만 DEFINE 문은 하나만 있을 수 있습니다. DEFINE 문에서의 정의는 쿼리 내의 모든 EVALUATEstatements에 적용될 수 있습니다.

  • DEFINE 문에는 하나 이상의 정의가 필요합니다.

  • Measure 정의는 동일한 이름의 모델 측정값을 재정의하지만 쿼리 내에서만 사용됩니다. 그들은 not 모델 measure에 영향을 미칠 것입니다.

  • VAR 이름에는 고유한 제한이 있습니다. 자세한 내용은 VAR - 매개 변수참조하세요.

DEFINE 예제

DEFINE
	VAR _firstyear = MIN('Date'[Fiscal Year])
	VAR _lastyear = MAX('Date'[Fiscal Year])
	TABLE 'Unbought products' = FILTER('Product', [Orders] + 0 = 0)
	COLUMN 'Unbought products'[Year Range] = _firstyear & " - " & _lastyear
	MEASURE 'Unbought products'[Unbought products] = COUNTROWS('Unbought products')
	
EVALUATE
	'Unbought products'
	
EVALUATE
	{[Unbought products]}

DAX 쿼리에 정의된 테이블을 반환하고, 정의된 변수를 참조하는 추가 열을 통해 구매되지 않은 제품을 표시합니다. 또한 measure은/는 구매하지 않은 제품의 행을 count 평가하도록 and 정의됩니다.

Power BI Desktop의 DAX 쿼리 보기에서 DAX 쿼리에 DEFINE 사용하는 방법을 보여 주는 스크린샷

DEFINE
	MEASURE 'Pick a sales measure'[Orders] = DISTINCTCOUNT('Sales Order'[Sales Order])
	MEASURE 'Pick a sales measure'[Customers] = CALCULATE(
			COUNTROWS(Customer),
			FILTER(
				'Sales',
				[Orders] > 0
			)
		)
	MEASURE 'Pick a sales measure'[Orders per Customer] = DIVIDE(
			[Orders],
			[Customers],
			0
		)

EVALUATE
	SUMMARIZECOLUMNS(
		'Date'[Fiscal Year],
		"Orders", [Orders],
		"Customers", [Customers],
		"Orders per Customer", [Orders per Customer]
	)

재무 year에 따라 결과를 보여주기 위해 정의된 세 가지 측정치를 평가하는 테이블을 반환합니다. 모델에는 All 측정값도 존재하며, DAX 쿼리에서 고객당 주문이 and로 수정됩니다.

Power BI Desktop의 DAX 쿼리 보기에서 DAX 쿼리를 위해 DEFINEMEASURE를 사용하는 방법을 보여 주는 스크린샷

DAX 쿼리의 매개 변수

잘 정의된 DAX 쿼리 문은 and 매개 변수화한 후, 매개 변수 values의 변경을 통해 and 사용할 수 있습니다.

xmlA(Execute 메서드) 메서드에는 매개 변수를 정의할 수 andvalue할당할 수 있는 XMLA(Parameters 요소) 컬렉션 요소가 있습니다. 컬렉션 내에서 각 XMLA(Parameter 요소) 요소는 and 매개 변수에 value 관련된 이름을 정의합니다.

매개 변수 이름 앞에 @ 문자를 추가하여 XMLA 매개 변수를 참조합니다. 구문에서 value가 허용되는 모든 위치에 value을 매개변수 호출로 대체할 수 있습니다. All XMLA 매개 변수는 텍스트로 입력됩니다.

중요

매개 변수 섹션에 정의된 매개 변수는 XMLA에서 error 응답을 generate<STATEMENT> 요소에 사용되는 andnot. XMLA에서 <Parameters> 요소에 정의된 andnot 매개 변수는 generate에서 error 응답에 사용됩니다.

DAX statements SUMMARIZECOLUMNS