Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
7 years ago
Solved

Calculate Averages by sample number

Hello, 

 

I have a dataset where i would like to caclualte the average per sample number. 

Below is how the data is displayed in the report

 

Chemical,   sample number, Value 

A,               11111,                     5

B,               11111,                     6 

C,               11111,                     4

A,               11112,                     8 

B,               11112,                     9 

C,               11112,                     10

 

I would like this to become 

 

Chemical,    sample number,  Value,        Average 

A,               11111,                         5,                   15

B,               11111,                         6,                   15

C,               11111,                         4,                   15

A,               11112,                         9,                   27

B,               11112,                         8,                   27

C,               11112,                        10,                  27

 

Please note: I would like the average to be displayed at each row in my report. I have used averagex function and it works when my table is only displaying a unique list of sample numbers but as soon as i introduce the chemical parameter, the sample numbers are no longer aggrigated and the average function retunrns the value itself as average. 

 

Any help would be appreciated. 

 

Thank you!

  • Hi Anonymous 

     

    Here is the DAX statement you can use

     

    AvgSampleNumber =
    CALCULATE (
        AVERAGE ( DataSetTabl[Value] ),
        ALLEXCEPT ( DataSetTabl, DataSetTabl[Sample number] )
    )

    Does that work for you?

8 Replies

  • Geradav's avatar
    Geradav
    Responsive Resident

    Hi Anonymous 

     

    Here is the DAX statement you can use

     

    AvgSampleNumber =
    CALCULATE (
        AVERAGE ( DataSetTabl[Value] ),
        ALLEXCEPT ( DataSetTabl, DataSetTabl[Sample number] )
    )

    Does that work for you?

    • Anonymous's avatar
      Anonymous
      Not applicable

      That worked!!  Thank you for your help. 

      I have another issue now. Sometimes the Value can be blank and if so, the formula ignores that e.g.

       

      1010101,  13

      1010101,

      1010101, 85 

      1010101,

      1010101, 31 

       

      The formula is returning 43 but i would like it to return 25.8

       

       

      • xuexi1890's avatar
        xuexi1890
        Helper I

        Hi,

         

        i think you either edit your database in the query when blank=0, then the averagex() should work.

        OR

        you can count of sample number to avoid the values being blank.

    • Anonymous's avatar
      Anonymous
      Not applicable

      Thank you all for your replies. 

       

      This did do the trick for me Geradav 

      AvgSampleNumber =
      CALCULATE (
          AVERAGE ( DataSetTabl[Value] ),
          ALLEXCEPT ( DataSetTabl, DataSetTabl[Sample number] )
      )

       

      I have another issue now where i would like to calculate the average between two dates e.g. 

      Currently its calculating the average over all sample numbers while ignoring the sample date. 

      I would like to calculate and display the average between

      2016-17

      2017-18

      2018-19

       

      If sample number date is 01/05/18, i would like the average column to display the average by calculating over all samples from 2018 only. 

       

      Any help would be appreciated!

       

       

      • Geradav's avatar
        Geradav
        Responsive Resident

        Maybe you'll need to open a separate post for that.

        And providing some sample data might help too

  • Hi,
     
    i don't think you are presenting average, but a subtotal by sample number, below DAX might work for you.
     
    Grand Total = CALCULATE(sum(Table1[Value]),all(Table1[Chemical]))
    • Anonymous's avatar
      Anonymous
      Not applicable

      Hi,

      Thank you for your reply. You're right! I forgot to divide the numbers. Below is the edited post. Thanks

       

      Before 

       

      Chemical,   sample number, Value 

      A,               11111,                     5

      B,               11111,                     6 

      C,               11111,                     4

      A,               11112,                     8 

      B,               11112,                     9 

      C,               11112,                     10

       

      I would like this to become 

       

      Chemical,    sample number,  Value,        Average 

      A,               11111,                         5,                   5

      B,               11111,                         6,                   5

      C,               11111,                         4,                   5

      A,               11112,                         9,                   9

      B,               11112,                         8,                   9

      C,               11112,                        10,                  9