해결 방법 중 하나는 일정 테이블을 만들어 그룹 기간 중 일 수를 계산하는 것입니다. 또한 비표준 캘린더 (예 : 4-4-5)를 사용할 수 있습니다.
캘린더 테이블을 만들면및 LASTDATE
기능을 DAX에서 활용할 수 있습니다.
다음 공식을 사용하여 DAX를 사용하여 만들 수있는 과거 날짜 열을 달력 테이블에 추가하는 것이 좋습니다. 계산 된 열에서 DAX를 사용하면 today 함수는 모델이 업데이트 될 때만 평가됩니다. 내 예에서
는 I 날짜 테이블에서 계산 된 열이라고 Past_Dates
생성
Past_dates = IF (TODAY()> [일자] (TRUE), BLANK()) 예 경우 이처럼
나는 오늘의 일러스트를 위해 사용 된 다음의 측정을 만든다.
Start_date:=FIRSTDATE(Dates[Date])
End_Date:=LASTDATE(Dates[Date])
Today:=TODAY()
EndPhased:=CALCULATE(LASTDATE(Dates[Date]), Dates[Past_dates] = TRUE())
빈 피벗 테이블에 추가 할 때 다음과 같이 평가됩니다. 데이터가 여러 개인 경우 피벗에 어딘가에 연도가 있어야합니다.
과거 플래그를 갖는 아이디어는 그들이 때문에 미래에있는 모든 데이터를하지 않을 것이라고 계산 일에서 유지하는 것입니다. 예를 들어 9 월에는 11 일 동안의 판매 만 사용하고 전체 30은 사용하지 않습니다.
아래 예에서와 같이 시작일과 종료일을 찾는 것은 분기별로 작동합니다.
그래서 지금 우리는 시작과 기간의 종료 날짜를 얻을 수있는 방법을 가지고, 다음 단계는 우리의 계산 된 측정 값으로 추가된다.
아래의 예에서 우리는 모든 고유 한 카테고리 이름을 반복하고 있습니다. 이 범주 내에서 판매 된 단위를 합한 다음 EndPhased와 Start_Date + 1 사이의 일 수로 나눕니다. 그런 다음 해당 기간의 데이터가있는 범주 수로 결과의 평균을 계산합니다.
SUMMARIZE(
Data,
Data[Category],
"Average",
AVERAGEX(
UNION(
SUMMARIZE(
Data,
Data[Date],
"Sum of Units",
SUM(Data[Units])
),
ADDCOLUMNS(
EXCEPT(
ALL(Data[Date]),
VALUES(Data[Date])
),
"Sum of Units",
0
)
),
[Sum of Units]
)
)
:
Average:=AVERAGEX (
VALUES (Data[Category]),
CALCULATE (DIVIDE (SUM (Data[Units]), [EndPhased] - [Start_date] + 1))
)