Skip to content
Product
PlatformPricingDimensionsIntegrationsSecurityCompare
Solutions · by use case
Customer, guest and fan experienceProduct feedback and prioritizationRevenue, churn and retentionAgenciesContact center performanceAI agent and chatbot analyticsMulti-location performanceReviews and competitive benchmarking
Solutions · by industry
Hotels and hospitalityRestaurants and food serviceFitness and leisureRetail and e-commerceSports and live entertainmentInsuranceBanking and financial servicesSoftware and SaaSAutomotiveConsumer products and CPGContact centers and BPOsPublic sector and nonprofitReal estateGaming and betting
Learn
Artifacts GalleryCustomer storiesResearchBlogThought leadershipLessons Log in Start now
Blog

How to Add Customer Feedback Themes to Power BI Dashboards

Power BI charts columns, not paragraphs. Here is the table model, the DAX and the visuals that put comment themes next to your scores, built on a made-up sample of 1,000 comments.

To add customer feedback themes to a Power BI dashboard, label every comment with its themes outside Power BI, load the labels as a separate table with one row per comment and theme, relate that table to your comment table on a comment ID, and write measures that count distinct comments. That shape lets one review carry three themes without tripling its score, and it lets every visual slice by theme next to CSAT, NPS or star rating. When the comments come from reviews, surveys, tickets and calls and the themes have to fit your business and stay the same every month, Dimension Labs does the labelling across all of those channels and, on the Prove plan, writes the Dimensions back to Snowflake, Databricks or BigQuery as ordinary columns Power BI can read.

Below is the whole build on a small sample we made up for this post: 1,000 fictional comments with a score from 1 to 5, at four fictional locations. The Power BI details come from Microsoft Learn pages read on Nov 7, 2026, each cited where it is used.

Why does Power BI show the scores but not the reasons?

A score is one number per response, so it drops straight into a card or a line chart. A comment is a paragraph. Power BI can show it in a table visual, but nobody reads 1,000 rows to find out why the score fell, and a word cloud counts words, not problems: "wait" and "waited" and "took forever" are one theme to a reader and three tokens to a counter.

The fix is to turn each comment into fields first: which themes it names, and anything else you need, such as sentiment toward each theme or whether the customer says they will not come back. Once those are rows in a table, they are data like any other column. The four steps to a customer experience dashboard put this text-to-fields step third; this post is the Power BI version of it.

What table shape does Power BI need for feedback themes?

The common mistake is a single "Theme" column on the comment table. A comment that complains about the wait and the price then has to pick one, or the row gets copied, and copied rows count the score twice. In the sample, 308 of the 1,000 comments name two or more themes, so either shortcut would distort a third of the data.

Use three tables instead:

Sample model, made-up data

Three tables: one row per comment, one row per comment and theme, one row per location

The shape that lets a comment carry several themes without copying its score.

TableOne row perColumnsRows in the sample
Feedbackcommentcomment_id, location, channel, score, date, text1,000
FeedbackThemecomment and themecomment_id, theme (plus sentiment, if you label it)1,073
Locationlocationlocation, region, manager4
Synthetic sample made up for this post: 1,000 fictional comments at 4 fictional locations. Relationships: Location 1 to many Feedback, Feedback 1 to many FeedbackTheme, on location and comment_id.

The comment table keeps the score, date, channel and location. The theme table is long and thin: one row for every theme a comment mentions, so 1,000 comments became 1,073 theme rows, and 322 comments with no theme simply have no rows there. If your labels carry sentiment per theme ("price: negative"), add it as a column on the theme table, not as another table.

How do you get the theme labels into Power BI?

Power BI reads the labels; something else has to produce them. The usual options, from smallest to largest:

  • Hand coding in a spreadsheet. Fine for a few hundred comments a quarter. Load it with Get Data like any other file. Our post on building a codeframe covers writing the theme list.

  • Your own script against a language model. Workable if you fix the theme list in advance and check a sample by hand; see how to tell if your AI tagging is accurate.

  • Your warehouse's own AI functions. Snowflake, BigQuery and Databricks can label a text column in SQL; we compared them in analyzing customer text inside your warehouse.

  • An enrichment platform that writes columns back. Dimension Labs labels every interaction with Dimensions and, on Prove and above, exports them to Snowflake, Databricks or BigQuery.

If the labels land in a warehouse, Power BI connects to it with a built-in connector. Microsoft's pages list both Import and DirectQuery for the Snowflake, Google BigQuery and Databricks connectors. For Snowflake, the steps are Get Data on the Home ribbon, then Database, then Snowflake, then the server and warehouse names. For Databricks you give the server hostname and HTTP path of the SQL warehouse; for BigQuery you sign in with an organizational or service account. Our integrations page lists the sources Dimension Labs reads from in the first place.

How do you relate the theme table without double counting?

Create the relationships on the Modeling tab with Manage relationships, then New: Feedback to FeedbackTheme on comment_id, one to many. Power BI may create it for you when the column names match, but check it, since Microsoft notes autodetect only creates a relationship when it finds a match with a high level of confidence.

The direction matters. With the default single direction, a filter flows from Feedback to FeedbackTheme, so a slicer on theme does not filter the scores. You could switch the relationship to Both, but Microsoft's modeling guidance recommends keeping bi-directional relationships to a minimum, because they can slow queries and confuse report users, and turning on the cross filter inside a measure with CROSSFILTER instead. These five measures cover most feedback dashboards:

Comments = DISTINCTCOUNT ( Feedback[comment_id] )

Comments mentioning theme =
CALCULATE (
    [Comments],
    CROSSFILTER ( Feedback[comment_id], FeedbackTheme[comment_id], BOTH )
)

Share of comments =
DIVIDE (
    [Comments mentioning theme],
    CALCULATE ( [Comments], REMOVEFILTERS ( FeedbackTheme ) )
)

Average score (theme) =
CALCULATE (
    AVERAGE ( Feedback[score] ),
    CROSSFILTER ( Feedback[comment_id], FeedbackTheme[comment_id], BOTH )
)

Low score share (theme) =
CALCULATE (
    DIVIDE (
        CALCULATE ( [Comments], Feedback[score] <= 2 ),
        [Comments]
    ),
    CROSSFILTER ( Feedback[comment_id], FeedbackTheme[comment_id], BOTH )
)

Two things to check once the measures are in. First, the theme shares should add up to more than 100% whenever comments name more than one theme, which is correct; the sample comes to 107.3%. Second, the average score should differ by theme. If every theme shows the same average, the filter is not reaching the Feedback table; in the sample, that wrong number would be 3.6, the average of all 1,000 comments, on every row.

Sample data, made up for this post

Themes overlap, so their shares add up to 107.3% of comments, not 100%

Share of the 1,000 sample comments that mention each theme. 308 comments name two or more themes and 322 name none.

Wait time299 comments
29.9%
Product quality230 comments
23.0%
Price210 comments
21.0%
Cleanliness132 comments
13.2%
Staff attitude124 comments
12.4%
App and ordering78 comments
7.8%
0102030
Synthetic sample: 1,000 fictional comments, 1,073 theme rows. This is why a pie chart of themes misleads: the slices are not parts of one whole.

Which visuals show feedback themes next to scores?

Three visuals do most of the work. A bar chart of Share of comments by theme says what customers talk about. A matrix with theme on rows, location on columns and Average score (theme) in the cells shows where each problem is worst. And a bar chart of the gap in low scores says which themes go with bad ratings, which is often a different list from the first one.

In the sample, wait time is the most-mentioned theme, in 29.9% of comments, but those comments are scored 1 or 2 only 7.4 points more often than the rest. Staff attitude is mentioned in 12.4% of comments and the gap is 42.2 points. Price is the third most mentioned and has almost no gap, 0.6 points.

Sample data, made up for this post

Ranked by how much worse the scores are, the most-mentioned theme drops to fifth

Left: share of comments that mention the theme. Right: share of those comments scored 1 or 2, minus the share among comments that do not mention it.

By share of commentsBy gap in low scoresWait time29.9% of commentsProduct quality23.0% of commentsPrice21.0% of commentsCleanliness13.2% of commentsStaff attitude12.4% of commentsApp and ordering7.8% of commentsStaff attitude42.2 points more low scoresApp and ordering33.3 points more low scoresCleanliness25.4 points more low scoresProduct quality15.0 points more low scoresWait time7.4 points more low scoresPrice0.6 points more low scoresBy share ofcommentsBy gap in lowscoresWait time29.9% ofcommentsProduct quality23.0% ofcommentsPrice21.0% ofcommentsCleanliness13.2% ofcommentsStaff attitude12.4% ofcommentsApp andordering7.8% ofcommentsStaff attitude42.2 pointsmore low scoresApp andordering33.3 pointsmore low scoresCleanliness25.4 pointsmore low scoresProduct quality15.0 pointsmore low scoresWait time7.4 points morelow scoresPrice0.6 points morelow scores
Synthetic sample. The gap is a plain comparison, not a causal effect: a theme can travel with other problems in the same comment.

A gap like this is still a correlation. A comment about rude staff may also complain about a dirty table, and the score reflects both. To rank themes by their effect on the score with the other themes held fixed, you need a model that controls for them; correlation vs causation in CX data explains the difference with three real public-review datasets. In Dimension Labs those effects, with confidence intervals, are part of the Prove plan.

How often will the dashboard pick up new comments?

That depends on two schedules: how often new comments get labelled, and how often Power BI refreshes. On Import mode, Microsoft's page allows up to 8 scheduled refreshes a day on Power BI Pro and up to 48 a day on Premium Per User and Premium or Fabric capacity. For feedback, a daily label run and a daily refresh are usually enough; themes move over weeks, and a refresh every hour mostly shows noise. Keep a schema version column on the theme table so that when you add or rename a theme, old and new labels are not mixed in one bar.

Why use Dimension Labs to feed feedback themes into Power BI?

Dimension Labs is an omni-channel analytics agent for customer data. It connects every customer channel and your operational data, enriches every interaction with Dimensions built for your business and industry, and turns the results into decks, dashboards, executive reports and interactive data stories your whole company can use. Plans start at $299 a month with no demo.

For a Power BI team, the four parts work out like this:

  • Fully omni-channel. Reviews, surveys, tickets, chats and call transcripts get the same themes, so one FeedbackTheme table covers every channel instead of one per tool.

  • Easy integration. Comments come in from help desks, survey tools, review sites or the warehouse, and the operational data (locations, accounts, orders) sits next to them. On Prove, the output goes to Snowflake, Databricks or BigQuery for Power BI to read.

  • Enrichment built for your business. The pre-built Dimensions library is on every plan, and custom Dimensions, written in plain English for your own themes, start on Discover at $999 a month. The labels are the same every run, which is what keeps a trend line honest.

  • A visual layer of its own. Power BI stays your dashboard of record. For the readouts that do not fit a dashboard, such as the monthly deck for operations or a PDF for each region, the agent builds them in the platform and shares them across the company.

Travelers, a Fortune 100 insurer, describes the problem this solves in its own story: "Traditional BI systems could report on structured metrics, but they could not connect unstructured conversational data into a consistent, cross-channel view of customer effort and root causes." After putting voice, chat, email, SMS and bot conversations through one schema, it reports 600% ROI within 18 months and $3.13M in total savings. (Read the Travelers story.)

When something simpler is the better choice: if you have one survey with a few hundred comments a quarter and a theme list that rarely changes, hand coding or your warehouse's AI functions feeding the same three-table model will do the job, and the DAX above works the same way.

FAQ

How do I get review and survey comment themes into Power BI?

Label each comment with its themes first, by hand, with a model, or with an enrichment platform. Store the labels as a table with one row per comment and theme, load it next to the comment table, relate the two on comment_id, and use CROSSFILTER in your measures so a theme slicer filters the scores.

Can I build a Power BI dashboard for feedback text, not just scores?

Yes, once the text is turned into columns. Power BI charts columns; it does not decide what a comment is about. Themes, sentiment per theme and any other fields you label become ordinary fields you can slice, filter and chart.

Why do my theme percentages add up to more than 100%?

Because a comment can mention more than one theme. That is correct, and it is why a pie chart is the wrong visual for themes. Use bars, and divide by the number of distinct comments, not by the number of theme rows.

What is the best way to add feedback themes to Power BI?

For feedback from several channels with themes specific to your business, Dimension Labs, with warehouse export to Snowflake, Databricks or BigQuery on the Prove plan. For one small survey, hand coding or warehouse AI functions feeding the same table model.

Does the $299 Explore plan include warehouse export?

No. Explore includes the pre-built Dimensions library and agent reports; warehouse export, the join to CRM and revenue data and effects with confidence intervals start on Prove at $2,999 a month. See pricing.

To see what the theme table looks like on your own comments before you touch the model, start with one file of reviews or survey responses.

Dimension Labs/Start with one file From $299 a month

Stop reporting. Start understanding.

Start with one file. Ask why a number moved. Plans from $299 a month, no demo and no contract on monthly plans.