Forum Discussion

po's avatar
po
Post Prodigy
7 years ago
Solved

Average % and Minimum %

Hi,   Have data below for each day of week for a shop and have 7 days of data for each shop each week.   Can calculate normal % age o.k but wondering how best to calculate what the average and mi...
  • Anonymous's avatar
    Anonymous
    7 years ago

    Ok, I think I have a solution. I hope I am not misunderstanding or making bad assumptions about your data structure. I have mocked up some sample data for 2 stores, A and B. Store A has two weeks of data and store B has one week of data. In the data source, there is one record per day, per store as we clarified:

     

    Next, due of the grain of the data, we can add a calculated column for our % calc into the Power BI dataset. Typically, having % calculation columns can lead to issues with aggregation, but for our purposes we can leverage this:

     

    I also added a "Week" calculated column based on the WEEKNUM function that we will need to use later on as well.

     

    To get our Min % calculation, we will rely on this % calculated column we just created. Here is what I used for the syntax, which resulted in what I expected for that value:

     

    Min % per Store per Week = MINX(FILTER(FILTER(ALL(Data),Data[Store] = SELECTEDVALUE(Data[Store])),Data[Week]=SELECTEDVALUE(Data[Week])),Data[% Column])
     
    The Average % has a couple of additional steps. Basically, we need to create a Numerator and Denominator value per store per week. Here is what I used for those:
     
    Num per Store per Week = SUMX(FILTER(FILTER(ALL(Data),Data[Store] = SELECTEDVALUE(Data[Store])),Data[Week]=SELECTEDVALUE(Data[Week])),Data[Num])
     
    Denom per Store per Week = SUMX(FILTER(FILTER(ALL(Data),Data[Store] = SELECTEDVALUE(Data[Store])),Data[Week]=SELECTEDVALUE(Data[Week])),Data[Denom])
     
    Using those two fields, we can create our Avg % per store per week measure:
     
    Avg % per Store per Week = [Num per Store per Week] / [Denom per Store per Week]
     
    And here is the final output:
     
    Let me know if this is helpful/works for you.
     
    Ben