테이블 DAX 식

완료됨

대부분의 경우 Power BI에서는 외부 데이터 원본에서 모델로 데이터를 가져와서 테이블을 만듭니다. 대신 테이블 함수를 사용하면 이미 모델에 로드한 데이터를 기반으로 새 테이블을 추가할 수 있습니다.

개요

테이블 함수를 사용하면 Power BI 사용자가 데이터 모델에 표시되고 다른 DAX 식에서 사용할 수 있는 중간 테이블을 만들 수 있습니다. 테이블 함수는 사용할 수 있는 임시 테이블이지만 출력되지 않으므로 표시되지 않습니다.

FILTER, VALUES 및 ALL은 DAX 측정값 내에서 자주 사용되는 일반적인 중간 테이블입니다.

FILTER 함수 적용

FILTER 함수는 특정 테이블에 대한 필터를 설정한 다음 계산에서 테이블의 요약된 버전을 사용합니다. 즉, 다른 테이블 또는 식의 하위 집합을 나타내는 테이블을 반환합니다.

예를 들어 다음과 같은 데이터 테이블이 있다고 가정해 보겠습니다.

FILTER 함수 예제에서 참조할 데이터 테이블입니다.

이전 테이블에는 시애틀의 판매를 강조하는 몇 개의 행이 있습니다. 2018년 시애틀의 총 매출은 30.13(20.46 + 9.67)입니다. FILTER 함수로 이 결과를 얻으려면

2018 Sales = SUMX(
  FILTER(
    Sales,
    YEAR( Sales[SalesDate] ) = 2018
  ),
  [Price]*[Quantity]
)

TABLEAU와 상관 관계: Tableau에서 동일한 계산을 만들려면 IF/THEN 구문을 사용합니다(예: 2018 Sales = IF YEAR([SalesDate]) = 2018 THEN SUM([Price]*[Quantity]) END)

이전 코드 조각에서는 먼저 판매 팩트 테이블인 필터 컨텍스트에 대한 데이터를 검색했습니다.

판매 팩트 테이블의 데이터 미리 보기입니다.

다음으로 판매 데이터를 필터링하여 2018 판매만 포함하도록 했습니다.

판매 팩트 테이블의 데이터 미리 보기에서 2018 판매를 강조 표시합니다.

마지막으로 임시 테이블의 레코드에 대해서만 표현식을 평가했습니다.

판매 팩트 테이블의 데이터 미리 보기를 필터링하여 2018 판매를 표시합니다.

VALUES 함수를 적용합니다.

VALUES 함수는 지정된 테이블 또는 열에서 고유한 값을 포함하는 열이 하나인 테이블을 반환합니다. 중복 값이 제거되 고 고유 값만 반환됩니다.

예를 들어, 스포츠 팀에서 지불해야 할 마지막 미결제 잔고가 있는 선수를 표시해야 하는 작업을 방금 받았습니다.

다음은 사용할 데이터 테이블(팀 세부 정보라고 함)입니다.

VALUES 함수 예제에서 참조할 데이터 테이블입니다.

필요한 작업은 벌금을 갚을 선수가 한 명밖에 남지 않았는지 테스트하는 것입니다. 그렇다면 해당 이름을 표시합니다. 그렇지 않으면 "둘 이상의 플레이어"라는 메시지를 표시합니다.

VALUES 함수를 사용하여 이 작업을 수행할 수 있습니다.

LastPlayer = IF(
  COUNTROWS( VALUES( 'Team Fine Details'[SportsTeam] ) ) = 1,
  VALUES( 'Team Fine Details'[PlayerName] ),
  "More than one player"
)

TABLEAU와 상관 관계: 다음은 Tableau에서 동일한 계산을 수행하는 방법입니다. LastPlayer = IF COUNTD([SportsTeam]) = 1 THEN [PlayerName] ELSE "More than one player" END

이 측정값은 아래 보고서/시각화와 유사합니다.

LastPlayer 계산이 포함된 예제 보고서.

ALL 함수 적용

ALL 함수는 Power BI에게 특정 테이블을 보고 테이블에서 모든 값을 가져와(테이블은 필터링하지 않음) 식에서 해당 값의 하위 집합을 사용하도록 지시합니다.

ALL 함수의 집계 된 측정값의 총 백분율을 알고 싶을 때 사용합니다.

예를 들어 스포츠 팀의 벌금 시나리오를 생각해보세요. 상사는 이전 작업에서 얻은 결과에 만족하지만 어느 팀이 가장 높은 벌금을 부과하는지 알고 싶어 합니다.

LastPlayer 계산이 포함된 최신 보고서입니다.

첫 번째 단계는 미해결 벌금의 총합계에 대한 측정값을 만드는 것입니다.

TotalAllFineAmount = CALCULATE( [TotalFineAmount], ALL( 'Team Fine Details'[SportsTeam] ) )

TABLEAU와의 상관 관계: FIXED LOD 식을 사용하여 Tableau에서 동일한 계산을 수행하는 방법입니다. 테이블 수준에서 총 벌금량(TotalAllFineAmount = { FIXED : SUM([TotalFineAmount]) })을 집계합니다.

두 번째와 마지막 단계에서는 DIVIDE 함수를 사용하여 총 측정값의 백분율을 만듭니다.

FineAmountPercentOfTotal = DIVIDE( [TotalFineAmount], [TotalAllFineAmount] )

TABLEAU와 상관 관계: Tableau에서 동일한 계산을 수행하는 방법입니다. FineAmountPercentOfTotal = SUM([TotalFineAmount]) / SUM([TotalAllFineAmount])