Forum Discussion
Tooltips (beginners question)
- Anonymous1 year ago
Hi Andrew-HLP ,
Thank you for reaching out to Microsoft Fabric Community Forum.
DataNinja777 Thank you for your response.
Andrew-HLP You're on the right track using ISINSCOPE() to detect the current level in the matrix. Since your goal is to show the next level down in a dynamic Tooltip based on what's currently expanded in the matrix, here's an approach that works well in practice:
Instead of trying to dynamically change the field parameter (which Power BI doesn't currently support conditionally), you can use multiple visuals on your Tooltip page,one for each level of detail and control their visibility using DAX.
For example, you could create measures like:
ShowLevel3InTooltip =
IF(
ISINSCOPE('GL Map Accounts'[Level 2]) && NOT ISINSCOPE('GL Map Accounts'[Level 3]),
1,
0
)This measure checks if you're currently viewing Level 2 and hides the visual unless you're hovering at that level.
Then on your Tooltip page:
- Add a visual for each level you want to show (e.g., Level 3, Level 4).
- Use a visual-level filter on each one like ShowLevel3InTooltip = 1 to ensure only the correct level is visible based on the matrix drill level.
This gives users a clean experience where the Tooltip always shows the next level of detail, depending on how far they've expanded in the matrix.
If this post helps, then please consider Accepting as solution to help the other members find it more quickly, don't forget to give a "Kudos" – I’d truly appreciate it!
Regards,
B Manikanteswara Reddy
Hi Andrew-HLP ,
It often makes more sense to use a mapping table rather than hardcoding the logic directly in DAX. This keeps your model cleaner, more scalable, and easier to maintain, especially if the hierarchy changes or grows.
Instead of using a SWITCH statement like this:
VAR CurrentLevel =
SWITCH(
TRUE(),
ISINSCOPE('GL Map Accounts'[Level 4]), 4,
ISINSCOPE('GL Map Accounts'[Level 3]), 3,
ISINSCOPE('GL Map Accounts'[Level 2]), 2,
ISINSCOPE('GL Map Accounts'[Level 1]), 1,
0
)
You could create a simple mapping table like this:
| LevelName | LevelOrder | NextLevel |
| Level 1 | 1 | 2 |
| Level 2 | 2 | 3 |
| Level 3 | 3 | 4 |
| Level 4 | 4 | 5 |
Then, in your 'GL Map Accounts' table, include a LevelOrder column and set up a relationship or use a lookup to bring in the corresponding NextLevel.
Your measure would become:
ShowOnlyNextLevel =
VAR CurrentLevelOrder =
MAX('GL Map Accounts'[LevelOrder])
VAR NextLevelOrder =
CALCULATE(
MAX('Level Mapping'[NextLevel]),
FILTER(
'Level Mapping',
'Level Mapping'[LevelOrder] = CurrentLevelOrder
)
)
RETURN
MAX('GL Map Accounts'[LevelOrder]) = NextLevelOrder
This way, you’re decoupling logic from DAX and putting structure in your data model, which is always a good idea when dealing with complex or potentially changing hierarchies.
Best regards,
- Andrew-HLP1 year agoHelper I
Hello, thanks for the reply. You are right, I am currently using SWITCH and ISINSCOPE() to return the current level / next level (current level + 1). Switching to a table might be neater, but it doesnt solve my problem.
My mapping table ('GL Map Accounts') table looks like this:
NB: I realise I could make this more efficient by holding the mapping for each pair of levels (e.g. Level 1 and Level 2, Level 2 and Level 3, Level 3 to Level 4) in seperate tables but users find a flat structure easier to work with.
I want rows in the Tooltip window to dynamically change to show the next level down when I hover over a cell. Its easy enough to fix the level or even dynamically change it using the parameter and slicer
Code for Parameter (doesn't allow conditional statements within it)
Parameter Level ={("L1", NAMEOF('GL Map Accounts'[Level 1]), 0),("L2", NAMEOF('GL Map Accounts'[Level 2]), 1),("L3", NAMEOF('GL Map Accounts'[Level 3]), 2),("L4", NAMEOF('GL Map Accounts'[Level 4]), 3)}SlicerConfig of TooltipDoes anyone have any ideas?Thanks in advance.Andrew
- Anonymous1 year agoNot applicable
Hi Andrew-HLP ,
Thank you for reaching out to Microsoft Fabric Community Forum.
DataNinja777 Thank you for your response.
Andrew-HLP You're on the right track using ISINSCOPE() to detect the current level in the matrix. Since your goal is to show the next level down in a dynamic Tooltip based on what's currently expanded in the matrix, here's an approach that works well in practice:
Instead of trying to dynamically change the field parameter (which Power BI doesn't currently support conditionally), you can use multiple visuals on your Tooltip page,one for each level of detail and control their visibility using DAX.
For example, you could create measures like:
ShowLevel3InTooltip =
IF(
ISINSCOPE('GL Map Accounts'[Level 2]) && NOT ISINSCOPE('GL Map Accounts'[Level 3]),
1,
0
)This measure checks if you're currently viewing Level 2 and hides the visual unless you're hovering at that level.
Then on your Tooltip page:
- Add a visual for each level you want to show (e.g., Level 3, Level 4).
- Use a visual-level filter on each one like ShowLevel3InTooltip = 1 to ensure only the correct level is visible based on the matrix drill level.
This gives users a clean experience where the Tooltip always shows the next level of detail, depending on how far they've expanded in the matrix.
If this post helps, then please consider Accepting as solution to help the other members find it more quickly, don't forget to give a "Kudos" – I’d truly appreciate it!
Regards,
B Manikanteswara Reddy
- Anonymous1 year agoNot applicable
Hi Andrew-HLP ,
We wanted to kindly follow up to check if the solution provided for the issue worked? or Let us know if you need any further assistance?
If our response addressed, please mark it as Accept as solution and click Yes if you found it helpful.
Regards,
B Manikanteswara Reddy