Forum Discussion
Including 0 values when calculating STDEV
Hi epicleo
What I would suggest doing is rather than to try and figure out when there is no data I would solve it by doing the following.
I would left join from your DimDate table, to your Fact (Source Data) table. By doing a left join from the DimDate table it will then bring in all the dates. This will then allow your data to be blank when there is no data.
Then based on your requirements you can then use the same measures and not it should show zero for the months where there is no data when you put in your Date column from your DimDate table.
GilbertQ Thank you for the help; that would be a great work around except that I m dealing with more than 1000 SKUs so my query would produce a few million rows given we transact on a daily basis and are reporting on 3 to 5 year period.
I thought about manaully calculating standard deviation instead of using the DAX STDEVX.P formula and found these 2 as a reference on how to do so, the first being closest to my need:
https://community.powerbi.com/t5/Desktop/Problem-with-STDEV/td-p/19731
So, given my detail above, I attempted to make a go of it, but still am not getting the correct number. My code is:
STDEVX2 =
var Averageprice=[6M Sales]
var months=6
return
SQRT(
DIVIDE(SUMX(
FILTER(ALL(DimDate),
DimDate[Month ID]<=(MAX(DimDate[Month ID])-1) &&
DimDate[Month ID]>=(MAX(DimDate[Month ID])-6)
),
(iContractsChargebacks[SumOfOrderQuantity]-Averageprice)^2),
months
)
)
I am determined to figure this out and I appreciate all your help with this. Thank you in advance!!!
- GilbertQ9 years agoSuper User
What I would suggest doing is if you can just get a dataset for the months that you are testing, and by using the merge to see it can get to the number you are expecting to be the result?
This should then ensure that the theory is correct. Which is important to know that you can calculate the final number.
Then if the above works, if you had to bring in all the data, how large would the data model be? As there are always ways to optimize the data model. And I have worked with large datasets with a few million rows and it has still been very fast both when developing as well as once deployed to the Power BI Service.
- Ortignano8 years agoHelper II
Hi,
did you was able to find a solution? I'm facing with a similar probelm (I would calculate standard deviation on latest 52 weeks but I have some week with no data)...
- itsanshul7 years agoNew Member
I was facing a similar problem while trying to calculate the coefficient of variation (Std. /Mean) by SKUS from sales data. I could use the Pivot-Unpivot function in Power Query editor to to do away with the problem of months with missing sales:
1) Export the data with any calculated columns
2) Reimport the data so that the calculated columns are also available in the power query editor
3) Pivoted the data by months
4) Replaced null values with 0s
5) Unpivoted the data
6) Close and apply the query
7) Add a calculated column for the coefficient of variation using the formula CV = CALCULATE(STDEV.P(Table1[Value]),ALLEXCEPT(Table1,Table1[Product]))/CALCULATE(AVERAGE(Table1[Value]),ALLEXCEPT(Table1,Table1[Product]))
Thus zero sales for the missing months will also be considered both for Standard Deviation and Mean.