Skip to content
RED SAGSkills

Power BI interview questions and answers

Power BI questions check how you turn data into reports people trust: data models, DAX measures and clear visuals.

Below are 30 Power BI questions with the correct answer and a short explanation, grouped from fresher to experienced level. Try each one before you open the answer.

What Power BI interviews usually check

  • ✓Data modelling and relationships
  • ✓DAX measures vs calculated columns
  • ✓Filter context
  • ✓Visual choice and report design
  • ✓Refresh and performance

Power BI interview questions for freshers easy

1. Dimensions vs measures

In Tableau or Power BI, which of these fields would you normally treat as a measure rather than a dimension?

  1. A.Region
  2. B.Revenue
  3. C.Order date
  4. D.Product category
Show answer

Answer: B. Revenue

Measures are numeric values you aggregate, such as summing revenue. Dimensions are the fields you slice by, such as region, category or date. Getting this right decides whether the tool adds values up or uses them to split the chart.

2. Power Query or DAX for cleaning

In Power BI you need to split a "City, Country" column, trim spaces and remove blank rows before modelling. Where should this happen?

  1. A.In a DAX measure on each visual
  2. B.In Power Query, during data load
  3. C.In the visual's conditional formatting
  4. D.In a bookmark on the report page
Show answer

Answer: B. In Power Query, during data load

Power Query (M) is the data preparation layer: shaping, cleaning and combining data as it loads. DAX is for calculations on the loaded model, such as measures and calculated columns. Cleaning in DAX is slower and harder to maintain.

3. Months in alphabetical order

A Power BI line chart shows months in the order April, August, December, February… How do you fix it?

  1. A.Rename the months with leading numbers in Excel
  2. B.Sort the visual by sales, largest first
  3. C.Sort the month name column by month number
  4. D.Change the chart to a bar chart
Show answer

Answer: C. Sort the month name column by month number

Text columns sort alphabetically by default. In the date table, select the month name column and use Sort by Column with a month number column (for an April–March fiscal year, a fiscal month number). Visuals then show months in the right order.

4. What a slicer does

A sales manager wants to choose a region and see every chart on the page update. Which Power BI element is meant for this?

  1. A.A card visual
  2. B.A tooltip page
  3. C.A KPI visual
  4. D.A slicer
Show answer

Answer: D. A slicer

A slicer is an on-canvas filter that users click to filter the other visuals on the page, and it can be synced across pages. Cards and KPI visuals display values; tooltips show details on hover.

5. Margin % when sales is zero

A margin % measure is [Profit] / [Sales]. For new stores with zero sales the visual shows an error or infinity. What is the usual DAX fix?

  1. A.Use [Profit] * [Sales] instead
  2. B.Use DIVIDE([Profit], [Sales])
  3. C.Filter out every store in the visual
  4. D.Use ROUND([Profit] / [Sales], 2)
Show answer

Answer: B. Use DIVIDE([Profit], [Sales])

DIVIDE returns BLANK (or an alternate value you pass) when the denominator is zero, so visuals stay clean and blanks are skipped. It is also clearer than wrapping the division in IF checks.

6. Refreshing from an office SQL Server

A report published to the Power BI service uses a SQL Server inside the company network. Scheduled refresh fails. What is usually needed?

  1. A.A bigger Power BI Desktop file
  2. B.A second copy of the report
  3. C.A tooltip page for the refresh
  4. D.An on-premises data gateway
Show answer

Answer: D. An on-premises data gateway

The cloud service cannot reach servers inside a private network on its own. An on-premises data gateway installed inside the network relays refresh and DirectQuery requests securely to those sources.

7. Each manager sees only their region

One Power BI report is shared with 20 regional managers, and each should only see data for their own region. Which feature is built for this?

  1. A.Bookmarks for each region
  2. B.A separate report for each manager
  3. C.Row-level security (RLS)
  4. D.Hiding columns in the model
Show answer

Answer: C. Row-level security (RLS)

RLS defines roles with DAX filter rules, and the service applies them to every query for users in that role. One report and model then safely serves many audiences. Bookmarks and hidden columns do not restrict data.

8. Finding the slow visual

A Power BI page takes 15 seconds to load. Which built-in tool shows how long each visual takes and its DAX query?

  1. A.Performance analyzer
  2. B.Quick insights
  3. C.The Q&A visual
  4. D.Sync slicers pane
Show answer

Answer: A. Performance analyzer

Performance analyzer records each visual's DAX query time, visual display time and other time when you refresh visuals. You can copy the query into DAX Studio to tune the slow measure.

9. A button that switches chart and table

On one Power BI page, users want a button to switch between a chart view and a table view of the same data. Which feature is usually used?

  1. A.A calculated column for each of the views
  2. B.A second dataset for the table
  3. C.Bookmarks linked to buttons on the page
  4. D.Row-level security on the table visual
Show answer

Answer: C. Bookmarks linked to buttons on the page

A bookmark saves the page state, including which visuals are visible. Two bookmarks, one showing the chart and one the table, linked to buttons, let users toggle views. Bookmarks also drive guided, story-like reports.

10. Product analytics tool or BI tool

How does a product analytics tool such as Amplitude or Mixpanel differ from a general BI tool such as Power BI?

  1. A.It cannot connect to any data warehouse
  2. B.It is built for user events, funnels and cohorts
  3. C.It is used only for finance reports
  4. D.It can only show data for one day at a time
Show answer

Answer: B. It is built for user events, funnels and cohorts

Product analytics tools model users and event sequences, so funnels, retention and paths need no SQL. BI tools are more general and great for business reporting across many sources, often built on a warehouse.

Power BI intermediate interview questions medium

11. Measure or calculated column

In Power BI you need Profit Margin = total profit / total revenue that responds to slicers for region and month. What should you create?

  1. A.A calculated column that divides profit by revenue on each row
  2. B.A new table copied from the sales table
  3. C.A measure such as DIVIDE(SUM(Sales[Profit]), SUM(Sales[Revenue]))
  4. D.A hard-coded number in a card visual
Show answer

Answer: C. A measure such as DIVIDE(SUM(Sales[Profit]), SUM(Sales[Revenue]))

Measures are computed at query time in the current filter context, so the margin is correct for whatever slice the user picks. A calculated column is computed once per row at refresh, and averaging row-level margins gives the wrong total. DIVIDE also handles division by zero safely.

12. Shaping a Power BI model

A Power BI report uses one huge flat table with 80 columns and is slow and hard to filter. What model is usually recommended?

  1. A.Keep one flat table but hide unused columns
  2. B.Split it into many tables joined in a long chain
  3. C.A star schema: a fact table of transactions linked to dimension tables such as Date, Product and Customer
  4. D.Import every column as text
Show answer

Answer: C. A star schema: a fact table of transactions linked to dimension tables such as Date, Product and Customer

Power BI is designed around star schemas: narrow fact tables with numeric columns and keys, plus dimension tables for slicing. Filters flow cleanly from dimensions to facts, DAX is simpler and compression is better. A dedicated Date table also enables time intelligence functions.

13. Every row shows UAE sales

A matrix has Region on rows. The measure below shows the same number on every row. Why?

UAE Sales = CALCULATE([Sales], Region[Region] = "UAE")
  1. A.The relationship to the Region table is broken
  2. B.CALCULATE swaps the row's Region filter for UAE
  3. C.The matrix needs its total row turned off first
  4. D.CALCULATE only works in cards
Show answer

Answer: B. CALCULATE swaps the row's Region filter for UAE

A filter argument on a column in CALCULATE overwrites any existing filter on that column. On the India row, the Region filter is replaced by UAE, so every row returns UAE sales. Wrap it in KEEPFILTERS if it should intersect instead.

14. Share of total for each product

You want each product's share of total sales in a table with Product on rows, while still respecting a Year slicer. Which denominator is right?

  1. A.CALCULATE([Sales], REMOVEFILTERS(Product))
  2. B.CALCULATE([Sales], REMOVEFILTERS())
  3. C.[Sales] for the current row
  4. D.SUM(Sales[Amount]) with no CALCULATE
Show answer

Answer: A. CALCULATE([Sales], REMOVEFILTERS(Product))

REMOVEFILTERS(Product) (or ALL(Product)) removes only the product filter, so the denominator is total sales for the selected year. Removing every filter would also ignore the Year slicer. Then DIVIDE([Sales], denominator) gives the share.

15. Last year's sales show blank

A measure CALCULATE([Sales], SAMEPERIODLASTYEAR(Sales[OrderDate])) returns wrong or blank values for some months. What is the usual fix?

  1. A.Use a continuous, marked date table instead
  2. B.Change the visual from a chart to a table
  3. C.Use SUM in place of CALCULATE in the measure
  4. D.Turn off all the slicers on the report page
Show answer

Answer: A. Use a continuous, marked date table instead

Time intelligence functions expect a date column with every day present. Fact table dates have gaps (no orders on some days), so shifting periods misbehaves. Use the date column of a continuous, marked date table in the function.

16. Sales by ship date and order date

Sales has OrderDate and ShipDate, both related to the Date table, but only the OrderDate relationship is active. How do you build a "Sales by ship date" measure?

  1. A.Make both of the relationships active at once
  2. B.Duplicate the whole Sales table for ship dates
  3. C.CALCULATE with USERELATIONSHIP on ShipDate
  4. D.FILTER(Sales, Sales[ShipDate] = TODAY())
Show answer

Answer: C. CALCULATE with USERELATIONSHIP on ShipDate

Only one relationship between two tables can be active. USERELATIONSHIP inside CALCULATE turns on the inactive one for that measure, so the Date table filters by ship date. The Date table is used as a role-playing dimension.

17. Import or DirectQuery

Users want fast, interactive Power BI reports on a 30 million row sales table, and data refreshed every morning is fine. Which storage mode suits best?

  1. A.DirectQuery, so every click queries the source
  2. B.Live connection to an Excel file
  3. C.Import, refreshed on a schedule
  4. D.DirectQuery with no aggregations
Show answer

Answer: C. Import, refreshed on a schedule

Import loads the data into the compressed in-memory engine, which gives the fastest interaction, and a scheduled refresh keeps it current enough. DirectQuery is for data that must be near real time or is too big to import, at the cost of speed and source load.

18. Refreshing only recent data

A Power BI dataset holds 5 years of transactions and a full refresh takes 3 hours, though only the last few days change. What feature helps?

  1. A.Incremental refresh with RangeStart/RangeEnd
  2. B.A bookmark for each year of the data
  3. C.Bidirectional relationships everywhere
  4. D.A separate report for every month
Show answer

Answer: A. Incremental refresh with RangeStart/RangeEnd

Incremental refresh partitions the table by date using the RangeStart/RangeEnd filters in Power Query. Older partitions are kept and only recent ones are refreshed, cutting refresh time and source load. The filter should fold to the source.

19. A timestamp column bloating the model

A Power BI model is 2 GB, and most of it is a timestamp column with seconds. Reports only need date and hour. What reduces size the most?

  1. A.Convert the column to text before loading
  2. B.Split it into a date and an hour column
  3. C.Add an index column right next to it
  4. D.Make it a calculated column in DAX
Show answer

Answer: B. Split it into a date and an hour column

The in-memory engine compresses columns by their distinct values. A timestamp to the second has millions of unique values; a date column has a few thousand and an hour column 24. Text would compress even worse.

20. One chart, user-chosen measure

Managers want a single chart where they choose to see Revenue, Orders or Margin %, instead of three separate charts. Which Power BI feature fits best?

  1. A.Field parameters
  2. B.Row-level security
  3. C.Incremental refresh
  4. D.A drill-through page
Show answer

Answer: A. Field parameters

Field parameters create a table of fields or measures that drives a slicer; the chosen one is swapped into the visual. They can switch dimensions too, such as region vs channel on the axis.

Power BI interview questions for experienced candidates hard

21. Total row is less than the sum

A Power BI table shows Distinct Customers by region: East 60, West 50. The total row shows 90, not 110. A manager thinks the report is broken. What is happening?

  1. A.The total row is cached from an old refresh
  2. B.Power BI always rounds totals down
  3. C.The measure is re-evaluated for all regions together, and 20 customers bought in both regions, so they are counted once
  4. D.The West region filter is applied twice
Show answer

Answer: C. The measure is re-evaluated for all regions together, and 20 customers bought in both regions, so they are counted once

Measures are not summed for the total; they are recalculated in the total filter context. A distinct count over both regions counts each customer once, so overlapping customers make the total smaller than the sum. This is correct behaviour, but it should be explained or labelled for readers.

22. Customer counts that do not add up

A table shows distinct customers: January 120, February 100. The total row shows 180, and a manager says it should be 220. Who is right?

  1. A.The manager; the total should be 220
  2. B.Neither; the total should be 100
  3. C.Neither; it should be the average, 110
  4. D.The report; 40 customers bought in both months
Show answer

Answer: D. The report; 40 customers bought in both months

A distinct count total counts each customer once across the whole period. If 40 customers bought in both months, the total is 120 + 100 − 40 = 180. Adding monthly distinct counts double-counts repeat customers.

23. A variable that ignores CALCULATE

This measure was meant to return all-time sales, but it returns the same as [Sales] for the current filter. Why?

All Time Sales =
VAR s = [Sales]
RETURN CALCULATE(s, ALL('Date'))
  1. A.ALL cannot be used with a date table
  2. B.s is computed once, before CALCULATE runs
  3. C.RETURN must come before VAR
  4. D.Measures cannot be stored in variables
Show answer

Answer: B. s is computed once, before CALCULATE runs

A DAX variable is computed once in the filter context where it is defined, then treated as a constant. CALCULATE changes the context for expressions it evaluates, but s is already a number. Write CALCULATE([Sales], ALL('Date')) instead.

24. Red sales showing on every colour row

A matrix has Product Color on rows. Measure A = CALCULATE([Sales], Product[Color] = "Red") shows Red sales on every row. What does KEEPFILTERS(Product[Color] = "Red") change?

  1. A.Every row shows total sales of all colours
  2. B.Only the Red row shows a value; others are blank
  3. C.Nothing; the two measures are identical
  4. D.It makes the measure return zero on every row
Show answer

Answer: B. Only the Red row shows a value; others are blank

Without KEEPFILTERS, the new filter replaces the row's colour filter, so every row becomes "Red". KEEPFILTERS intersects the filters instead: on the Blue row, Blue AND Red is empty, so it is blank, and only the Red row returns sales.

25. Average monthly sales for a year

In a card filtered to 2026, which measure returns the average sales per month, not per transaction?

  1. A.AVERAGE(Sales[Amount])
  2. B.SUM(Sales[Amount]) / COUNTROWS(Sales)
  3. C.AVERAGEX(VALUES('Date'[Month]), [Sales])
  4. D.AVERAGEX(Sales, Sales[Amount])
Show answer

Answer: C. AVERAGEX(VALUES('Date'[Month]), [Sales])

AVERAGEX over the distinct months computes [Sales] for each month (through context transition) and averages those monthly totals. AVERAGE(Sales[Amount]) and the other two give the average transaction value, which is a much smaller number.

26. Same total on every customer row

In the Customer table, a calculated column Total = SUM(Sales[Amount]) shows the grand total of all sales on every row. Changing it to CALCULATE(SUM(Sales[Amount])) gives each customer's total. Why?

  1. A.CALCULATE turns the row into a filter
  2. B.CALCULATE sorts the Sales table first
  3. C.SUM ignores relationships unless indexed
  4. D.Calculated columns cannot use SUM
Show answer

Answer: A. CALCULATE turns the row into a filter

A calculated column has a row context but no filter context, so SUM sees all of Sales. CALCULATE performs context transition: the current customer row becomes a filter, which flows through the relationship to Sales. Measures called inside a row context do this automatically.

27. A DirectQuery table visual errors out

A Power BI table visual in DirectQuery mode lists every transaction line and fails with an error about too many rows. What limit is being hit?

  1. A.The 30-visuals-per-page limit in reports
  2. B.The 1 million row DirectQuery result cap
  3. C.The 10-slicer limit
  4. D.The 1 GB file size limit for Desktop
Show answer

Answer: B. The 1 million row DirectQuery result cap

In DirectQuery, Power BI limits how many rows an intermediate query may return (1 million by default). Huge detail tables hit it. Aggregate in the visual, filter more, or use drill-through for detail.

28. A matrix that suddenly shows every product

A matrix of Store × Product used to show only products each store sold. After changing a measure to [Sales] + 0, it lists every product for every store and gets slow. Why?

  1. A.Adding 0 changes the data type of the measure to text
  2. B.The relationship became many-to-many
  3. C.The matrix total was turned off
  4. D.Blank rows are hidden, but 0 is not blank
Show answer

Answer: D. Blank rows are hidden, but 0 is not blank

Power BI drops row combinations where all measures return BLANK. Forcing 0 makes every store-product pair non-blank, so the visual shows the full cross join and computes far more cells. Return BLANK for no data unless zeros are truly needed.

29. A manager sees every region

RLS works in testing, but one regional manager sees all regions in the Power BI service. She is a Member of the report's workspace. Why?

  1. A.RLS does not apply to workspace Members
  2. B.RLS only works in Power BI Desktop
  3. C.Her browser cache still holds the old data
  4. D.RLS only works for DirectQuery models
Show answer

Answer: A. RLS does not apply to workspace Members

Workspace Admins, Members and Contributors can edit the content, so RLS does not restrict them. Give report consumers the Viewer role, or share through an app, so RLS rules apply.

30. Share of total with CALCULATE

In a pivot with Region on rows, what does this DAX measure return for each region?

  1. A.The region's sales as a share of all regions' sales
  2. B.Always 100%, since both parts use the same filter
  3. C.The region's share of the previous region's total sales
  4. D.An error, because ALL cannot be used inside DIVIDE
Show answer

Answer: A. The region's sales as a share of all regions' sales

The numerator uses the current filter (one region). CALCULATE with ALL(Sales[Region]) removes the region filter, so the denominator is the total for all regions. DIVIDE also returns blank instead of an error when the denominator is zero.

Ready to test yourself?

Take a 15-question Power BI MCQ test with a score at the end, or practise the full Power BI question bank and earn points on the leaderboard.