Forum Discussion

kotarosai's avatar
kotarosai
Helper II
6 years ago
Solved

Rolling Average: Stop Date

I feel this is close, but please find the formula for a 20 day rolling average below. The measure actually works great and is accurate, except for the fact that when plotted on a line chart, it goes past beyond the [Latest Date Loaded] which is also posted below. Any idea on why it does not cut off on the [Latest Date Loaded]? The 'Sales Result'[CAS_Bonus_date__c] is related to the date table field of 'Date Table'[Date] as well. I appreciate your feedback, thanks!

 

 

Total Sales = SUM('Sales Result'[Net_Sales_Units__c])

 

 

 

Latest Date Loaded = VAR X = SUMMARIZE(ALL('Sales Result'),'Sales Result'[Account],"M",CALCULATE(MAX('Sales Result'[CAS_Bonus_Date__c]),'Sales Result'[RecordTypeId]="0126g000000O4VdAAK",'Sales Result'[Region__c]<>"Specialty Pharmacy"))
RETURN MAXX(x,[M])

 

 

 

4 Week Moving Average Chart = 
CALCULATE(
    [Total Sales],
    DATESINPERIOD('Date Table'[Date],LASTDATE('Date Table'[Date]),-20,DAY),
    FILTER(ALLSELECTED('Date Table'),'Date Table'[Working Day] = 1 &&
    'Date Table'[Date] <= [Latest Date Loaded]))
    /
CALCULATE(
    DISTINCTCOUNT('Date Table'[Date]),
    DATESINPERIOD('Date Table'[Date],LASTDATE('Date Table'[Date]),-20, DAY),
    FILTER(ALLSELECTED('Date Table'),'Date Table'[Working Day] = 1 &&
    'Date Table'[Date] <= [Latest Date Loaded]))

 

 

 

  • hi kotarosai 

    You need to create a IF conditional in the measure as below:

    4 Week Moving Average Chart =
    IF(
    MAX('Sales Result'[CAS_Bonus_date__c])<=[Latest Date Loaded]
    &&MAX('Sales Result'[CAS_Bonus_date__c])<>BLANK(),
    CALCULATE(
    [Total Sales],
    DATESINPERIOD('Date Table'[Date],LASTDATE('Date Table'[Date]),-20,DAY),
    FILTER(ALLSELECTED('Date Table'),'Date Table'[Working Day] = 1 &&
    'Date Table'[Date] <= [Latest Date Loaded]))
    /
    CALCULATE(
    DISTINCTCOUNT('Date Table'[Date]),
    DATESINPERIOD('Date Table'[Date],LASTDATE('Date Table'[Date]),-20, DAY),
    FILTER(ALLSELECTED('Date Table'),'Date Table'[Working Day] = 1 &&
    'Date Table'[Date] <= [Latest Date Loaded])))

     

    or

     

    4 Week Moving Average Chart =
    IF(
    MAX('Sales Result'[CAS_Bonus_date__c])<=[Latest Date Loaded]
    &&MAX('Sales Result'[CAS_Bonus_date__c])<>BLANK(),
    CALCULATE(
    [Total Sales],
    DATESINPERIOD('Date Table'[Date],LASTDATE('Date Table'[Date]),-20,DAY),
    FILTER(ALLSELECTED('Date Table'),'Date Table'[Working Day] = 1 &&
    'Date Table'[Date] <= [Latest Date Loaded]))
    /
    CALCULATE(
    DISTINCTCOUNT('Date Table'[Date]),
    DATESINPERIOD('Date Table'[Date],LASTDATE('Date Table'[Date]),-20, DAY),
    FILTER(ALLSELECTED('Date Table'),'Date Table'[Working Day] = 1 &&
    'Date Table'[Date] <= [Latest Date Loaded])))
     
     
    Regards,
    Lin

3 Replies

  • Please let me know if there are any other details that may help troubleshoot as well. Thanks!

  • v-lili6-msft's avatar
    v-lili6-msft
    Community Support

    hi kotarosai 

    You need to create a IF conditional in the measure as below:

    4 Week Moving Average Chart =
    IF(
    MAX('Sales Result'[CAS_Bonus_date__c])<=[Latest Date Loaded]
    &&MAX('Sales Result'[CAS_Bonus_date__c])<>BLANK(),
    CALCULATE(
    [Total Sales],
    DATESINPERIOD('Date Table'[Date],LASTDATE('Date Table'[Date]),-20,DAY),
    FILTER(ALLSELECTED('Date Table'),'Date Table'[Working Day] = 1 &&
    'Date Table'[Date] <= [Latest Date Loaded]))
    /
    CALCULATE(
    DISTINCTCOUNT('Date Table'[Date]),
    DATESINPERIOD('Date Table'[Date],LASTDATE('Date Table'[Date]),-20, DAY),
    FILTER(ALLSELECTED('Date Table'),'Date Table'[Working Day] = 1 &&
    'Date Table'[Date] <= [Latest Date Loaded])))

     

    or

     

    4 Week Moving Average Chart =
    IF(
    MAX('Sales Result'[CAS_Bonus_date__c])<=[Latest Date Loaded]
    &&MAX('Sales Result'[CAS_Bonus_date__c])<>BLANK(),
    CALCULATE(
    [Total Sales],
    DATESINPERIOD('Date Table'[Date],LASTDATE('Date Table'[Date]),-20,DAY),
    FILTER(ALLSELECTED('Date Table'),'Date Table'[Working Day] = 1 &&
    'Date Table'[Date] <= [Latest Date Loaded]))
    /
    CALCULATE(
    DISTINCTCOUNT('Date Table'[Date]),
    DATESINPERIOD('Date Table'[Date],LASTDATE('Date Table'[Date]),-20, DAY),
    FILTER(ALLSELECTED('Date Table'),'Date Table'[Working Day] = 1 &&
    'Date Table'[Date] <= [Latest Date Loaded])))
     
     
    Regards,
    Lin
    • kotarosai's avatar
      kotarosai
      Helper II

      Goodness, I was way overthinking it. Thanks for your support Lin!