다음을 통해 공유


DAX queries

Power BI 및 Excel과 같은 보고 클라이언트는 시각적 개체가 보고서에 표시되거나 테이블에 추가된 필드를 표시할 때마다 DAX 쿼리를 실행하며 이러한 DAX 쿼리는 필터가 적용될 때 조정됩니다. Power BI Desktop의 성능 분석기 이러한 DAX 쿼리를 표시하고 Power BI Desktop의 DAX 쿼리 보기에서도 실행할 수 있습니다.

By using DAX query view in Power BI Desktop or Write DAX queries in Power BI service, you can create and run your own DAX queries. With Microsoft Fabric, you can further increase your productivity with Copilot to write DAX queries in DAX query view of Desktop or web. In addition to Power BI tools, DAX queries can be run in Fabric notebooks using semantic link to read data from semantic models with python, and with the Execute Queries REST API, also available in Power Automate. SQL Server Management Studio(SSMS), Power BI Report Builder, DAX Studio와 같은 오픈 소스 도구 및 다른 도구도 DAX 쿼리를 만들고 실행할 수 있습니다.

DAX 쿼리는 도구 내에서 바로 결과를 테이블로 반환하므로 측정값에서 DAX 수식의 성능을 빠르게 만들고 테스트하거나 의미 체계 모델에서 데이터를 볼 수 있습니다. 정보 및 INFO.VIEW DAX 함수는 테이블 목록, 열, 측정값 등과 같은 의미 체계 모델에 대한 정보 및 그 외 많은 정보를 가져올 수도 있습니다.

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

키워드

DAX 쿼리에는 EVALUATE하나의 필수 키워드로 구성된 간단한 구문이 있습니다. EVALUATE 다음에는 DAX 함수 또는 테이블 이름과 같은 테이블 식이 실행될 때 결과 테이블을 출력합니다. 결과 테이블을 출력하는 테이블 식은 다음과 같습니다.

  1. DAX, SUMMARIZE, SUMMARIZECOLUMNS, SELECTCOLUMNS, FILTER, UNION, TOPN, ADDCOLUMNS등 테이블을 출력하는 일반적인 DATATABLE 함수는 EVALUATE 사용하여 결과 테이블을 출력합니다.
  2. Tables in the model when referenced by name work with EVALUATE to output a result table showing the data in the table. 예를 들어 EVALUATE '테이블 이름'DAX 쿼리로 실행할 수 있습니다.
  3. Measures in the model or any DAX formula, which return a scalar value, work with EVALUATE to show the value as a result table when enclosed in curly braces. 예를 들어 EVALUATE {[Total Sales]} 또는 EVALUATE {COUNTROWS('Sales')}DAX 쿼리로 실행할 수 있습니다. These are called table constructors.

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

EVALUATE(필수)

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

EVALUATE 구문

EVALUATE <table>

EVALUATE 매개 변수

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

EVALUATE 예제

EVALUATE
	'Sales Order'

Sales Order 테이블의 모든 행과 열을 결과 테이블로 반환합니다. TOPN 또는 FILTER사용으로 제한하고 ORDER BY으로 정렬할 수 있습니다.

스크린샷은 Power BI Desktop의 EVALUATE 쿼리 뷰에서 DAX 쿼리에 DAX를 사용하는 방법을 보여줍니다 .

ORDER BY(선택 사항)

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

의미 체계 모델의 열별 정렬 속성은 DAX 쿼리 결과에 적용되지 않습니다. 모델에서 다른 열을 기준으로 정렬해야 하는 경우, 예를 들어 월 이름과 같은 경우, 해당 정렬용 열을 DAX에서 사용할 ORDER BY 쿼리에도 포함해야 합니다.

ORDER BY 구문

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

ORDER BY 매개 변수

기간 정의
expression 단일 스칼라 값 또는 DAX 쿼리에 포함된 열을 반환하는 모든 DAX 식입니다.
ASC (기본값) 오름차순 정렬 순서입니다.
DESC Descending sort order.

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

월별로, 월 오름차순으로 의류 주문과 주문당 평균 수익을 결과 테이블로 반환합니다.

스크린샷은 Power BI Desktop의 ORDER BY 쿼리 뷰에서 DAX 쿼리에 DAX를 사용하는 방법을 보여줍니다 .

TOPN ORDER BY지정된 정렬 순서에 따라 반환할 행 수를 선택하지 않습니다. 대신 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개의 판매 주문을 반환한 다음, 먼저 판매 주문별로 결과를 정렬한 다음 판매 주문 라인별로 정렬합니다.

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

START AT(선택 사항)

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

START AT 구문

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

START AT 매개 변수

기간 정의
value 상수 값입니다. Cannot be an expression.
parameter XMLA 문장의 매개 변수 이름에 @ 문자가 접두사로 붙어 있습니다.

START AT Remarks

START AT arguments have a one-to-one correspondence with the columns in the ORDER BY clause. START AT 절에는 ORDER BY 절만큼 많은 인수가 있을 수 있지만 그 이상은 아닙니다. START AT 첫 번째 인수는 ORDER BY 열의 열 1에서 시작 값을 정의합니다. START AT의 두 번째 인수는 열 1에서 첫 번째 값과 일치하는 행 내 ORDER BY 열에서, 열 2의 시작 값을 정의합니다.

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 테이블의 모든 열을 판매 주문 ID 기준으로 오름차순 정렬하여 SO43661부터 시작하여 반환합니다. 이 판매 주문 이전의 행은 결과 테이블에 포함되지 않습니다.

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

DEFINE(선택 사항)

선택적 DEFINE 키워드는 쿼리 기간 동안만 존재하는 하나 이상의 계산된 엔터티 정의를 도입합니다. EVALUATE달리 DEFINE 쿼리에 하나 이상의 정의가 있는 DAX 블록이 하나만 있을 수 있습니다. DEFINE 첫 번째 EVALUATE 문 앞에 있어야 하며 쿼리의 모든 EVALUATE 문에 유효합니다. 정의는 변수, 측정값, 테이블1, 및 열1일 수 있습니다. 정의는 현재 정의 앞이나 후에 나타나는 다른 정의를 참조할 수 있습니다. DEFINE 키워드가 쿼리에 포함된 경우 하나 이상의 정의가 필요합니다.

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

DEFINE MEASURE 모델 측정값을 추가할 권한이 없거나 모델에 추가할 필요가 없는 특정 DAX 쿼리에 대한 DAX 수식을 사용하여 추가 분석을 작성하는 데도 유용합니다.

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또는 COLUMN1.
name 측정값, var, 테이블 또는 열 정의의 이름입니다. 표현일 수 없습니다. 이름은 고유할 필요가 없습니다. 이름은 쿼리 기간 동안에만 존재합니다.
expression Any DAX expression that returns a table or scalar value. The expression can use any of the defined entities. 스칼라 식을 테이블 식으로 변환해야 하는 경우 중괄호가 {}테이블 생성자 안에 식을 래핑하거나 ROW() 함수를 사용하여 단일 행 테이블을 반환합니다.

[1]주의: 쿼리 범위 "TABLE" 및 "COLUMN" 정의는 내부용으로만 사용됩니다. 구문 오류 없이 쿼리에 대한 TABLE 및 COLUMN 식을 정의할 수 있지만 런타임 오류가 발생할 수 있으며 권장되지 않습니다.

DEFINE Remarks

  • DAX 쿼리에는 여러 개의 EVALUATE 문이 있을 수 있지만 하나의 DEFINE 문만 있을 수 있습니다. DEFINE 문의 정의는 쿼리의 모든 EVALUATE 문에 적용할 수 있습니다.

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

  • 쿼리에 대한 측정값 정의는 동일한 이름의 모델 측정값을 재정의하지만 쿼리 내에서만 사용됩니다. 모델 측정값에는 영향을 미치지 않습니다.

  • 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 쿼리에 정의된 테이블을 반환하고, 정의된 변수를 참조하는 추가 열을 통해 구매되지 않은 제품을 표시합니다. A measure is also defined and evaluated to count the rows of unbought products.

스크린샷은 Power BI Desktop의 DEFINE 쿼리 뷰에서 DAX 쿼리에 DAX를 사용하는 방법을 보여줍니다 .

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]
	)

회계 연도별로 결과를 표시하기 위해 정의된 세 가지 측정값을 평가하는 테이블을 반환합니다. 모든 측정값도 모델에 존재하며 고객당 주문은 DAX 쿼리에서 수정됩니다.

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

DAX 쿼리의 매개 변수

잘 정의된 DAX 쿼리 문을 매개 변수화한 다음 매개 변수 값의 변경 내용으로 반복해서 사용할 수 있습니다.

The Execute Method (XMLA) method has a Parameters Element (XMLA) collection element that allows parameters to be defined and assigned a value. 컬렉션 내에서 각 (XMLA) 매개변수 요소 는 매개변수의 이름과 값을 정의합니다.

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

중요하다

매개 변수 섹션에 정의되고 <STATEMENT> 요소에 사용되지 않는 매개 변수는 XMLA에서 오류 응답을 생성합니다. <Parameters> 요소에 사용되지 않고 정의되지 않은 매개 변수는 XMLA에서 오류 응답을 생성합니다.

DAX statementsSUMMARIZECOLUMNS