Forum Discussion

1001's avatar
1001
Icon for Resolver II rankResolver II
3 years ago
Solved

I Don't Understand a DAX Component.

Hi, I have this DAX SUMMARIZE statement but I don't understand what the final component of it is telling me (in bold) [ABS Diff].

 

Gross Variance = SUMX(SUMMARIZE('Group Mapping','Group Mapping'[Group2],"ABS Diff",ABS(SUM('Orders'[Ordered])-SUM('Deliveries'[Delivered]))),[ABS Diff])

 

Thanks.

  • Abs Diff inside SUMMARIZE is a virtual column. Outside that, it is a virtual column being aggregated.  You cannot output a column as is in a measure - it should always return a scalar value ( min, max, sum, average, fist text string, last text string, earliest date, latest date, etc. ), not multiple rows.

3 Replies

  • Hi 1001 

    Gross Variance =
    SUMX (
        SUMMARIZE (
            'Group Mapping',
            'Group Mapping'[Group2],
            "ABS Diff", ABS ( SUM ( 'Orders'[Ordered] ) - SUM ( 'Deliveries'[Delivered] ) )
        ),
        [ABS Diff]
    )
    

     

    Hi 1001 ,

    X functions are iterator functions. They iterate over a table or a virtual table (an expression that returns a table). What is wrapped in SUMMARIZE function is a virtual table with a column called ABS Diff for each distinct item in Group2. SUMX now then sums up ABS Diff. If there are two distinct Group2 items based on the current filter context wherein item1 is 5 and item2 is 7, SUMX returns 12.

    • 1001's avatar
      1001
      Icon for Resolver II rankResolver II

      I think the final ABS Diff is outputting my calculation as a column. Is that correct? 

       

      • danextian's avatar
        danextian
        Icon for Super User rankSuper User

        Abs Diff inside SUMMARIZE is a virtual column. Outside that, it is a virtual column being aggregated.  You cannot output a column as is in a measure - it should always return a scalar value ( min, max, sum, average, fist text string, last text string, earliest date, latest date, etc. ), not multiple rows.