2017-09-11 1 views
1

제 질문은 제로를 고려한 일일 평균을 계산하고 싶습니다.DAX average with zeroes

내가 그것을 명확히하자 : 나는 다음과 같은 테이블과, 각 범주에 대한 단위의 평균 값을 계산하고 싶습니다

:

Data table

나는 값을 요약하면 매일 및 카테고리, 내가 얻을 :

enter image description here

나는이 (가)에 포함 할 verage 계산 제로.

나는 다음 코드를 사용합니다

SUMMARIZE(
    Data, 
    Data[Category], 
    "Average", 
    AVERAGEX(
     SUMMARIZE(
      Data, 
      Data[Date], 
      "Sum of Units", 
      SUM(Data[Units]) 
     ), 
     [Sum of Units] 
    ) 
) 

을 그러나 문제는 범주 B 것이 0으로 당시 고려하지 않는다는 것입니다.

해결 방법을 알려주세요.

미리 감사드립니다.

호르헤는

답변

0

나는 가장 좋은 방법은 UNION 기능을 사용하여 누락 된 제로를 추가하는 것입니다 생각
0

당신이 (당신의 초기 데이터 테이블에) 거기에 영점하는 기본 행을 가질 필요가 날 것으로 보인다. 지금 당장 2011 년 2 월 1 일에 B에 대한 값이 0이 아닙니다. | 값이있는 행을 추가하면 | 02/01/2017 | B | 0 | 나는 당신이 그것을위한 평균 계정을 볼 것이라고 생각합니다. 이제 상황이 당신을 기다리고 있기 때문에 필자는 피벗 테이블이 실제로는 0 값이 아닌 값 (공백)을 반영한다고 생각합니다. 따라서 0은 현재 평균으로 계산되지 않습니다.

1

해결 방법 중 하나는 일정 테이블을 만들어 그룹 기간 중 일 수를 계산하는 것입니다. 또한 비표준 캘린더 (예 : 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()) 

빈 피벗 테이블에 추가 할 때 다음과 같이 평가됩니다. 데이터가 여러 개인 경우 피벗에 어딘가에 연도가 있어야합니다.

enter image description here

과거 플래그를 갖는 아이디어는 그들이 때문에 미래에있는 모든 데이터를하지 않을 것이라고 계산 일에서 유지하는 것입니다. 예를 들어 9 월에는 11 일 동안의 판매 만 사용하고 전체 30은 사용하지 않습니다.

아래 예에서와 같이 시작일과 종료일을 찾는 것은 분기별로 작동합니다.

enter image description here

그래서 지금 우리는 시작과 기간의 종료 날짜를 얻을 수있는 방법을 가지고, 다음 단계는 우리의 계산 된 측정 값으로 추가된다.

아래의 예에서 우리는 모든 고유 한 카테고리 이름을 반복하고 있습니다. 이 범주 내에서 판매 된 단위를 합한 다음 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)) 
)