Forum Discussion

JarnoVisser's avatar
JarnoVisser
Icon for Helper I rankHelper I
7 years ago
Solved

Summarise table with condition

Hello

 

I have a transaction table with the following data:

 

Transaction dateAmountUrgencyCustomer
1-1-201750higha
30-5-2017100mediuma
30-9-201730lowa
1-1-201845mediuma
20-2-201855lowa

 

I want to summarise the data per year per urgency. Besides that each customer should be allocated to the transaction with the highest urgency within a year.

 

So finally I need to have:

 

 20172018
High1800
Medium0100
Low00

 

I would appreciate your help!

Regards,

Jarno

  • AkhilAshok's avatar
    AkhilAshok
    7 years ago

    If you follow the Star Schema approach which LivioLanzo showed, then you can also use the below Calculated column HighestUrgencyID in Data table, and create a relationship between Urgency[UrgencyID] & Data[HighestUrgencyID]. This way your measure will be just SUM(Data[Amount]).

     

    HighestUrgencyID =
    VAR TransactionYear =
        RELATED ( 'Calendar'[Year] )
    VAR CurrentCustomer = 'Data'[Customer]
    RETURN
        CALCULATE (
            MAX ( 'Data'[UrgencyID] ),
            FILTER (
                'Data',
                'Data'[Customer] = CurrentCustomer
                    && RELATED ( 'Calendar'[Year] ) = TransactionYear
            )
        )

5 Replies

  • Hi JarnoVisser

     

    try like this:

     

    Measure =
    IF (
        HASONEVALUE ( Urgencies[Urgency] ),
        SUMX (
            VALUES ( 'Calendar'[Year] ),
            SUMX (
                VALUES ( Customers[Customer] ),
                IF (
                    CALCULATE (
                        MAX ( Data[Urgency ID] ),
                        ALL ( Urgencies )
                    ) = SELECTEDVALUE ( Urgencies[Urgency ID] ),
                    CALCULATE (
                        SUM ( Data[Amount] ),
                        ALL ( Urgencies )
                    ),
                    0
                )
            )
        )
    )

     

     

     

  • v-yulgu-msft's avatar
    v-yulgu-msft
    Icon for Microsoft Employee rankMicrosoft Employee

    Hi JarnoVisser,

     

    Add calculated columns:

    Rank =
    IF ( Table2[Urgency] = "High", 1, IF ( Table2[Urgency] = "medium", 2, 3 ) )
    
    Sum amount =
    IF (
        Table2[Rank]
            = CALCULATE (
                MIN ( Table2[Rank] ),
                ALLEXCEPT ( Table2, Table2[Transaction date].[Year] )
            ),
        CALCULATE (
            SUM ( Table2[Amount] ),
            ALLEXCEPT ( Table2, Table2[Transaction date].[Year] )
        ),
        0
    )
    

     

    Use a Matrix to display data.

    Best regards,

    Yuliana Gu

    • JarnoVisser's avatar
      JarnoVisser
      Icon for Helper I rankHelper I

      Hi Yuliana,


      Thank you for your reply!

      It works fine for only one customer. But in my real data I have multiple customers like:

      Transaction dateAmountUrgencyCustomer
      1-1-201750higha
      30-5-2017100mediuma
      30-9-201730lowa
      1-1-201845mediuma
      20-2-201855lowa
      1-1-201750lowb
      30-5-2017100lowb
      30-9-201730lowb
      1-1-201845mediumb
      20-2-201855highb

       

      And with multiple customers it gives no amount for par example customer b in 2017. Do you have a solution for that?

      Thanks in advance!

       

      Kind regards,

      Jarno

      • AkhilAshok's avatar
        AkhilAshok
        Icon for Solution Sage rankSolution Sage

        If you follow the Star Schema approach which LivioLanzo showed, then you can also use the below Calculated column HighestUrgencyID in Data table, and create a relationship between Urgency[UrgencyID] & Data[HighestUrgencyID]. This way your measure will be just SUM(Data[Amount]).

         

        HighestUrgencyID =
        VAR TransactionYear =
            RELATED ( 'Calendar'[Year] )
        VAR CurrentCustomer = 'Data'[Customer]
        RETURN
            CALCULATE (
                MAX ( 'Data'[UrgencyID] ),
                FILTER (
                    'Data',
                    'Data'[Customer] = CurrentCustomer
                        && RELATED ( 'Calendar'[Year] ) = TransactionYear
                )
            )