SOLVED

DAX Question

Brass Contributor

I have a pivot table created through the data model. I am using measures on the pivot as columns.
Actual and Active are measures.
I want to calculate the total of Actuals where Active >0.
What DAX formula to use ? I couldn't use calculate as filters didn't take >0 as a filter. Thanks in advance!

Imi_Jay_0-1654569174940.png

 

10 Replies

@Imi_Jay Like this perhaps?

Riny_van_Eekelen_0-1654581436675.png

Measure used:

 

=CALCULATE(SUMX(Table1,Table1[Actual]),Table1[Active]>0)

 

 

=CALCULATE(sumx(Table1,Table1[Actual]),Table1[Active]>0)

@Imi_Jay 

For such model

image.png

assuming you [Actual] and [Active] measures are like

Actual:=SUM( Table1[Actual value] )
Active:=SUM( Table1[Active value] )

Actual with totals for Active only could be

Actual Active :=
IF (
    HASONEVALUE ( Table1[Active value] ),
    [Actual],
    CALCULATE ( [Actual], Table1[Active value] > 0 )
)
Sorry I took long to trail this. I get this error message,
This formula is invalid or incomplete: 'Calculation error in measure 'Data_AO'[Current enrolment]: A function 'CALCULATE' has been used in a True/False expression that is used as a table filter expression. This is not allowed.'.

Data_AO is your Table 1.

This is what I tried before which didn't work
My measure are different to what you have produced. Apologies I didn't explain the data set well. In the data set there is a column "Status" which has "active and completed as status.

Hence my measure are as follows,
Measure "Active" = CALCULATE(COUNT(Data_AO[Student]),Data_AO[Status]="Active")
Measure "Complete" = CALCULATE(COUNT(Data_AO[Student]),Data_AO[Status]="Complete")

There is no column as such "Active" or complete. In that case how can I write the formula. That's where I'm stuck. Thanks for the help!

@Imi_Jay 

And what is Actual - is that column or measure and how do you calculate it?

Actual is also a measure ,
Actual = Measure "Active" + Measure "Complete".

Business scenario here is , this data set includes prehistorical data. Not always a group has active students in it. My aim is to aggregate the Actuals when the Active column / measure has a value.
best response confirmed by Imi_Jay (Brass Contributor)
Solution

@Imi_Jay 

Perhaps like this

image.png

where

# of Active :=
CALCULATE (
    COUNT ( Data_AO[Student] ),
    Data_AO[Status] = "Active"
)

////////////
# of Complete :=
CALCULATE (
    COUNT ( Data_AO[Student] ),
    Data_AO[Status] = "Complete"
)

///////////
# of Actual :=
[# of Active] + [# of Complete]

//////////
# of Active Actual :=
IF (
    HASONEVALUE ( Data_AO[Group No] ),
    [# of Actual],
    SUMX (
        SUMMARIZE (
            Data_AO,
            Data_AO[Group No],
            "actives", CALCULATE ( COUNTROWS ( Data_AO ), Data_AO[Status] = "Active" ),
            "completed", CALCULATE ( COUNTROWS ( Data_AO ), Data_AO[Status] = "Complete" )
        ),
        IF ( [actives], [actives] + [completed], 0 )
    )
)

Perfect, it worked although I might need to sit and understand the formulas.

@Imi_Jay , glad to help. You may play with DAX Studio for better understanding of how formula works, e.g. evaluate SUMMARIZE only, etc.

Thanks will do
1 best response

Accepted Solutions
best response confirmed by Imi_Jay (Brass Contributor)
Solution

@Imi_Jay 

Perhaps like this

image.png

where

# of Active :=
CALCULATE (
    COUNT ( Data_AO[Student] ),
    Data_AO[Status] = "Active"
)

////////////
# of Complete :=
CALCULATE (
    COUNT ( Data_AO[Student] ),
    Data_AO[Status] = "Complete"
)

///////////
# of Actual :=
[# of Active] + [# of Complete]

//////////
# of Active Actual :=
IF (
    HASONEVALUE ( Data_AO[Group No] ),
    [# of Actual],
    SUMX (
        SUMMARIZE (
            Data_AO,
            Data_AO[Group No],
            "actives", CALCULATE ( COUNTROWS ( Data_AO ), Data_AO[Status] = "Active" ),
            "completed", CALCULATE ( COUNTROWS ( Data_AO ), Data_AO[Status] = "Complete" )
        ),
        IF ( [actives], [actives] + [completed], 0 )
    )
)

View solution in original post