Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
1 year ago
Solved

Grouped summaries with conditional filtering

We would like to achieve the below using the import mode in Power BI. We have already achieved the one in BOLD using visual filter. I need your help to achieve the outer query. Please kindly help  S...
  • mark_endicott's avatar
    mark_endicott
    1 year ago

    Anonymous - If the answers you have given me are true and all your data lives in the CBAM_Goods_InScope table then the DAX for a Dynamic measure I gave you earlier works. I have copied it below again:

    VAR Threshold = [SelectedThreshold]
    
    VAR HighValueEntries =
        CALCULATETABLE (
            VALUES ( 'CBAM_Goods_InScope'[EntryIdentifier] ),
            FILTER (
                ADDCOLUMNS (
                    VALUES ( 'CBAM_Goods_InScope'[EntryIdentifier] ),
                    "@CustomsValue", CALCULATE ( SUM ( 'CBAM_Goods_InScope'[CustomsValue] ) )
                ),
                [@CustomsValue] > Threshold
            )
        )
    
    RETURN
        CALCULATE (
            SUM ( 'CBAM_Goods_InScope'[SupplementaryUnitQty] ),
            KEEPFILTERS ( 'CBAM_Goods_InScope'[EntryIdentifier] IN HighValueEntries )
        )

    I will repeat, you cannot do this dynamically within a physical DAX calculated table, because they do not re-calculate every time a parameter changes, a.k.a they are static. 

     

    If you want this to be dynamic, then you will have to use a measure. Use the DAX I have given you above. It creates a virtual table, based on the selectedThreshold, and the SupplementaryUnitQty is then calculated over this table. It is the most optimal and performance efficient version of this calculation you will get. 

     

    I am attaching my file so you can investigate it working, and below are some screenshots to show it dynamically calculating based on the value in the slicer. 

     

    If I answered your question please mark my post as the solution, it helps others with the same challenge find the answer!