Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
6 years ago
Solved

Filter with 4 possible outcomes

Hi all, I have a question regarding an combined IF-statement or maybe a swich if that is more efficient. I have this invoice data with following important collomns for this calculation (will also pro...
  • Icey's avatar
    6 years ago

    Hi Anonymous ,

     

    Please check:

     

    1. Create Columns.

    Paid? = IF ( fact_invoices[paid_at] <> BLANK (), "Already paid", "Not paid" )
    On time or late = 
    IF (
        fact_invoices[paid_at] <> BLANK ()
            && fact_invoices[paid_at] <= fact_invoices[due_date],
        "Already paid & on time",
        IF (
            fact_invoices[paid_at] <> BLANK ()
                && fact_invoices[paid_at] > fact_invoices[due_date],
            "Already late & too late",
            IF (
                TODAY () > fact_invoices[due_date],
                "Not yet paid & late",
                IF ( TODAY () < fact_invoices[due_date], "Not yet paid but customer has time" )
            )
        )
    )
    

     

    2. Create a Paid Filter table.

    Paid Filter =
    UNION (
        VALUES ( fact_invoices[Paid?] ),
        VALUES ( fact_invoices[On time or late] )
    )
    

     

    3. Create a Measure.

    Filter Measure = 
    SWITCH (
        TRUE (),
        SELECTEDVALUE('Paid Filter'[Paid?])=BLANK(),1,
        SELECTEDVALUE ( 'Paid Filter'[Paid?] ) IN VALUES ( fact_invoices[Paid?] ), IF ( 
            MAX ( fact_invoices[Paid?] ) = SELECTEDVALUE ( 'Paid Filter'[Paid?] ),
             1 
             ),
        SELECTEDVALUE ( 'Paid Filter'[Paid?] )
            IN VALUES ( fact_invoices[On time or late] ), IF (
            MAX ( fact_invoices[On time or late] ) = SELECTEDVALUE ( 'Paid Filter'[Paid?] ),
            1
        )
    )

     

    4. Put the measure above on the visuals you want to filter and set it =1.

     

    5. Test.

     

     

    Best Regards,

    Icey

     

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