Power BI Tooltips: Add Context Without Cluttering Your Dashboard
Tooltip is a powerful feature in Power BI, yet it is often underused or misused. Instead of providing meaningful context, many tooltips simply repeat information that’s already visible in the report.
Imagine you’re presenting a sales dashboard comparing the performance of different shopping malls, when someone points at one of the bars and asks: “Is this better than last year?”
The chart shows total sales, but it doesn’t tell the whole story. You need last year’s performance, growth percentage, and the categories driving that revenue.
Instead of opening another report page, we can answer all of those questions with a well-designed Power BI tooltip.
In this article, we’ll build a custom tooltip that transforms a simple bar chart into a compact performance dashboard, showing Year-to-Date sales, Year-over-Year growth, and the top-performing categories in just a few seconds.
Final Outcome:
A Sales Dashboard Example
For this example I’m using the Shopping Mall Sales dataset from Kaggle.
After cleaning the data, I organized it into a simple Star Schema consisting of:
- sales (fact table)
- Date Table
- shopping_mall
- category
- gender
- payment_method
If you’re unfamiliar with Star Schema modeling, I’ve linked another article at the end of this post.
This is my final model:
📌 Date Table:
DateTable =
ADDCOLUMNS (
CALENDAR (DATE(2021,1,1), DATE(2023,12,31)),
"Year", YEAR([Date]),
"Month", MONTH([Date]),
"Month Name", FORMAT([Date], "MMMM"),
"Quarter", "Q" & FORMAT([Date], "Q")
)Building the Main Visual
First things first, let’s create the bar chart with total sales of each shopping mall for year 2022:
- Choose the stacked column chart visual.
- X-axis: shopping_mall (from shopping_mall table) and Year (from Date Table)
- Filter year as 2022
The goal of our tooltip is to show the growth or loss from last year and what people bought most from each shopping mall compared to last year.
📝 Note: In this example, the report is filtered to the full year of 2022, so the YTD value matches the annual total. I still use a YTD measure because it’s a best practice for time intelligence and will continue to work correctly if the report is later filtered to a specific month or date range.
Building the Tooltip
The goal of this tooltip is to provide users with a quick summary of each shopping mall’s performance when hovering over our main bar chart.
The tooltip will display:
- Year-to-Date (YTD) Sales
- Year-over-Year (YoY) Growth
- Top 3 Best-Selling Categories
This allows you to compare this year’s performance with last year’s while also identifying the categories driving sales.
Step 1 : Create the Tooltip Page
Let’s create a dedicated report page first that will be used as the tooltip.
📌 Create a new page:
- Click the + icon to create a new page.
- Rename the page to Tooltip.
📌 Enable Tooltip:
- Open the Format pane.
- Navigate to: Page Information → Allow use as tooltip → Turn the option On.
This will convert your page into a tooltip page.
📝 Note: You can adjust the size from canvas setting if you do not like the current one.
Step 2 : Create the Selected Mall Card
Before showing any metrics, users should immediately know which shopping mall they’re looking at.
So, the first element that we are going to display in the tooltip is the shopping mall that we are hover over.
📌 Create the measure:
Selected Mall =
SELECTEDVALUE(shopping_mall[shopping_mall])📌 Add the Card visual:
- Insert a Card visual.
2. Drag Selected Mall into the Value field.
3. Resize and position the card at the top of the tooltip.
Step 3 : Create the Sales YTD Card (Show the Current Performance)
The first KPI should answer the simplest question:
“How much has this shopping mall sold this year?”
📌 Create the measure:
sales YTD = TOTALYTD(SUM('sales'[sales]), 'DateTable'[Date])📌 Add the Card visual:
- Insert another Card visual.
2. Add Sales YTD to the Value field.
3. Format the card as desired.
Step 4 : Create the YoY Growth Card
Just knowing total sales isn’t enough. We also want to know whether performance improved or declined compared to last year.
Get Rita Angelou’s stories in your inbox
Join Medium for free to get updates from this writer.
Therefore, a nice way to compare current Year-to-Date sales with the previous year’s performance is to create a YoY Growth KPI.
📌 Create the Previous Year Sales measure:
sales LY = CALCULATE (SUM('sales'[sales]), SAMEPERIODLASTYEAR('DateTable'[Date]))📌 Create the YoY Growth measure:
sales YoY KPI = DIVIDE ([sales YTD] - [sales LY], [sales LY], 0)📌 Add the KPI Card
- Insert a Card visual.
- Add Sales YoY KPI to the Value field.
- Format the card as desired.
📌 Apply Dynamic Colors
To make positive growth easy to identify, we are going to create a measure that returns a color based on the YoY result.
📌 Create the color measure:
sales colour KPI = IF([sales YoY KPI]>0, "Green", "Red")📌 Apply conditional formatting:
- Select the YoY Growth Card.
- Navigate to: Format Visual → Callout Value → Color → Fx → Format style: Field value and set Based on field: sales colour KPI
Now, as you can check, positive values will appear in green, while negative values will appear in red.
📌 Add a Growth Indicator:
We can further enhance the KPI by displaying an arrow indicating whether sales increased or decreased.
📌 Create the indicator measure:
sales indicator PP KPI = var positive_icon = "▲" var negative_icon="▼" var result = IF([sales YoY KPI]>0, positive_icon, negative_icon) return result📌 Add the indicator:
- Insert another Card visual.
- Add Sales Indicator KPI to the Value field.
- Resize and position the card.
- Apply the same conditional formatting used for the YoY Growth card:
Format Visual → Callout Value → Color → Fx → Format style: Field value and set Based on field: sales colour KPI
Step 5 : Create the Top 3 Categories Matrix
Finally, let’s answer the natural follow-up question:
What’s driving those sales?
To answer that question we should display the three product categories that generate the highest Year-to-Date sales for the selected shopping mall.
📌 Create the Category Rank measure:
Category Rank =
RANKX(
ALL(category[category]),
[sales YTD],
,
DESC,
DENSE
)This measure ranks categories based on their YTD sales.
📌 Create the Top 3 filter measure:
Show Top 3 Categories =
IF(
[Category Rank] <= 3,
1
)This measure returns 1 for the top three ranked categories.
📌 Create the Top 3 sales by category:
- Insert Matrix visual.
- Add category to the Rows field.
- Add sales YTD, Sales indicator PP KPI and sales YoY KPI to the Values field.
- Drag Show Top 3 Categories to the Filters area and format to show items when the value is 1
- Resize and position the matrix.
Why This Still Works as a Tooltip?
A common mistake many dashboard developers make is trying to fit an entire dashboard into a tooltip.
A good tooltip should answer one business question, not ten.
In our case, that question is:
“How is this shopping mall performing?”
Within a few seconds, users can answer:
✔️ How much has this mall sold?
✔️ Is it growing or declining?
✔️ Which categories generate the most revenue?
✔️ Which categories improved compared to last year?
Most importantly, users don’t need to leave the report or navigate to another page to find this information. They stay focused on the visual they’re exploring while getting the additional context they need.
Final Thoughts
Keep in mind that a tooltip shouldn’t try to replace a report page.
Its purpose is to provide just enough context to answer the user’s next question without interrupting their workflow.
By combining a few KPIs, simple conditional formatting, and a compact matrix, we have transformed a standard Power BI tooltip into a miniature performance dashboard that users can understand in just a few seconds.
🌟 If you enjoyed this article don’t forget to 👏 clap and follow for more related content!
Related articles:
Power BI Masterclass Article Classification
Level: Intermediate
Category: Data Visualization, DAX
Tags: Tutorial, Data Visualization, DAX










