DAX(데이터 분석 식)는 처음에는 약간 위협적이지만 이름이 당신을 속이지 않도록 합니다. DAX 기본 사항은 이해하기 매우 쉽습니다. 첫 번째 사항 - DAX는 프로그래밍 언어가 아닙니다. DAX는 수식 언어입니다. DAX를 사용하여 계산 열 및 측정값 (계산 필드라고도 함)에 대한 사용자 지정 계산을 정의할 수 있습니다. DAX에는 Excel 수식에 사용되는 몇 가지 함수와 관계형 데이터를 사용하고 동적 집계를 수행하도록 설계된 추가 함수가 포함되어 있습니다.
DAX 수식 이해
DAX 수식은 Excel 수식과 매우 유사합니다. 이 기호를 만들려면 등호와 함수 이름 또는 식, 필요한 값 또는 인수를 입력합니다. Excel과 마찬가지로 DAX는 문자열을 사용하거나 날짜와 시간을 사용하여 계산을 수행하거나 조건부 값을 만드는 데 사용할 수 있는 다양한 함수를 제공합니다.
그러나 DAX 수식은 다음과 같은 중요한 방법으로 다릅니다.
-
행별로 계산을 사용자 지정하려는 경우 DAX에는 현재 행 값 또는 관련 값을 사용하여 컨텍스트에 따라 달라지는 계산을 수행할 수 있는 함수가 포함됩니다.
-
DAX에는 단일 값이 아닌 결과로 테이블을 반환하는 함수 형식이 포함되어 있습니다. 이러한 함수는 다른 함수에 대한 입력을 제공하는 데 사용할 수 있습니다.
-
시간 인텔리전스 함수 DAX에서 날짜 범위를 사용하여 계산을 허용하고 병렬 기간의 결과를 비교합니다.
DAX 수식을 사용하는 위치
계산된 c olumns 또는 계산된 fields에서 파워 피벗 수식을 만들 수 있습니다.
계산 열
계산 열은 기존 파워 피벗 테이블에 추가하는 열입니다. 열에 값을 붙여넣거나 가져오는 대신 열 값을 정의하는 DAX 수식을 만듭니다. 피벗 테이블(또는 피벗 차트)에 파워 피벗 테이블을 포함하는 경우 계산 열을 다른 데이터 열과 마찬가지로 사용할 수 있습니다.
계산 열의 수식은 Excel에서 만든 수식과 매우 유사합니다. 그러나 Excel과 달리 테이블의 다른 행에 대해 다른 수식을 만들 수는 없습니다. 대신 DAX 수식이 전체 열에 자동으로 적용됩니다.
열에 수식이 포함되어 있으면 각 행에 대해 값이 계산됩니다. 결과는 수식을 만드는 즉시 열에 대해 계산됩니다. 열 값은 기본 데이터를 새로 고치거나 수동 다시 계산을 사용하는 경우에만 다시 계산됩니다.
측정값 및 기타 계산 열을 기반으로 하는 계산 열을 만들 수 있습니다. 그러나 계산 열과 측정값에 동일한 이름을 사용하지 않도록 합니다. 이로 인해 결과가 혼란스러울 수 있습니다. 열을 참조할 때 측정값을 실수로 호출하지 않도록 정규화된 열 참조를 사용하는 것이 가장 좋습니다.
자세한 내용은 파워 피벗의 계산 열을 참조하세요.
측정값
측정값은 파워 피벗 데이터를 사용하는 피벗 테이블(또는 피벗 차트)에서 사용하기 위해 특별히 만들어진 수식입니다. 측정값은 COUNT 또는 SUM과 같은 표준 집계 함수를 기반으로 하거나 DAX를 사용하여 고유한 수식을 정의할 수 있습니다. 측정값은 피벗 테이블의 값 영역에서 사용됩니다. 계산 결과를 피벗 테이블의 다른 영역에 배치하려면 대신 계산 열을 사용합니다.
명시적 측정값에 대한 수식을 정의하면 피벗 테이블에 측정값을 추가할 때까지 아무 일도 발생하지 않습니다. 측정값을 추가하면 피벗 테이블의 값 영역에 있는 각 셀에 대해 수식이 평가됩니다. 행과 열 머리글의 각 조합에 대해 결과가 생성되므로 측정값의 결과는 각 셀에서 다를 수 있습니다.
만드는 측정값의 정의는 원본 데이터 테이블과 함께 저장됩니다. 피벗 테이블 필드 목록에 표시되며 통합 문서의 모든 사용자가 사용할 수 있습니다.
자세한 내용은 파워 피벗의 측정값을 참조하세요.
수식 입력줄을 사용하여 수식 만들기
excel과 같은파워 피벗 수식을 더 쉽게 만들고 편집할 수 있는 수식 입력줄과 자동 완성 기능을 제공하여 입력 및 구문 오류를 최소화합니다.
테이블 이름을 입력하려면 테이블 이름을 입력하기 시작합니다. 수식 자동 완성은 해당 문자로 시작하는 유효한 이름을 포함하는 드롭다운 목록을 제공합니다.
열의 이름을 입력하려면 대괄호를 입력한 다음 현재 테이블의 열 목록에서 열을 선택합니다. 다른 테이블의 열에 대해 테이블 이름의 첫 글자를 입력한 다음 자동 완성 드롭다운 목록에서 열을 선택합니다.
수식을 작성하는 방법에 대한 자세한 내용과 연습은 파워 피벗에서 계산을 위한 수식 만들기를 참조하세요.
자동 완성을 사용하기 위한 팁
기존 수식 중간에 중첩된 함수를 사용하여 수식 자동 완성을 사용할 수 있습니다. 삽입 지점 바로 앞의 텍스트는 드롭다운 목록에 값을 표시하는 데 사용되며 삽입 지점 뒤의 모든 텍스트는 변경되지 않은 상태로 유지됩니다.
상수에 대해 만든 정의된 이름은 자동 완성 드롭다운 목록에 표시되지 않지만 여전히 입력할 수 있습니다.
파워 피벗 함수의 닫는 괄호를 추가하거나 괄호와 자동으로 일치하지 않습니다. 각 함수가 구문상 올바른지 또는 수식을 저장하거나 사용할 수 없는지 확인해야 합니다.
수식에서 여러 함수 사용
함수를 중첩할 수 있습니다. 즉, 한 함수의 결과를 다른 함수의 인수로 사용할 수 있습니다. 계산 열에 최대 64개 수준의 함수를 중첩할 수 있습니다. 그러나 중첩을 사용하면 수식을 만들거나 문제를 해결하기 어려울 수 있습니다.
많은 DAX 함수는 중첩 함수로만 사용하도록 설계되었습니다. 이러한 함수는 테이블을 반환하므로 직접 저장할 수 없습니다. 테이블 함수에 대한 입력으로 제공해야 합니다. 예를 들어 SUMX, AVERAGEX 및 MINX 함수에는 모두 첫 번째 인수로 테이블이 필요합니다.
: 함수 중첩에 대한 몇 가지 제한은 성능이 열 간의 종속성에 필요한 많은 계산의 영향을 받지 않도록 하기 위해 측정값 내에 존재합니다.
DAX 함수 및 Excel 함수 비교
DAX 함수 라이브러리는 Excel 함수 라이브러리를 기반으로 하지만 라이브러리에는 많은 차이점이 있습니다. 이 섹션에서는 Excel 함수와 DAX 함수 간의 차이점과 유사성을 요약합니다.
-
많은 DAX 함수는 Excel 함수와 이름이 동일하고 일반적인 동작이 동일하지만 다른 형식의 입력을 사용하도록 수정되었으며 경우에 따라 다른 데이터 형식을 반환할 수 있습니다. 일반적으로 Excel 수식에서 DAX 함수를 사용하거나 일부 수정 없이는 파워 피벗 Excel 수식을 사용할 수 없습니다.
-
DAX 함수는 셀 참조 또는 범위를 참조로 취하지 않고 대신 DAX 함수는 열 또는 테이블을 참조로 사용합니다.
-
DAX 날짜 및 시간 함수는 datetime 데이터 형식을 반환합니다. 반면 Excel 날짜 및 시간 함수는 날짜를 일련 번호로 나타내는 정수를 반환합니다.
-
많은 새 DAX 함수는 값 테이블을 반환하거나 입력으로 값 테이블을 기반으로 계산합니다. 반면 Excel에는 테이블을 반환하는 함수가 없지만 일부 함수는 배열에서 작동할 수 있습니다. 전체 테이블 및 열을 쉽게 참조하는 기능은 파워 피벗 의 새로운 기능입니다.
-
DAX는 Excel의 배열 및 벡터 조회 함수와 유사한 새로운 조회 함수를 제공합니다. 그러나 DAX 함수는 테이블 간에 관계를 설정해야 합니다.
-
열의 데이터는 항상 동일한 데이터 형식이어야 합니다. 데이터가 동일한 형식이 아닌 경우 DAX는 전체 열을 모든 값을 가장 잘 수용하는 데이터 형식으로 변경합니다.
DAX 데이터 형식
다양한 데이터 형식을 지원할 수 있는 다양한 데이터 원본에서 파워 피벗 데이터 모델로 데이터를 가져올 수 있습니다. 데이터를 가져오거나 로드한 다음 계산 또는 피벗 테이블에서 데이터를 사용하면 데이터가 파워 피벗 데이터 형식 중 하나로 변환됩니다. 데이터 형식 목록은 데이터 모델의 데이터 형식을 참조하세요.
테이블 데이터 형식은 DAX의 새 데이터 형식으로, 많은 새 함수에 대한 입력 또는 출력으로 사용됩니다. 예를 들어 FILTER 함수는 테이블을 입력으로 사용하고 필터 조건을 충족하는 행만 포함하는 다른 테이블을 출력합니다. 테이블 함수를 집계 함수와 결합하여 동적으로 정의된 데이터 집합에 대해 복잡한 계산을 수행할 수 있습니다. 자세한 내용은 파워 피벗의 집계를 참조하세요.
수식 및 관계형 모델
파워 피벗 창은 여러 데이터 테이블로 작업하고 관계형 모델의 테이블을 연결할 수 있는 영역입니다. 이 데이터 모델 내에서 테이블은 관계를 통해 서로 연결되므로 다른 테이블의 열과 상관 관계를 만들고 더 흥미로운 계산을 만들 수 있습니다. 예를 들어 관련 테이블의 값을 합산하는 수식을 만든 다음 해당 값을 단일 셀에 저장할 수 있습니다. 또는 관련 테이블의 행을 제어하기 위해 테이블 및 열에 필터를 적용할 수 있습니다. 자세한 내용은 데이터 모델의 테이블 간 관계를 참조하세요.
관계를 사용하여 테이블을 연결할 수 있으므로 피벗 테이블에는 서로 다른 테이블의 여러 열의 데이터가 포함될 수도 있습니다.
그러나 수식은 전체 테이블 및 열에서 작동할 수 있으므로 Excel에서와 다르게 계산을 디자인해야 합니다.
-
일반적으로 열의 DAX 수식은 항상 열의 전체 값 집합에 적용됩니다(행이나 셀은 몇 개만 적용되지 않음).
-
파워 피벗 테이블은 항상 각 행에 동일한 수의 열을 포함해야 하며 열의 모든 행에는 동일한 데이터 형식이 포함되어야 합니다.
-
테이블이 관계에 의해 연결된 경우 키로 사용되는 두 열에 대부분의 경우 일치하는 값이 있는지 확인해야 합니다. 파워 피벗 참조 무결성을 적용하지 않으므로 키 열에 일치하지 않는 값을 사용하고 관계를 만들 수 있습니다. 그러나 빈 값 또는 일치하지 않는 값이 있으면 수식의 결과와 피벗 테이블의 모양에 영향을 줄 수 있습니다. 자세한 내용은 파워 피벗 수식의 조회를 참조하세요.
-
관계를 사용하여 테이블을 연결할 때 수식이 평가되는 scope 또는 c온텍스트를 확대합니다. 예를 들어 피벗 테이블의 수식은 피벗 테이블의 필터 또는 열 및 행 머리글의 영향을 받을 수 있습니다. 컨텍스트를 조작하는 수식을 작성할 수 있지만 컨텍스트로 인해 예상할 수 없는 방식으로 결과가 변경될 수도 있습니다. 자세한 내용은 DAX 수식의 컨텍스트를 참조하세요.
수식 결과 업데이트
데이터 r 새로 고침 및 다시 계산은 복잡한 수식, 대량의 데이터 또는 외부 데이터 원본에서 가져온 데이터를 포함하는 데이터 모델을 디자인할 때 이해해야 하는 두 가지 별도 관련 작업입니다.
데이터 새로 고침은 외부 데이터 원본의 새 데이터로 통합 문서의 데이터를 업데이트하는 프로세스입니다. 지정한 간격으로 데이터를 수동으로 새로 고칠 수 있습니다. 또는 SharePoint 사이트에 통합 문서를 게시한 경우 외부 원본에서 자동 새로 고침을 예약할 수 있습니다.
다시 계산 은 수식 자체의 변경 내용을 반영하고 기본 데이터의 변경 내용을 반영하기 위해 수식 결과를 업데이트하는 프로세스입니다. 다시 계산은 다음과 같은 방법으로 성능에 영향을 줄 수 있습니다.
-
계산 열의 경우 수식을 변경할 때마다 항상 전체 열에 대해 수식의 결과를 다시 계산해야 합니다.
-
측정값의 경우 측정값이 피벗 테이블 또는 피벗 차트의 컨텍스트에 배치될 때까지 수식의 결과가 계산되지 않습니다. 데이터 필터에 영향을 주는 행 또는 열 머리글을 변경하거나 피벗 테이블을 수동으로 새로 고칠 때도 수식이 다시 계산됩니다.
수식 문제 해결
수식을 작성할 때 오류 발생
수식을 정의할 때 오류가 발생하면 수식에 구문 오류, 의미 체계 오류 또는 계산 오류가 포함될 수 있습니다.
구문 오류는 resolve 가장 쉽습니다. 일반적으로 누락된 괄호 또는 쉼표가 포함됩니다. 개별 함수 구문에 대한 도움말은 DAX 함수 참조를 참조하세요.
구문이 올바르지만 참조된 값이나 열이 수식의 컨텍스트에서 의미가 없는 경우 다른 유형의 오류가 발생합니다. 이러한 의미 체계 및 계산 오류는 다음과 같은 문제로 인해 발생할 수 있습니다.
-
수식은 존재하지 않는 열, 테이블 또는 함수를 나타냅니다.
-
수식이 올바른 것처럼 보이지만 데이터 엔진이 데이터를 가져오면 형식이 일치하지 않는 것을 발견하고 오류를 발생합니다.
-
수식은 잘못된 수 또는 형식의 매개 변수를 함수에 전달합니다.
-
수식은 오류가 있는 다른 열을 참조하므로 해당 값이 잘못되었습니다.
-
수식은 처리되지 않은 열을 나타냅니다. 즉, 메타데이터가 있지만 계산에 사용할 실제 데이터가 없습니다.
처음 네 가지 경우 DAX는 잘못된 수식을 포함하는 전체 열에 플래그를 지정합니다. 마지막 경우 DAX는 열을 회색으로 표시하여 열이 처리되지 않은 상태임을 나타냅니다.
열 값의 순위를 지정하거나 정렬할 때 잘못되거나 비정상적인 결과
값 NaN(숫자가 아님)이 포함된 열의 순위를 지정하거나 정렬하면 잘못되거나 예기치 않은 결과가 발생할 수 있습니다. 예를 들어 계산에서 0을 0으로 나누면 NaN 결과가 반환됩니다.
수식 엔진이 숫자 값을 비교하여 정렬 및 순위를 수행하기 때문입니다. 그러나 NaN은 열의 다른 숫자와 비교할 수 없습니다.
올바른 결과를 보장하기 위해 IF 함수를 사용하여 조건문을 사용하여 NaN 값을 테스트하고 숫자 0 값을 반환할 수 있습니다.
Analysis Services 테이블 형식 모델 및 DirectQuery 모드와의 호환성
일반적으로 파워 피벗 빌드하는 DAX 수식은 Analysis Services 테이블 형식 모델과 완전히 호환됩니다. 그러나 파워 피벗 모델을 Analysis Services instance 마이그레이션한 다음 DirectQuery 모드로 모델을 배포하는 경우 몇 가지 제한 사항이 있습니다.
-
DirectQuery 모드에서 모델을 배포하는 경우 일부 DAX 수식은 다른 결과를 반환할 수 있습니다.
-
수식에는 관계형 데이터 원본에 대해 지원되지 않는 DAX 함수가 포함되어 있으므로 DirectQuery 모드로 모델을 배포할 때 일부 수식으로 인해 유효성 검사 오류가 발생할 수 있습니다.
자세한 내용은 SQL Server 2012 BooksOnline의 Analysis Services 테이블 형식 모델링 설명서를 참조하세요.