Forum Discussion

cottrera's avatar
cottrera
Post Prodigy
2 years ago
Solved

Distributed Averages

Hi , I have the following table

Unit ReferenceJob#
187712012
188029903
188322638
188322662
188452691
189302275
267689550
268691041
268700602
269250383
348251499
348251506
348252562
348471047
348532055
348536396
348633522
348633530
348645402
348817374
348821284
427545869
427545934
427545942
427856620
427900956
428090714
428582828
507036834
507207112
507289277
50

7302384

 

 

Which contains Unit references and Job numbers.   The units will normally have multiple jobs against them.  I am after a DAX function or a power query solution to score based on the number of repairs using the following criteria. 

 

ScoreCalculation
5Greater than twice above average
4Between above average and twice above average 
3Average
2Between Average and twice below average
1Between zero and twice below average
1Zero

 

thank you

 

Richard

 

  • Hi cottrera ,

     

    You can refer to below table expression.

     

     

     

    Score = 
    VAR TempTable = ADDCOLUMNS(ALL('Table'[Unit Reference]),"Repairs",CALCULATE(COUNTROWS('Table')))
    VAR AverageRepairs = ROUND(AVERAGEX(TempTable,[Repairs]),0)
    VAR ScoreTable = 
        SELECTCOLUMNS(
            {
                ("Greater then twice above average",5,AverageRepairs*2+1,99999),
                ("Between above average and twice above average",4,AverageRepairs+1,AverageRepairs*2),
                ("Average",3,AverageRepairs,AverageRepairs),
                ("Between 5 and average",2,6,AverageRepairs-1),
                ("Between zero and 5",1,1,5),
                ("Zero",1,0,0)
            },
            "Score Name",[Value1],
            "Score",[Value2],
            "Min",[Value3],
            "Max",[Value4]
        )
    RETURN
    ADDCOLUMNS(
        TempTable,
        "Score Name",
            MAXX(FILTER(ScoreTable,[Min]<=[Repairs] && [Repairs]<=[Max]),[Score Name]),
        "Score",
            MAXX(FILTER(ScoreTable,[Min]<=[Repairs] && [Repairs]<=[Max]),[Score])
    )

     

     

    Demo - Distributed Averages.pbix

     

     

    Did I answer your question? If yes, pls mark my post as a solution and appreciate your Kudos !

     

    Thank you~

     

     

     

     

6 Replies

  • Hi thank you for responding.  The actual dataset I am using  be provided due to company policy. However I have tried to provide some more information on what I would need the DAX to perform.

    Note: I have amended score 1 & 2

    Score MameScoreMinMax
    Greater than twice above average5> Sum repairs / count properties * 2 
    Between above average and twice above average 4Sum repairs / count propertiesSum repairs / count properties * 2
    Average Repairs 3Sum repairs / count propertiesSum repairs / count properties
    Between 5 and average25Sum repairs / count properties
    Between zero and 5105
    Zero100
    • xifeng_L's avatar
      xifeng_L
      Super User

      This information you provided is the criteria for scoring, now I want to know what expected result you need to return or I can't calculate it for you.

  • Hi based in this scaled down data set

    Unit Reference#Repairs = COUNTROWS(Repairs)
    186
    264
    3411
    427
    5019
    765
    922
    10910
    1257
    1337
    1414
    1595
    1834
    19114
    20830
    21611
    2249
    23233
    24022
    25810
    266 
    29028
    30716
    31512
    32338
    34918
    16606
    16786
    168619
    17018
    17199
    172710
    17356
    174311
    17515
    17696
    17773
    17856
    17933
    18002
    18181
    18266
    183410
    18426
    18506
    186815
    18764
    18841
    189210
    190910
    191718
    192518
    193323
    194112
    195912
    197518
    19839
    19918
    201415
    202217
    20303
    204824
    206454
    20722
    210513
    21136
    21215
    214718
    216340
    217117
    21892
    219733
    22043
    221221
    222010
    22381
    230329
    232925
    233711
    234521
    238719
    239510
    240213
    241022
    24365
    244427
    245219
    247815
    24869
    249439
    250137
    251912
    25275
    2543 
    2551 
    25696
    25771
    25855
    25935
    26502
    266810
    267652
    26848
    26923
    27172
    275913
    276723
    27758
    27839
    28085
    297314
    29991
    300416
    301227
    30204
    30386
    304646
    30549
    30623
    307024
    308856
    30966
    31036
    31117
    312924
    31372
    31453
    315329
    31614
    31799
    318722
    319513
    322816
    32361
    32444
    325215
    32607
    32789
    329434
    330117
    33275
    335123
    336915
    33772
    338511
    339312
    34001
    341820
    342610
    34344
    34423
    34502
    34681
    347617
    348413
    34924
    350910

     When added to the table I would expect the following results

    Unit ReferenceRepairsScore NameScore
    186Between 5 and average2
    264Between above average and twice above average 4
    3411Between 5 and average2
    427Between 5 and average2
    5019Between above average and twice above average 4
    765Between zero and 51
    922Between zero and 51
    10910Between 5 and average2
    1257Between 5 and average2
    1337Between 5 and average2
    1414Between zero and 51
    1595Between zero and 51
    1834Between zero and 51
    19114Between above average and twice above average 4
    20830Greater than twice above average5
    21611Between 5 and average2
    2249Between 5 and average2
    23233Greater than twice above average5
    24022Between above average and twice above average 4
    25810Between 5 and average2
    266 Zero1
    29028Greater than twice above average5
    30716Between above average and twice above average 4
    31512Between 5 and average2
    32338Greater than twice above average5
    34918Between above average and twice above average 4
    16606Between 5 and average2
    16786Between 5 and average2
    168619Between above average and twice above average 4
    17018Between 5 and average2
    17199Between 5 and average2
    172710Between 5 and average2
    17356Between 5 and average2
    174311Between 5 and average2
    17515Between zero and 51
    17696Between 5 and average2
    17773Between zero and 51
    17856Between 5 and average2
    17933Between zero and 51
    18002Between zero and 51
    18181Between zero and 51
    18266Between 5 and average2
    183410Between 5 and average2
    18426Between 5 and average2
    18506Between 5 and average2
    186815Between above average and twice above average 4
    18764Between zero and 51
    18841Between zero and 51
    189210Between 5 and average2
    190910Between 5 and average2
    191718Between above average and twice above average 4
    192518Between above average and twice above average 4
    193323Between above average and twice above average 4
    194112Between 5 and average2
    195912Between 5 and average2
    197518Between above average and twice above average 4
    19839Between 5 and average2
    19918Between 5 and average2
    201415Between above average and twice above average 4
    202217Between above average and twice above average 4
    20303Between zero and 51
    204824Between above average and twice above average 4
    206454Greater than twice above average5
    20722Between zero and 51
    210513Average3
    21136Between 5 and average2
    21215Between zero and 51
    214718Between above average and twice above average 4
    216340Greater than twice above average5
    217117Between above average and twice above average 4
    21892Between zero and 51
    219733Greater than twice above average5
    22043Between zero and 51
    221221Between above average and twice above average 4
    222010Between 5 and average2
    22381Between zero and 51
    230329Greater than twice above average5
    232925Between above average and twice above average 4
    233711Between 5 and average2
    234521Between above average and twice above average 4
    238719Between above average and twice above average 4
    239510Between 5 and average2
    240213Average3
    241022Between above average and twice above average 4
    24365Between zero and 51
    244427Greater than twice above average5
    245219Between above average and twice above average 4
    247815Between above average and twice above average 4
    24869Between 5 and average2
    249439Greater than twice above average5
    250137Greater than twice above average5
    251912Between 5 and average2
    25275Between zero and 51
    2543 Zero1
    2551 Zero1
    25696Between 5 and average2
    25771Between zero and 51
    25855Between zero and 51
    25935Between zero and 51
    26502Between zero and 51
    266810Between 5 and average2
    267652Greater than twice above average5
    26848Between 5 and average2
    26923Between zero and 51
    27172Between zero and 51
    275913Average3
    276723Between above average and twice above average 4
    27758Between 5 and average2
    27839Between 5 and average2
    28085Between zero and 51
    297314Between above average and twice above average 4
    29991Between zero and 51
    300416Between above average and twice above average 4
    301227Greater than twice above average5
    30204Between zero and 51
    30386Between 5 and average2
    304646Greater than twice above average5
    30549Between 5 and average2
    30623Between zero and 51
    307024Between above average and twice above average 4
    308856Greater than twice above average5
    30966Between 5 and average2
    31036Between 5 and average2
    31117Between 5 and average2
    312924Between above average and twice above average 4
    31372Between zero and 51
    31453Between zero and 51
    315329Greater than twice above average5
    31614Between zero and 51
    31799Between 5 and average2
    318722Between above average and twice above average 4
    319513Average3
    322816Between above average and twice above average 4
    32361Between zero and 51
    32444Between zero and 51
    325215Between above average and twice above average 4
    32607Between 5 and average2
    32789Between 5 and average2
    329434Greater than twice above average5
    330117Between above average and twice above average 4
    33275Between zero and 51
    335123Between above average and twice above average 4
    336915Between above average and twice above average 4
    33772Between zero and 51
    338511Between 5 and average2
    339312Between 5 and average2
    34001Between zero and 51
    341820Between above average and twice above average 4
    342610Between 5 and average2
    34344Between zero and 51
    34423Between zero and 51
    34502Between zero and 51
    34681Between zero and 51
    347617Between above average and twice above average 4
    348413Average3
    34924Between zero and 51
    350910Between 5 and average2


    If summaried the results would look like this

    ScoreScore NameCount or UNIT ref
    1Between zero and 543
    1Zero3
    2Between 5 and average52
    3Average5
    4Between average and twice above average 37
    5Greater than twice above average17
       


    Hope this helps



     

     

    • xifeng_L's avatar
      xifeng_L
      Super User

      Hi cottrera ,

       

      You can refer to below table expression.

       

       

       

      Score = 
      VAR TempTable = ADDCOLUMNS(ALL('Table'[Unit Reference]),"Repairs",CALCULATE(COUNTROWS('Table')))
      VAR AverageRepairs = ROUND(AVERAGEX(TempTable,[Repairs]),0)
      VAR ScoreTable = 
          SELECTCOLUMNS(
              {
                  ("Greater then twice above average",5,AverageRepairs*2+1,99999),
                  ("Between above average and twice above average",4,AverageRepairs+1,AverageRepairs*2),
                  ("Average",3,AverageRepairs,AverageRepairs),
                  ("Between 5 and average",2,6,AverageRepairs-1),
                  ("Between zero and 5",1,1,5),
                  ("Zero",1,0,0)
              },
              "Score Name",[Value1],
              "Score",[Value2],
              "Min",[Value3],
              "Max",[Value4]
          )
      RETURN
      ADDCOLUMNS(
          TempTable,
          "Score Name",
              MAXX(FILTER(ScoreTable,[Min]<=[Repairs] && [Repairs]<=[Max]),[Score Name]),
          "Score",
              MAXX(FILTER(ScoreTable,[Min]<=[Repairs] && [Repairs]<=[Max]),[Score])
      )

       

       

      Demo - Distributed Averages.pbix

       

       

      Did I answer your question? If yes, pls mark my post as a solution and appreciate your Kudos !

       

      Thank you~