cancel
Showing results for
Did you mean:

Grow your Fabric skills and prepare for the DP-600 certification exam by completing the latest Microsoft Fabric challenge.

Helper III

## STDEV DAX when using row with value 1

I am trying to get the standard deviation to develop control charts.  I was able to calculate the SUM and AVG using the below formulas and both work perfectly.  The problem is my table is using a column called Number Of Issues Reported which always has a value of 1 in it.  This is making it difficult to produce the Standard Deviation because it is coming up 0 because all the values are 1 in the column.  Is there a way to get it to calculate the Standard Deviation properly similiar to what I did below for SUM and AVG?  I would prefer this to changing the SQL query since everything else works.  Below are the working formulas and the table layout.

SUM = CALCULATE(SUMX(Table1, Table1[Number of Issues Reported]),
ALLSELECTED(Table1[Month]))

AVG = CALCULATE(SUMX(Table1, Table1[Number of Issues Reported])/DISTINCTCOUNT(Table1[Month]),
ALLSELECTED(Table1[Month]))

STDEV = CALCULATE(STDEVX.S(Table1, Table1[Number of Issues Reported]),
ALLSELECTED(FACTS[Month]))
NOT WORKING and I understand why but dont know how to tweak.  It is taking that 1 value and giving me a 0 StDev because all the rows have that 1.

Sample table layout
 Month Major Number of Issues Reported 2020-1 AAA 1 2021-1 BBB 1 2019-2 CCC 1 2018-5 AAA 1 2020-2 BBB 1 2021-3 CCC 1 2022-3 AAA 1 2019-4 BBB 1 2018 CCC 1

1 ACCEPTED SOLUTION
Solution Sage

Hi:

Please see file. You willl notice I have summary table in and have set up a date table. I made up the data points but results appear to work as intended.  What do you think?

10 REPLIES 10
Solution Sage

Hi:

Please see file. You willl notice I have summary table in and have set up a date table. I made up the data points but results appear to work as intended.  What do you think?

Helper III

That would work perfectly if I wasnt trying to insert the STDEV into every column of month that the end-user selects.  I need that value in each column for month to develop the UCL and LCL.  I went in an rewrote the query and it looks like it now works ok so I can close this out.  Basically instead of having each row represent 1, I rewrote the query in SQL to group the totals.  I then was able to calculate the STDEV properly and then the UCL and LCL to get this functioning.  Thanks so much for taking the time to help me with this.

Solution Sage

I'm happy it is working for you with your extra touch! You are welcome!

Solution Sage

Hi:

You could make a summary table and then do STD.P on a column after the results have been aggregated. But do you want STD on number of observations or maybe some other column. Your STD will be more useful if everything is always the same.

New Table:

SUMMARIZE(Table1, Table1[Month], Table1[Major]),

"No. Issues", SUM(Table1[Number of Issues Reported] )

Issues STD = = STDEV.P(Summary_Tble,Summary_Tble[No. Issues])

It could help you to have a Date Table all set up and record your fact table entries by date.

* Note on STD below:

STDEV.P assumes that the column refers to the entire population. If your data represents a sample of the population, then compute the standard deviation by using STDEV.S

Helper III

I am trying your code out now and getting that dreaded "The expression refers to multiple columns. Multiple columns cannot be converted to a scalar value."  Assuming it is something in my setup of the table?  I have this linked from a SQL database and it is a stored procedure connected to multiple tables.  Probably not why this is happening but unsure.  I mirrored exactly what you had written so it has to be something on my end.

Solution Sage

Hi:

If the number of issues is always one/event than there can't be any STD becasuse everything is always one. Are you trying to get STD on monthly or weekly issues? Normally the STD would work something like this:

Test 1  - result 40

Test 2 - result 50

Test 3 - result  42

Sum = 132

Avg = 44

STD(pop) = 4.32

But when each result is one the STD = 0.

I hope my reply makes sense to you.

Thank you,

Helper III

It does.  What I was hoping was to get the standard deviation from the sum of each month selected in the slicer.  So for instance if the end-user selects the below:

1-2020 with 1000

2-2020 with 2000

3-2020 with 1500

Then in simple form calculate the standard deviation of those three which would be STDEV(1000, 2000, 1500)

Solution Sage

Hi:

Maybe your sample data isn't matching your latest example. I see 1 for Jan 2020 but you mention it is 1000? Do you have sample data to share? Just something to represent this issue so I can see those different totals. Thanks

Helper III

Thanks for the response.  I will try your solution and respond in the am.  STDEV on Issues and have the STDEV calculate based off the end-users date selection.  My average and Sum works this way but see why the STDEV doesnt.  Again, will try what you suggested tomorrow morning.  Thanks again.

Helper III

Yes Sorry.  I am doing a poor job at explaining.  Below is a sample of the data layout and a quick pivot of what I want it to do.

LAYOUT SAMPLE

 MONTH MAJOR ISSUES 2022-2 AAA 1 2022-2 BBB 1 2022-3 AAA 1 2022-3 BBB 1 2022-4 AAA 1 2022-4 BBB 1 2022-5 AAA 1 2022-5 BBB 1 2022-2 AAA 1 2022-2 BBB 1 2022-3 AAA 1

LAYOUT AND CALC I need that Standard Dev to create Upper and Lower Control Limits for the chart.

 MAJOR 2022-2 2022-3 2022-4 2022-5 Grand Total AAA 2 5 5 7 19 BBB 3 5 6 5 19 Grand Total 5 10 11 12 38 STDEVIATION AAA 1.26 BBB 1.89