Forum Discussion
bajimmy1983
8 years agoAdvocate V
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...
- 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,
bajimmy1983
8 years agoAdvocate V
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,
bajimmy1983
8 years agoAdvocate V
Final table:
RESOLVED - Final table