DAX 시간 인텔리전스 함수 사용

완료됨

DAX에는 날짜 필터 컨텍스트를 수정하는 작업을 단순화하는 몇 가지 시간 인텔리전스 함수가 포함되어 있습니다. 날짜 필터를 수정하는 CALCULATE 함수를 사용하여 이러한 인텔리전스 수식을 다수 작성할 수 있지만 더 많은 작업이 필요합니다.

참고

많은 DAX 시간 인텔리전스 함수는 표준 날짜 기간, 특히 년, 분기 및 월과 관련 있습니다. 일반적이지 않은 기간(예: 역월 중간부터 시작하는 재무 월) 또는 주, 시, 분 등의 시간 단위로 작업해야 하는 경우에는 DAX 시간 인텔리전스 함수가 유용하지 않습니다. 대신, CALCULATE 함수를 사용하여 직접 만든 날짜 또는 시간 필터를 전달해야 합니다.

날짜 테이블 요구 사항

시간 인텔리전스 DAX 함수를 사용하려면 모델에 날짜 테이블이 하나 이상 있어야 한다는 필수 모델 요구 사항을 충족해야 합니다. 날짜 테이블은 다음 요구 사항을 충족하는 테이블입니다.

  • 이 테이블에는 날짜 열이라고 하는, 날짜(또는 날짜/시간) 데이터 형식의 열이 있어야 합니다.
  • 날짜 열에는 고유한 값이 있어야 합니다.
  • 날짜 열에는 공백이 포함되면 안됩니다.
  • 날짜 열에는 누락된 날짜가 없어야 합니다.
  • 날짜 열은 전체 연도에 걸쳐 있어야 합니다. 연도는 반드시 역년(1월~12월)일 필요가 없습니다.
  • 날짜 테이블은 날짜 테이블로 표시되어야 합니다.

자세한 내용은 Power BI Desktop에서 날짜 테이블 만들기를 참조하세요.

시간 경과에 따른 요약

한 DAX 시간 인텔리전스 함수 그룹은 시간 경과에 따른 요약과 관련이 있습니다.

  • DATESYTD - 현재 필터 컨텍스트의 YTD(연간 누계) 날짜를 포함하는 단일 열 테이블을 반환합니다. 또한 이 그룹에는 MTD(월간 누계) 및 QTD(분기 누계)를 계산하기 위한 DAX 함수 DATESMTDDATESQTD도 포함됩니다. 이러한 함수를 CALCULATE DAX 함수에 필터로 전달할 수 있습니다.
  • TOTALYTD - 현재 필터 컨텍스트에서 YTD 식을 평가합니다. QTD 및 MTD를 계산하기 위한 TOTALQTDTOTALMTD DAX 함수도 포함됩니다.
  • DATESBETWEEN - 지정된 시작 날짜에서 시작하여 지정된 종료 날짜까지 계속되는 날짜 열이 포함된 테이블을 반환합니다.
  • DATESINPERIOD - 주어진 start_date부터 시작하여 지정된 number_of_intervals 동안 계속되는 날짜로 이루어진 열이 포함된 테이블을 반환합니다.

참고

TOTALYTD 함수는 간단하게 사용할 수 있지만 하나의 필터 식에 전달하는 것으로 제한됩니다. 여러 필터 식을 적용해야 하는 경우 CALCULATE 함수를 사용하고 DATESYTD 함수를 필터 식 중 하나로 전달합니다.

다음 예제에서는 TOTALYTD 함수를 사용하는 시간 인텔리전스 계산을 처음으로 만듭니다. 구문은 다음과 같습니다.

TOTALYTD(<expression>, <dates>, [, <filter>][, <year_end_date>])

이 함수에는 모든 시간 인텔리전스 함수와 마찬가지로 표시된 날짜 테이블의 날짜 열에 대한 참조인 식이 필요합니다. 필요에 따라 단일 필터 식이나 연도 종료 날짜를 전달할 수 있습니다(연도가 12월 31일에 끝나지 않는 경우에만 필요).

Adventure Works DW 2020 M07.pbix 파일을 다운로드하여 엽니다. 그런 다음 YTD 수익을 계산하는 다음 측정값 정의를 Sales 테이블에 추가합니다. 측정값의 서식을 소수점 이하 두 자리 통화로 지정합니다.

Revenue YTD =
TOTALYTD([Revenue], 'Date'[Date], "6-30")

연도 종료 날짜 값 "6-30"은 6월 30일을 의미합니다.

보고서의 Page 1에서 Revenue YTD 측정값을 행렬 시각적 개체에 추가합니다. 이 측정값은 연도 시작부터 필터링된 달까지의 수익 금액에 대한 요약을 생성합니다.

이미지는 행에서 Year 및 Month가 그룹화되고 Revenue 및 Revenue YTD 요약이 포함된 행렬 시각적 개체를 보여 줍니다. YTD 값이 강조 표시되어 있습니다.

시간 경과에 따른 비교

또 하나의 DAX 시간 인텔리전스 함수 그룹은 기간 이동과 관련됩니다.

  • DATEADD - 현재 필터 컨텍스트에서 지정된 날짜 간격만큼 이전 또는 이후로 이동한 날짜의 열이 포함된 테이블을 반환합니다.
  • PARALLELPERIOD - 현재 필터 컨텍스트에서 지정된 날짜 열의 날짜로부터 일정한 날짜 간격만큼 이전 또는 이후로 이동한 평행한 날짜 기간을 나타내는 날짜의 열이 포함된 테이블을 반환합니다.
  • SAMEPERIODLASTYEAR - 현재 필터 컨텍스트에서 지정된 날짜 열의 날짜로부터 1년 뒤로 이동한 날짜의 열이 포함된 테이블을 반환합니다.
  • 특정 기간에서 뒤로 또는 앞으로 이동하기 위한 많은 도우미 DAX 함수는 모두 날짜 테이블을 반환합니다. 이러한 도우미 함수에는 NEXTDAY, NEXTMONTH, NEXTQUARTER, NEXTYEARPREVIOUSDAY, PREVIOUSMONTH, PREVIOUSQUARTERPREVIOUSYEAR가 포함됩니다.

이제 SAMEPERIODLASTYEAR 함수를 사용하여 이전 연도 수익을 계산하는 측정값을 Sales 테이블에 추가합니다. 측정값의 서식을 소수점 이하 두 자리 통화로 지정합니다.

Revenue PY =
VAR RevenuePriorYear = CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date]))
RETURN
    RevenuePriorYear

행렬 시각적 개체에 Revenue PY 측정값을 추가합니다. 이 측정값은 이전 연도 수익 금액과 비슷한 결과를 생성합니다.

이미지는 행에서 Year 및 Month가 그룹화되고 Revenue, Revenue YTD 및 Revenue PY 요약이 포함된 행렬 시각적 개체를 보여 줍니다. FY2019의 Revenue PY 월 값은 FY2018의 Revenue 월 값과 동일합니다.

다음으로 측정값 이름을 Revenue YoY %로 바꾼 다음 RETURN 절을 업데이트하여 변동 비율을 계산하는 방법으로 측정값을 수정합니다. 소수점 이하 두 자리 백분율 형식으로 변경해야 합니다.

Revenue YoY % =
VAR RevenuePriorYear = CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date]))
RETURN
    DIVIDE(
        [Revenue] - RevenuePriorYear,
        RevenuePriorYear
    )

Revenue YoY % 측정값은 이전 연도 월별 수익과 비교한 변동률을 생성합니다. 예를 들어 2018년 7월은 전년 동월 수익 대비 106.53% 증가를 보이고, 2018년 11월은 전년 동월 수익 대비 24.22% 감소를 보입니다.

이미지는 행에서 Year 및 Month가 그룹화되고 Revenue, Revenue YTD 및 Revenue YoY % 요약이 포함된 행렬 시각적 개체를 보여 줍니다. FY2019의 Revenue YoY % 월 값은 백분율로 서식 지정된 값입니다.

참고

Revenue YoY % 측정값은 DAX 변수를 잘 활용한 예입니다. 이 측정값은 수식 가독성을 향상시키고 (RevenuePriorYear 변수 값을 반환하여) 측정값 논리의 단위 테스트 부분을 수행할 수 있도록 합니다. 또한 이전 연도 수익 값을 두 번 검색할 필요가 없기 때문에 이 측정값은 최적 수식입니다. 변수에 값을 한 번 저장하면 RETURN 절이 이 변수 값을 두 번 사용합니다.