Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Enhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.

Reply
Anonymous
Not applicable

Standard deviation - Days with no transaction

Hello, Stdev.P doesn't take into account when there is no record on a date for an item.

In this case, Item C has transactions on Jan 1st and 3rd, so it returns the Stdev for those 2 days (2,5).

The calculus is wrong since there should be a 0 value for Jan 2nd taken into account in the calculus.

The result would then be 4,082.

 

guillaume_boism_3-1667314773771.png

 

Is there any workaround in DAX to do it? I'm able to do it in PQ with a full outer join but it is way to heavy when you have a big data set.

 

My data Data set.

 

guillaume_boism_0-1667314557868.png       guillaume_boism_1-1667314580380.png

 

Thank you

 

 

1 ACCEPTED SOLUTION
Anonymous
Not applicable

Hi @Anonymous ,

I have created a simple sample, please refer to it to see if it helps you.

Create 2 measures.

Measure2 =
VAR _MAXDATE =
    MAXX (
        FILTER ( ALL ( 'Table' ), 'Table'[item] = SELECTEDVALUE ( 'Table'[item] ) ),
        'Table'[date]
    )
VAR _MINDATE =
    MINX (
        FILTER ( ALL ( 'Table' ), 'Table'[item] = SELECTEDVALUE ( 'Table'[item] ) ),
        'Table'[date]
    )
VAR _DATEDIFF =
    DATEDIFF ( _MINDATE, _MAXDATE + 1, DAY )
VAR _ave =
    AVERAGEX (
        FILTER ( ALL ( 'Table' ), 'Table'[item] = SELECTEDVALUE ( 'Table'[item] ) ),
        'Table'[qTY]
    )
VAR _re =
    (
        ( MAX ( 'Table'[qTY] ) - _ave ) ^ 2 / _DATEDIFF
    )
RETURN
    _re
Measure3 =
VAR _MAXDATE =
    MAXX (
        FILTER ( ALL ( 'Table' ), 'Table'[item] = SELECTEDVALUE ( 'Table'[item] ) ),
        'Table'[date]
    )
VAR _MINDATE =
    MINX (
        FILTER ( ALL ( 'Table' ), 'Table'[item] = SELECTEDVALUE ( 'Table'[item] ) ),
        'Table'[date]
    )
VAR _COUNT =
    COUNTAX (
        FILTER ( ALL ( 'Table' ), 'Table'[item] = SELECTEDVALUE ( 'Table'[item] ) ),
        'Table'[date]
    )
VAR _DATEDIFF =
    DATEDIFF ( _MINDATE, _MAXDATE + 1, DAY )
VAR _VALUE =
    STDEVX.P (
        FILTER ( ALL ( 'Table' ), 'Table'[item] = SELECTEDVALUE ( 'Table'[item] ) ),
        'Table'[qTY]
    )
VAR _ave =
    AVERAGEX (
        FILTER ( ALL ( 'Table' ), 'Table'[item] = SELECTEDVALUE ( 'Table'[item] ) ),
        'Table'[qTY]
    )
VAR _re =
    SUMX (
        FILTER ( ALL ( 'Table' ), 'Table'[item] = SELECTEDVALUE ( 'Table'[item] ) ),
        [Measure2]
    )
VAR _sqrt =
    SQRT ( _re )
RETURN
    IF ( _COUNT = _DATEDIFF, _VALUE, IF ( _DATEDIFF > _COUNT, _sqrt, BLANK () ) )

 

vpollymsft_0-1667370035728.png

Best Regards

Community Support Team _ Polly

 

If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

View solution in original post

4 REPLIES 4
Anonymous
Not applicable

Hi @Anonymous ,

I have created a simple sample, please refer to it to see if it helps you.

Create 2 measures.

Measure2 =
VAR _MAXDATE =
    MAXX (
        FILTER ( ALL ( 'Table' ), 'Table'[item] = SELECTEDVALUE ( 'Table'[item] ) ),
        'Table'[date]
    )
VAR _MINDATE =
    MINX (
        FILTER ( ALL ( 'Table' ), 'Table'[item] = SELECTEDVALUE ( 'Table'[item] ) ),
        'Table'[date]
    )
VAR _DATEDIFF =
    DATEDIFF ( _MINDATE, _MAXDATE + 1, DAY )
VAR _ave =
    AVERAGEX (
        FILTER ( ALL ( 'Table' ), 'Table'[item] = SELECTEDVALUE ( 'Table'[item] ) ),
        'Table'[qTY]
    )
VAR _re =
    (
        ( MAX ( 'Table'[qTY] ) - _ave ) ^ 2 / _DATEDIFF
    )
RETURN
    _re
Measure3 =
VAR _MAXDATE =
    MAXX (
        FILTER ( ALL ( 'Table' ), 'Table'[item] = SELECTEDVALUE ( 'Table'[item] ) ),
        'Table'[date]
    )
VAR _MINDATE =
    MINX (
        FILTER ( ALL ( 'Table' ), 'Table'[item] = SELECTEDVALUE ( 'Table'[item] ) ),
        'Table'[date]
    )
VAR _COUNT =
    COUNTAX (
        FILTER ( ALL ( 'Table' ), 'Table'[item] = SELECTEDVALUE ( 'Table'[item] ) ),
        'Table'[date]
    )
VAR _DATEDIFF =
    DATEDIFF ( _MINDATE, _MAXDATE + 1, DAY )
VAR _VALUE =
    STDEVX.P (
        FILTER ( ALL ( 'Table' ), 'Table'[item] = SELECTEDVALUE ( 'Table'[item] ) ),
        'Table'[qTY]
    )
VAR _ave =
    AVERAGEX (
        FILTER ( ALL ( 'Table' ), 'Table'[item] = SELECTEDVALUE ( 'Table'[item] ) ),
        'Table'[qTY]
    )
VAR _re =
    SUMX (
        FILTER ( ALL ( 'Table' ), 'Table'[item] = SELECTEDVALUE ( 'Table'[item] ) ),
        [Measure2]
    )
VAR _sqrt =
    SQRT ( _re )
RETURN
    IF ( _COUNT = _DATEDIFF, _VALUE, IF ( _DATEDIFF > _COUNT, _sqrt, BLANK () ) )

 

vpollymsft_0-1667370035728.png

Best Regards

Community Support Team _ Polly

 

If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

Anonymous
Not applicable

Hello, the result is not 4,082. Thank you

 

guillaume_boism_0-1668090995093.png

 

johnt75
Super User
Super User

Try

Qty Std Dev =
STDEVX.P (
    VALUES ( 'Date'[Date] ),
    COALESCE ( CALCULATE ( SUM ( 'Table'[Qty] ) ), 0 )
)
Anonymous
Not applicable

Hello @johnt75 , I get zeros... Thank you

 

guillaume_boism_0-1667318281138.png

 

Helpful resources

Announcements
July 2025 community update carousel

Fabric Community Update - July 2025

Find out what's new and trending in the Fabric community.

July PBI25 Carousel

Power BI Monthly Update - July 2025

Check out the July 2025 Power BI update to learn about new features.