이 섹션에서는 다음 시나리오에서 DAX 수식을 사용하는 방법을 보여 주는 예제에 대한 링크를 제공합니다.
-
복잡한 계산 수행
-
텍스트 및 날짜 작업
-
조건부 값 및 오류 테스트
-
시간 인텔리전스 사용
-
값 순위 지정 및 비교
이 문서의 내용
시작하기
DAX 리소스 센터 Wiki를 방문하여 업계 최고의 전문가와 Microsoft에서 제공하는 블로그, 샘플, 백서 및 비디오를 포함하여 DAX에 대한 모든 종류의 정보를 찾을 수 있습니다.
시나리오: 복잡한 계산 수행
DAX 수식은 사용자 지정 집계, 필터링 및 조건부 값 사용을 포함하는 복잡한 계산을 수행할 수 있습니다. 이 섹션에서는 사용자 지정 계산을 시작하는 방법의 예를 제공합니다.
피벗 테이블에 대한 사용자 지정 계산 만들기
CALCULATE 및 CALCULATETABLE은 계산 필드를 정의하는 데 유용한 강력하고 유연한 함수입니다. 이러한 함수를 사용하면 계산이 수행될 컨텍스트를 변경할 수 있습니다. 수행할 집계 또는 수학 연산 유형을 사용자 지정할 수도 있습니다. 예제는 다음 항목을 참조하세요.
수식에 필터 적용
DAX 함수가 테이블을 인수로 사용하는 대부분의 경우 일반적으로 테이블 이름 대신 FILTER 함수를 사용하거나 필터 식을 함수 인수 중 하나로 지정하여 필터링된 테이블을 대신 전달할 수 있습니다. 다음 항목에서는 필터를 만드는 방법과 필터가 수식 결과에 미치는 영향에 대한 예제를 제공합니다. 자세한 내용은 DAX 수식에서 데이터 필터링을 참조하세요.
FILTER 함수를 사용하면 식을 사용하여 필터 조건을 지정할 수 있으며, 다른 함수는 빈 값을 필터링하도록 특별히 설계되었습니다.
동적 비율을 만들기 위해 선택적으로 필터 제거
수식에서 동적 필터를 만들면 다음과 같은 질문에 쉽게 대답할 수 있습니다.
-
현재 제품의 판매량이 올해 총 매출에 기여한 기여도는 무엇인가요?
-
이 부서가 다른 부서에 비해 모든 영업 연도의 총 수익에 얼마나 기여했는지 여부
피벗 테이블에서 사용하는 수식은 피벗 테이블 컨텍스트의 영향을 받을 수 있지만 필터를 추가하거나 제거하여 컨텍스트를 선택적으로 변경할 수 있습니다. ALL 항목의 예제에서는 이 작업을 수행하는 방법을 보여줍니다. 모든 재판매인의 판매 대비 특정 재판매인의 판매 비율을 찾으려면 현재 컨텍스트의 값을 ALL 컨텍스트의 값으로 나눈 값을 계산하는 측정값을 만듭니다.
ALLEXCEPT 항목에서는 수식에서 필터를 선택적으로 지우는 방법의 예를 제공합니다. 두 예제 모두 피벗 테이블의 디자인에 따라 결과가 어떻게 변경되는지 안내합니다.
비율 및 백분율을 계산하는 방법에 대한 다른 예제는 다음 항목을 참조하세요.
외부 루프의 값 사용
DAX는 계산에서 현재 컨텍스트의 값을 사용하는 것 외에도 이전 루프의 값을 사용하여 관련 계산 집합을 만들 수 있습니다. 다음 항목에서는 외부 루프의 값을 참조하는 수식을 빌드하는 방법에 대한 연습을 제공합니다. EARLIER 함수는 최대 두 가지 수준의 중첩 루프를 지원합니다.
행 컨텍스트 및 관련 테이블 및 수식에서 이 개념을 사용하는 방법에 대한 자세한 내용은 DAX 수식의 컨텍스트를 참조하세요.
시나리오: 텍스트 및 날짜 작업
이 섹션에서는 텍스트 작업, 날짜 및 시간 값 추출 및 작성 또는 조건에 따라 값 만들기와 관련된 일반적인 시나리오의 예제를 포함하는 DAX 참조 항목에 대한 링크를 제공합니다.
연결로 키 열 만들기
파워 피벗 복합 키를 허용하지 않습니다. 따라서 데이터 원본에 복합 키가 있는 경우 단일 키 열로 결합해야 할 수 있습니다. 다음 항목에서는 복합 키를 기반으로 계산 열을 만드는 방법의 한 가지 예제를 제공합니다.
텍스트 날짜에서 추출된 날짜 부분에 따라 날짜 작성
파워 피벗 SQL Server 날짜/시간 데이터 형식을 사용하여 날짜를 사용합니다. 따라서 외부 데이터에 다르게 서식이 지정된 날짜가 포함되어 있는 경우(예: 날짜가 파워 피벗 데이터 엔진에서 인식되지 않는 지역별 날짜 형식으로 작성된 경우 또는 데이터가 정수 서로게이트 키를 사용하는 경우) DAX 수식을 사용하여 날짜 부분을 추출한 다음 부품을 유효한 날짜/시간 표현으로 구성해야 할 수 있습니다.
예를 들어 정수로 표현된 후 텍스트 문자열로 가져온 날짜 열이 있는 경우 다음 수식을 사용하여 문자열을 날짜/시간 값으로 변환할 수 있습니다.
=DATE(RIGHT([Value1],4),LEFT([Value1],2),MID([Value1],2))
value1 |
결과 |
---|---|
01032009 |
1/3/2009 |
12132008 |
12/13/2008 |
06252007 |
6/25/2007 |
다음 항목에서는 날짜를 추출하고 작성하는 데 사용되는 함수에 대한 자세한 정보를 제공합니다.
사용자 지정 날짜 또는 숫자 형식 정의
데이터에 표준 Windows 텍스트 형식 중 하나로 표시되지 않는 날짜 또는 숫자가 포함된 경우 사용자 지정 형식을 정의하여 값이 올바르게 처리되도록 할 수 있습니다. 이러한 형식은 값을 문자열로 변환하거나 문자열에서 사용할 때 사용됩니다. 다음 항목에서는 날짜 및 숫자 작업에 사용할 수 있는 미리 정의된 형식의 자세한 목록도 제공합니다.
수식을 사용하여 데이터 형식 변경
파워 피벗 에서 출력의 데이터 형식은 원본 열에 의해 결정되며 최적의 데이터 형식은 파워 피벗 의해 결정되므로 결과의 데이터 형식을 명시적으로 지정할 수 없습니다. 그러나 파워 피벗 수행하는 암시적 데이터 형식 변환을 사용하여 출력 데이터 형식을 조작할 수 있습니다.
-
날짜 또는 숫자 문자열을 숫자로 변환하려면 1.0을 곱합니다. 예를 들어 다음 수식은 현재 날짜를 빼고 3일을 계산한 다음 해당 정수 값을 출력합니다.
=(TODAY()-3)*1.0
-
날짜, 숫자 또는 통화 값을 문자열로 변환하려면 값을 빈 문자열과 연결합니다. 예를 들어 다음 수식은 오늘 날짜를 문자열로 반환합니다.
=""& TODAY()
다음 함수를 사용하여 특정 데이터 형식이 반환되도록 할 수도 있습니다.
실수에서 정수로 변환
-
실수, 정수 또는 날짜를 문자열로 변환
-
문자열을 실제 숫자 또는 날짜로 변환
시나리오: 조건부 값 및 오류 테스트
Excel과 마찬가지로 DAX에는 데이터에서 값을 테스트하고 조건에 따라 다른 값을 반환할 수 있는 함수가 있습니다. 예를 들어 연간 판매액에 따라 재판매인에게 기본 설정 또는 값 으로 레이블을 지정하는 계산 열을 만들 수 있습니다. 값을 테스트하는 함수는 예기치 않은 데이터 오류가 계산을 위반하지 않도록 값의 범위 또는 유형을 확인하는 데에도 유용합니다.
조건에 따라 값 만들기
중첩된 IF 조건을 사용하여 값을 테스트하고 조건부로 새 값을 생성할 수 있습니다. 다음 항목에는 조건부 처리 및 조건부 값의 몇 가지 간단한 예제가 포함되어 있습니다.
수식 내 오류 테스트
Excel과 달리 계산 열의 한 행에 유효한 값과 다른 행의 잘못된 값을 가질 수 없습니다. 즉, 파워 피벗 열의 일부에 오류가 있는 경우 전체 열에 오류 플래그가 지정되므로 항상 잘못된 값을 초래하는 수식 오류를 수정해야 합니다.
예를 들어 0으로 나누는 수식을 만드는 경우 무한대 결과 또는 오류가 발생할 수 있습니다. 함수에 숫자 값이 필요한 경우 빈 값이 발견되면 일부 수식도 실패합니다. 데이터 모델을 개발하는 동안 메시지를 클릭하고 문제를 해결할 수 있도록 오류가 표시되도록 하는 것이 가장 좋습니다. 그러나 통합 문서를 게시할 때 예기치 않은 값으로 인해 계산이 실패하지 않도록 오류 처리를 통합해야 합니다.
계산 열에서 오류를 반환하지 않도록 하려면 논리 함수와 정보 함수의 조합을 사용하여 오류를 테스트하고 항상 유효한 값을 반환합니다. 다음 항목에서는 DAX에서 이 작업을 수행하는 방법에 대한 몇 가지 간단한 예제를 제공합니다.
시나리오: 시간 인텔리전스 사용
DAX 시간 인텔리전스 함수에는 데이터에서 날짜 또는 날짜 범위를 검색하는 데 도움이 되는 함수가 포함됩니다. 그런 다음 해당 날짜 또는 날짜 범위를 사용하여 비슷한 기간의 값을 계산할 수 있습니다. 시간 인텔리전스 함수에는 표준 날짜 간격으로 작동하는 함수도 포함되므로 월, 연도 또는 분기의 값을 비교할 수 있습니다. 지정된 기간의 첫 번째 및 마지막 날짜 값을 비교하는 수식을 만들 수도 있습니다.
모든 시간 인텔리전스 함수 목록은 DAX(시간 인텔리전스 함수)를 참조하세요. 파워 피벗 분석에서 날짜 및 시간을 효과적으로 사용하는 방법에 대한 팁은 파워 피벗의 날짜를 참조하세요.
누적 판매액 계산
다음 항목에는 닫기 및 여는 잔액을 계산하는 방법의 예가 포함되어 있습니다. 이 예제를 사용하면 일, 월, 분기 또는 연도와 같은 다양한 간격에 걸쳐 실행 중인 잔액을 만들 수 있습니다.
시간 경과에 따른 값 비교
다음 항목에는 여러 기간에 걸쳐 합계를 비교하는 방법의 예가 포함되어 있습니다. DAX에서 지원하는 기본 기간은 월, 분기 및 연도입니다.
사용자 지정 날짜 범위에 대한 값 계산
판매 프로모션이 시작된 후 처음 15일과 같이 사용자 지정 날짜 범위를 검색하는 방법에 대한 예제는 다음 항목을 참조하세요.
시간 인텔리전스 함수를 사용하여 사용자 지정 날짜 집합을 검색하는 경우 해당 날짜 집합을 계산을 수행하는 함수에 대한 입력으로 사용하여 기간 간에 사용자 지정 집계를 만들 수 있습니다. 이 작업을 수행하는 방법의 예는 다음 항목을 참조하세요.
-
참고: 사용자 지정 날짜 범위를 지정할 필요가 없지만 월, 분기 또는 연도와 같은 표준 회계 단위로 작업하는 경우 TOTALQTD, TOTALMTD, TOTALQTD 등 이러한 용도로 설계된 시간 인텔리전스 함수를 사용하여 계산을 수행하는 것이 좋습니다.
시나리오: 값 순위 지정 및 비교
열 또는 피벗 테이블에 있는 상위 n 개 수의 항목만 표시하려면 다음과 같은 몇 가지 옵션이 있습니다.
-
Excel의 기능을 사용하여 상위 필터를 만들 수 있습니다. 피벗 테이블에서 여러 위쪽 또는 아래쪽 값을 선택할 수도 있습니다. 이 섹션의 첫 번째 부분에서는 피벗 테이블의 상위 10개 항목을 필터링하는 방법을 설명합니다. 자세한 내용은 Excel 설명서를 참조하세요.
-
값을 동적으로 순위를 지정하는 수식을 만든 다음 순위 값을 기준으로 필터링하거나 순위 값을 슬라이서로 사용할 수 있습니다. 이 섹션의 두 번째 부분에서는 이 수식을 만든 다음 슬라이서에서 해당 순위를 사용하는 방법을 설명합니다.
각 방법에는 장점과 단점이 있습니다.
-
Excel Top 필터는 사용하기 쉽지만 필터는 표시 목적으로만 사용됩니다. 피벗 테이블의 기본 데이터가 변경되면 피벗 테이블을 수동으로 새로 고쳐 변경 내용을 확인해야 합니다. 순위를 동적으로 작업해야 하는 경우 DAX를 사용하여 열 내의 다른 값과 값을 비교하는 수식을 만들 수 있습니다.
-
DAX 수식이 더 강력합니다. 또한 순위 값을 슬라이서에 추가하여 슬라이서만 클릭하여 표시되는 상위 값의 수를 변경할 수 있습니다. 그러나 계산 비용이 많이 들고 행이 많은 테이블에는 이 메서드가 적합하지 않을 수 있습니다.
피벗 테이블에서 상위 10개 항목만 표시
피벗 테이블의 위쪽 또는 아래쪽 값을 표시하려면
|
수식을 사용하여 동적으로 항목 정렬
다음 항목에는 DAX를 사용하여 계산 열에 저장된 순위를 만드는 방법의 예가 포함되어 있습니다. DAX 수식은 동적으로 계산되므로 기본 데이터가 변경된 경우에도 항상 순위가 올바른지 확인할 수 있습니다. 또한 수식은 계산 열에서 사용되므로 슬라이서에서 순위를 사용한 다음 상위 5개, 상위 10개 또는 상위 100개 값을 선택할 수 있습니다.