2017-04-17 1 views
2

PowerBI 포럼 StackOverflow 에 대한 여러 게시물을 검토 한 후에도 주어진 기간 (내 경우 30 일 롤링 평균)을 기준으로 롤링 평균을 계산하는 방법을 알 수 없습니다.DAX/PowerBI에서 롤링 평균을 계산하려면 어떻게해야합니까?

나도 동일하거나이 정말 비슷한 옹호 뭔가가 본 게시물의 대부분 :

Rolling Sum := 
CALCULATE (
    [Sales], 
    FILTER (
     ALL (Sales), 
     [Date] 
      >= MAX (Sales[Date]) - 365 
      && [Date] <= MAX (Sales[Date]) 
    ) 
) 

을 (코드 this post에서 촬영) ... 그럼에도 불구하고, 나는 수없는 것 적절한 값을 얻으려면. 내 경우

, 나는 다음과 같습니다 주어진 대출 (열)

  • 대출 수 (측정)
  • 닫는 길이 (열)에 대한

    1. "마감일"- 시간의 길이를 (일)로 대출을 마감 할 것입니다.

    내가 원하는 것은 주어진 날에 대한 평균 30 일 평균입니다.

    Rolling Average = 
        CALCULATE (
         SUM(Query1[Closing_Length])/[Loan Count],         
         FILTER (
          ALL (Query1),        
          [Closing Date].[Date]         
           >= MAX (Query1[Closing Date]) - 30 
           && [Closing Date] <= MAX ( Query1[Closing Date]) 
         ) 
        ) 
    

    결과를 확인하려면, 나는 한 달 간의 데이터의 가치를 검토하는 시각적 필터를 사용하고이 결과 다음과 같습니다 : 나는이 다음 코드

    enter image description here

    주 합계 행 상기 바닥; 이 기간 동안 102 건의 융자가 있었고 종결을 위해 총 3922 일이 걸렸습니다. 계산하고자하는 평균은 3922/102이며 대략 38.45 일이되어야합니다. 대신 42가 표시됩니다.

    어떻게 해결할 수 있습니까?

  • +0

    http://www.sqlbi.com/articles/rollin g-12 개월 평균/ –

    +0

    @ KrystianSakowski 아니요, 해당 게시물은 30 일 동안 롤링되지 않습니다. 그것은 'SAMEPERIODLASTYEAR' 함수를 사용하며, 롤링 30 일 동안 "동일한 기간"을 사용할 수 없습니다. 오류없이 모든 요일에 모든 기능을 사용할 수 있습니다. – daOnlyBG

    +0

    이 멤버에 대한 식 또는 데이터를 게시 할 수 있습니까? Query1 [CTC Days])? –

    답변

    3

    측정 기반 솔루션 :

    Rolling Average Measure = 
    VAR A = 
        SUMX (
         FILTER (
          ALL ('Query'), 
          'Query'[Closing Date] <= MAX ('Query'[Closing Date]) 
         ), 
         ROUND ('Query'[Closing Length], 2) 
        ) 
    VAR B = 
        SUMX (
         FILTER (
          ALL ('Query'), 
          'Query'[Closing Date] <= MAX ('Query'[Closing Date]) 
         ), 
         ROUND ('Query'[Loan Count], 2) 
        ) 
    RETURN 
        A/B 
    

    계산 된 열 기반 솔루션 :

    Rolling Average = 
    VAR CurrentDate = 'Query'[Closing Date] 
    VAR T = 
        FILTER ('Query', [Closing Date] <= CurrentDate) 
    RETURN 
        ROUND (SUMX (T, 'Query'[Closing Length])/SUMX (T, [Loan Count]), 2) 
    

    인쇄 화면 : Rolling Average Measure

    +0

    이것은 정말로 산뜻합니다. 크리스티안 - 고마워요. 그러나 두 가지 솔루션을 모두 구현하려고 시도한 후 두 가지 문제가있었습니다. 즉, 열 기반 솔루션의 경우 '순환 종속성이 감지되었습니다 : Query1 [롤링 평균]'오류가 있습니다. 측정 기반 솔루션의 경우 간단하게 메모리 부족; 시각적으로 약 5-10 분 동안 실행을 시도한 다음 마침내 내가 묻는 것을 생산할 수있는 충분한 메모리가 없다는 오류 창을 표시합니다. 둘 중 하나를 처리하는 방법에 대한 제안 사항이 있습니까? – daOnlyBG

    +0

    뭔가 잘못하고있는 것 같습니다. 내 .pbix 프로젝트를 살펴보십시오. https://www.dropbox.com/s/6godtc8h4vre1c7/tst.pbix?dl=0 또한 PBI를 최신 버전으로 업데이트하십시오. 도움이 더 필요하면 알려주세요. –

    +0

    두 파일 사이에 눈에 띄는 차이점 중 하나는'Loan Count '는 끝 부분에있는 열이고 반면에 광산에서는 대책이라는 점입니다. ETL에는 여러 개의 대출 번호와 각 대출 번호가 있습니다. 따라서 'Loan Count'는 실제로 COUNT ('Query1'[LoanNumber]) '로 설정된 측정 값입니다. 고유 한 날짜의 '결산 날짜'열이있는 다른 테이블을 만든 다음 해당 마감 날짜와 관련된 모든 대출 수가 포함 된 다른 열을 작성하려고했습니다. 나는 후자와 고투하고있다. – daOnlyBG

    관련 문제