Forum Discussion

bajimmy1983's avatar
bajimmy1983
Advocate V
8 years ago
Solved

NON-related Slicer (multi selection problem)

Hello again community.   Could you please help me with this simple human logic (I think), but a little tricky for DAX calculations? I have 90% of work done, but I cannot implement last logic to the...
  • bajimmy1983's avatar
    bajimmy1983
    8 years ago

    Hi all, Hi Dog again. 

     

    I could work by myself this entire afternoon and now I finally got a solution :) 

     

    What I did to resolve the Slicer Issue? (final table result as follow below):

    • Kept same data model; 
    • Created two relationships: First active between MiddleOffice table and Slicer; Second inactive between Pilot table and Slicer (final print screen below);
    • Update measures (as per below), but the main difference is inside "FC Investment in Pure Player" measure. I deactivated first relationship and then activated second one using USERELATIONSHIP function. Worked like a magic, hehe :)

    Final Relationships

     Updated measures:

    *** YTD Investment in FO = 
    IF (
        CALCULATE (
            [Invest Pilot BRL];
            ALLEXCEPT ( Pilot; Pilot[YEAR] );
            FILTER ( Pilot; Pilot[VEHICLE THROUGH] = "OTHERS" );
            FILTER ( Pilot; Pilot[MEDIA TYPE] = "MEDIA - ON" );
            FILTER ( 'Date'; 'Date'[Month Number] < MONTH ( TODAY () ) );
            FILTER (
                GlobalGroup;
                GlobalGroup[GLOBAL GROUP] <> "EXTERNAL"
                    && GlobalGroup[GLOBAL GROUP] <> "MIDDLE OFFICE"
            )
        )
            = BLANK ();
        BLANK ();
        CALCULATE (
            [Invest Pilot BRL];
            ALLEXCEPT ( Pilot; Pilot[YEAR] );
            FILTER ( Pilot; Pilot[VEHICLE THROUGH] = "OTHERS" );
            FILTER ( Pilot; Pilot[MEDIA TYPE] = "MEDIA - ON" );
            FILTER ( 'Date'; 'Date'[Month Number] < MONTH ( TODAY () ) );
            FILTER (
                GlobalGroup;
                GlobalGroup[GLOBAL GROUP] <> "EXTERNAL"
                    && GlobalGroup[GLOBAL GROUP] <> "MIDDLE OFFICE"
            )
        )
    )
    // According to PILOT data
    
    
    *** YTD Investment in MO = 
    IF (
        CALCULATE (
            [Mthy Bil];
            ALL ( PP_Slicer );
            ALLEXCEPT ( MiddleOffice; MiddleOffice[YEAR FPM]; Client[CLIENT] );
            FILTER ( 'Date'; 'Date'[Month Number] < MONTH ( TODAY () ) );
            FILTER (
                GlobalGroup;
                GlobalGroup[GLOBAL GROUP] <> "EXTERNAL"
                    && GlobalGroup[GLOBAL GROUP] <> "MIDDLE OFFICE"
            )
        )
            = BLANK ();
        BLANK ();
        CALCULATE (
            [Mthy Bil];
            ALL ( PP_Slicer );
            ALLEXCEPT ( 'Date'; 'Date'[Year] );
            FILTER ( 'Date'; 'Date'[Month Number] < MONTH ( TODAY () ) );
            FILTER (
                GlobalGroup;
                GlobalGroup[GLOBAL GROUP] <> "EXTERNAL"
                    && GlobalGroup[GLOBAL GROUP] <> "MIDDLE OFFICE"
            )
        )
    )
    // According to Tableau / IOMT data
    
    
    *** YTD Investment in Pure Player = // ### USING FIRST (active) RELATIONSHIP ###
    IF (
        NOT ( ISFILTERED ( PP_Slicer[PURE PLAYER] ) ),
        BLANK (),
        CALCULATE (
            [Mthy Bil],
            FILTER ( 'Date', 'Date'[Month Number] < MONTH ( TODAY () ) ),
            FILTER (
                MiddleOffice,
                MiddleOffice[GLOBAL GROUP] <> "EXTERNAL"
                    && MiddleOffice[GLOBAL GROUP] <> "MIDDLE OFFICE"
            )
        )
    )
    
    
    *** FC Investment in FO = 
    IF (
        CALCULATE (
            [Invest Pilot BRL];
            ALLEXCEPT ( Pilot; Pilot[YEAR] );
            FILTER ( Pilot; Pilot[VEHICLE THROUGH] = "OTHERS" );
            FILTER ( Pilot; Pilot[MEDIA TYPE] = "MEDIA - ON" );
            FILTER ( 'Date'; 'Date'[Month Number] >= MONTH ( TODAY () ) );
            FILTER (
                GlobalGroup;
                GlobalGroup[GLOBAL GROUP] <> "EXTERNAL"
                    && GlobalGroup[GLOBAL GROUP] <> "MIDDLE OFFICE"
            )
        )
            = BLANK ();
        BLANK ();
        CALCULATE (
            [Invest Pilot BRL];
            ALLEXCEPT ( Pilot; Pilot[YEAR] );
            FILTER ( Pilot; Pilot[VEHICLE THROUGH] = "OTHERS" );
            FILTER ( Pilot; Pilot[MEDIA TYPE] = "MEDIA - ON" );
            FILTER ( 'Date'; 'Date'[Month Number] >= MONTH ( TODAY () ) );
            FILTER (
                GlobalGroup;
                GlobalGroup[GLOBAL GROUP] <> "EXTERNAL"
                    && GlobalGroup[GLOBAL GROUP] <> "MIDDLE OFFICE"
            )
        )
    )
    // According to PILOT data
    
    
    *** FC Investment in MO = 
    IF (
        CALCULATE (
            [Invest Pilot BRL]; ALL(PP_Slicer);
            ALLEXCEPT ( Pilot; Pilot[YEAR] );
            FILTER ( Pilot; Pilot[VEHICLE THROUGH] = "PURE PLAYERS" );
            FILTER ( 'Date'; 'Date'[Month Number] >= MONTH ( TODAY () ) );
            FILTER (
                GlobalGroup;
                GlobalGroup[GLOBAL GROUP] <> "EXTERNAL"
                    && GlobalGroup[GLOBAL GROUP] <> "MIDDLE OFFICE"
            )
        )
            = BLANK ();
        BLANK();
        CALCULATE (
            [Invest Pilot BRL]; ALL(PP_Slicer);
            ALLEXCEPT ( Pilot; Pilot[YEAR] );
            FILTER ( Pilot; Pilot[VEHICLE THROUGH] = "PURE PLAYERS" );
            FILTER ( 'Date'; 'Date'[Month Number] >= MONTH ( TODAY () ) );
            FILTER (
                GlobalGroup;
                GlobalGroup[GLOBAL GROUP] <> "EXTERNAL"
                    && GlobalGroup[GLOBAL GROUP] <> "MIDDLE OFFICE"
            )
        )
    ) // According to PILOT data
    
    
    *** FC Investment in Pure Player = // ### USING SECOND (inactive) RELATIONSHIP 
    IF (
        NOT ( ISFILTERED ( PP_Slicer[PURE PLAYER] ) );
        BLANK ();
        CALCULATE (
            [Invest Pilot BRL];
            USERELATIONSHIP ( Pilot[PURE PLAYER]; PP_Slicer[PURE PLAYER] );
            FILTER ( 'Date'; 'Date'[Month Number] >= MONTH ( TODAY () ) );
            FILTER (
                Pilot;
                Pilot[GLOBAL GROUP] <> "EXTERNAL"
                    && Pilot[GLOBAL GROUP] <> "MIDDLE OFFICE"
            )
        )
    )

    I hope this scenario can help some other people, at least with insights.

     

    Thanks all again and best regards,