Huru
Technical Interviews

Power BI Interview Questions and Answers (2026): DAX, Data Modeling, Power Query, Storage Modes, Security and Scenarios

Power BI interview questions with answers and DAX examples, checked against Microsoft's documentation: reports and dashboards, Power Query and query folding, star schema and relationships, measures and calculated columns, row and filter context, CALCULATE, time intelligence, Import, DirectQuery, Dual and Direct Lake, incremental refresh, row-level security, performance, deployment pipelines, and scenario questions.

By Amine Boukioud Updated 14 min read
The Huru mascot touches a large glass table at the center of a star of smaller connected glass tables, with floating chart and gauge cards and a laptop showing a report

The short answer: Power BI interviews check that you can build a clean model and write correct DAX, beyond dragging visuals onto a page. Expect questions on data modeling (star schema, relationships, date tables), DAX (measures, row and filter context, CALCULATE, time intelligence), Power Query (transformations and query folding), storage modes (Import, DirectQuery, Dual, Direct Lake), refresh, row-level security, performance and deployment, plus scenarios such as “this report is slow” or “the total looks wrong”. The answers below are checked against Microsoft’s documentation, with sources at the end. The DAX examples follow Microsoft’s documented patterns; they haven’t been run against a live model, so test them on your own.

Interviewing for a broader analyst job? Our data analyst interview questions add SQL, Excel, pandas, statistics and case studies.

What’s current in Power BI

Interviewers notice when an answer sounds several years old. As of November 2026:

  • What used to be called a dataset is now a semantic model.
  • Power BI sits inside Microsoft Fabric, and Direct Lake is a storage mode for Delta tables in OneLake.
  • Microsoft is retiring Power BI Premium per-capacity (P) SKUs and points customers to Fabric capacity (F SKUs).
  • Copilot needs paid capacity: Fabric F2 or higher, or Power BI Premium P1 or higher. Trial capacities and free SKUs aren’t supported.
  • Visual calculations are DAX calculations that run directly on a visual, and DAX user-defined functions let you reuse logic.
  • Power BI Project (PBIP) files save reports and models as plain text, so they work with source control.
  • The certification is Power BI Data Analyst Associate (exam PL-300).

Power BI basics

“What’s the difference between a report and a dashboard?”

A report can have one visual or many pages of visuals, and it’s built on one semantic model. A dashboard is a single page, often called a canvas, created in the Power BI service. Its tiles are pinned from one or more reports, so it can show a summary across several subjects.

“Walk me through how you build a Power BI solution.”

Connect to the sources and shape the data in Power Query, build a star schema with relationships and a date table, write DAX measures, design the report, publish it to a workspace, set up refresh and security, then share it through an app. Walking through one real project this way is a strong answer on its own.

Power Query

“What is Power Query? What is M?”

Power Query is a data transformation and data preparation engine, with a graphical editor for applying steps. Behind the scenes, each step is written in the M language. The Advanced Editor shows the script, and some transformations can only be done there.

“What is query folding, and why does it matter?”

Query folding translates supported M transformations into operations the data source can run, such as a SQL query. Power Query tries to run as much as possible at the source, and evaluates what’s left in its own engine. Folding means the database does the filtering and grouping, so refreshes are faster and less data moves. Keep foldable steps first, and check whether a step folds with View Native Query or the query folding indicators. A step that can’t fold can stop folding for the steps after it.

“Merge or append?”

Merge joins two tables side by side on a matching column, like a SQL join, and adds columns. Append stacks tables on top of each other and adds rows, like UNION ALL, combining their column headers into one schema.

“How do you keep unused data out of the model?”

Remove columns you don’t need for reporting or relationships, filter out old rows, and turn off Enable load for staging queries that only feed other queries. Microsoft’s data reduction guidance recommends all three, and removing columns helps most when they hold many unique values.

Data modeling

“What is a star schema? Why does Power BI want one?”

A star schema classifies each table as a dimension or a fact. Dimension tables describe business entities: products, customers, dates. Fact tables store events and numbers, such as sales lines, at a consistent grain, with keys that relate to the dimensions. Microsoft recommends it because filters flow from dimensions to facts, the model stays smaller, and DAX stays simple. Avoid one wide flat table, and avoid mixing dimension and fact columns in a table.

“Explain relationship cardinality and cross-filter direction.”

Each relationship has a cardinality: one-to-many (the normal case), one-to-one, or many-to-many. It also has a cross-filter direction, which sets which way filters propagate. Single direction, from the “one” side to the “many” side, is the default for a reason.

“When would you use a bi-directional relationship?”

Rarely. Microsoft recommends that you minimize them because they can hurt query performance and confuse report users. They can help in specific cases, such as a many-to-many setup through a bridge table. If you only need one measure to filter both ways, consider CROSSFILTER inside that measure.

“How do you model a many-to-many relationship?”

The classic example is customers and shared accounts. Add a bridging table with one row per customer-account pair, relate both dimensions to it, and let filters flow through it. Power BI also offers a many-to-many cardinality for relationships between tables at different grains, for example a sales fact and a target table set by category.

“One date table, two date columns. How do you handle order date and ship date?”

A model can have only one active path between two tables, so the second relationship stays inactive. Activate it inside a measure with USERELATIONSHIP:

Orders Shipped =
CALCULATE(
  COUNTROWS(Sales),
  USERELATIONSHIP(
    'Date'[Date],
    Sales[ShipDate]
  )
)

The alternative is two copies of the date table, one per role, which suits reports that need to slice by both at once.

“Why do you need a date table?”

Time intelligence functions need a proper date table. It must have a date column with unique values and no nulls, and the dates must be contiguous from beginning to end. Mark it with Mark as date table. Turn off Auto date/time for serious models: it builds a hidden date table for each date column, so one date filter can’t apply across multiple fact tables such as sales and budget.

“Measure, calculated column or calculated table?”

A calculated column is computed for each row and stored in the model, and it’s recalculated only when the data refreshes. A measure is computed at query time, so it responds to slicers and filters. Prefer measures for anything you aggregate; use columns when you need a value to slice or group by. If you can, create the column in Power Query or the source instead. A calculated table is a whole table defined by a DAX expression.

DAX

“What’s the difference between row context and filter context?”

Row context is “the current row”: it exists in calculated columns and inside iterators such as SUMX. Filter context is the set of filters on columns coming from the report, slicers, relationships and CALCULATE. A measure’s result depends on its filter context, which is why the same measure shows different numbers in each cell of a matrix.

“What does CALCULATE do?”

CALCULATE evaluates an expression in a modified filter context: it can add, replace or remove filters. It’s the function most DAX questions lead back to. A common example is a share of total, where the denominator clears the product filter:

% of All Products =
DIVIDE(
  [Total Sales],
  CALCULATE(
    [Total Sales],
    REMOVEFILTERS('Product')
  )
)

“What is context transition?”

CALCULATE turns the current row context into filter context. That’s needed when an expression that summarizes data runs in row context, such as a calculated column on the Customer table:

Customer Sales =
CALCULATE(SUM(Sales[Amount]))

Without CALCULATE, SUM(Sales[Amount]) ignores the current row and returns the grand total on every row. Model measures do this automatically when used in row context.

“ALL, ALLSELECTED or REMOVEFILTERS?”

  • ALL returns all rows in a table, or all values in a column, ignoring any filters applied.
  • REMOVEFILTERS clears filters from tables or columns. Use it inside CALCULATE when you only want to clear filters, since it says what you mean.
  • ALLSELECTED ignores filters applied inside the query but keeps filters from outside, so it’s useful for “percent of the visible total” when a slicer is active.

“SUM or SUMX?”

SUM adds up one column. SUMX is an iterator: it evaluates an expression for each row of a table, then adds the results. Use it when you need a row-by-row calculation:

Total Sales =
SUMX(
  Sales,
  Sales[Qty] * Sales[Price]
)

“Why use variables and DIVIDE?”

Variables (VAR) make a measure easier to read and debug, and they avoid evaluating the same expression twice. DIVIDE handles division by zero for you: it returns BLANK, or an alternate result you pass, instead of an error. Here is both, in a year-over-year measure:

Sales YoY % =
VAR LastYear =
  CALCULATE(
    [Total Sales],
    SAMEPERIODLASTYEAR('Date'[Date])
  )
RETURN
  DIVIDE(
    [Total Sales] - LastYear,
    LastYear
  )

“Write a year-to-date measure and a ranking.”

Sales YTD =
TOTALYTD([Total Sales], 'Date'[Date])
Product Rank =
RANKX(
  ALL('Product'[Product]),
  [Total Sales]
)

“What are calculation groups and field parameters?”

Calculation groups let you define calculation items, such as YTD and prior year, once and apply them to existing measures, which removes a lot of repeated measures. Field parameters let report readers change the measures or dimensions a visual shows, using a slicer.

Storage modes and connections

“Import, DirectQuery, Dual or Direct Lake?”

ModeHow it worksUse it when
ImportLoads data into the in-memory model; visuals query the cacheThe usual default: fastest and fully interactive, but only as fresh as the last refresh
DirectQuerySends queries to the source when visuals loadData must be current, or it’s too large to import; speed depends on the source
DualA table acts as Import or DirectQuery, depending on the queryDimension tables in a composite model, so they relate well to both kinds of table
Direct LakeLoads Delta tables from OneLake into memory on demandLarge Fabric lakehouses and warehouses; refresh copies only metadata

A composite model has tables in more than one storage mode. In Direct Lake, refresh is a low-cost metadata operation called framing, and the model can fall back to DirectQuery depending on its Direct Lake behavior setting.

“How big can a semantic model be?”

The default limit is 1 GB. With Fabric capacity and the large semantic model storage format turned on, a model can grow beyond that, up to the limits of the capacity. Reducing the model is usually a better first move than asking for more capacity.

Refresh

“How does scheduled refresh work?”

Models on shared capacity are limited to 8 scheduled refreshes a day; on Premium, PPU or Fabric capacity you can schedule up to 48. Sources in a private network need an on-premises data gateway, Windows software that connects the Power BI service to them using outbound connections, so you don’t open inbound ports.

“What is incremental refresh?”

Instead of reloading a whole table, Power BI refreshes only recent partitions. You create two date/time parameters with the reserved, case-sensitive names RangeStart and RangeEnd, filter the table with them, and define a refresh policy:

Table.SelectRows(
  Source,
  each [OrderDate] >= RangeStart
    and [OrderDate] < RangeEnd
)

Use >= on one side and < on the other, so a row on the boundary doesn’t load twice. The filter step should fold back to the source; otherwise refresh pulls the whole table anyway.

Security

“How does row-level security work?”

You define roles in Power BI Desktop with DAX filter expressions, publish the model, and add members to the roles in the service. A static rule filters to a fixed value. A dynamic rule uses the signed-in user, so one role can serve everyone:

[UserEmail] = USERPRINCIPALNAME()

Interviewers love the catch: row-level security only applies to users with Viewer permissions. It doesn’t apply to workspace Admins, Members or Contributors. So if a colleague sees all the data, check their workspace role first. Object-level security goes further and hides whole tables or columns from report viewers.

“What are the workspace roles?”

Admin, Member, Contributor and Viewer, in order of decreasing permissions. Give most business users access through an app, or as Viewers, and keep editing rights to the people who build content.

Performance

“A report is slow. What do you do?”

Measure first. Performance Analyzer in Power BI Desktop shows each visual’s load time, split into the DAX query, visual display and other work, and lets you copy the DAX query. Then work through the layers:

  1. Report: too many visuals on a page, or heavy custom visuals.
  2. DAX: slow measures, repeated expressions, iterators over large tables.
  3. Model: extra columns, high-cardinality columns, snowflaked dimensions, bi-directional relationships.
  4. Source: for DirectQuery, slow queries and missing indexes at the database.

Deployment and collaboration

“How do you move a report from development to production?”

Deployment pipelines move content through stages, typically Development, Test and Production, with rules that change settings such as data sources for each stage. For source control, save as a Power BI Project (PBIP): reports and models become plain text files that you can diff, review and deploy through CI/CD. Publish to end users through an app.

“Which licenses do you need?”

There are three per-user types: Fabric (Free), Power BI Pro and Premium Per User (PPU). Capacity licenses are Fabric F SKUs or the Power BI Premium P SKUs being retired. With Fabric F64 or higher, Pro users can share content in capacity workspaces with colleagues who have free licenses. Licensing changes often, so check Microsoft’s current page before you quote numbers.

Scenario questions

  • “The total doesn’t match the sum of the rows.” A total is evaluated in its own filter context, not by adding the visible rows. If the business wants the sum of the rows, iterate: wrap the logic in SUMX over VALUES of the row’s column.
  • “A regional manager can see every region.” Check that the person is a Viewer, because row-level security doesn’t apply to Admins, Members or Contributors. Then test the role with View as and check the rule’s logic.
  • “Refresh started failing last night.” Read the refresh history. Common causes are expired credentials, a gateway that’s offline, a changed source column, or timeouts as the data grows.
  • “You have sales by day and budget by month.” Keep two fact tables at their own grain and relate both to shared dimensions. Relate budget to a month-level column, or allocate it to days, and make sure users can’t drill below the budget’s grain.
  • “The refresh takes two hours.” Confirm query folding, remove unused columns, then set up incremental refresh so history isn’t reloaded each time.
  • “Sales want their numbers live.” Clarify what “live” means and how fresh the data must be. Scheduled refresh may be enough; otherwise weigh DirectQuery or a composite model against the cost in speed.

Questions by level

  • Junior: reports vs dashboards, Power Query basics, merge vs append, star schema, relationships, measures vs calculated columns, basic DAX, publishing and sharing.
  • Mid-level: filter context, CALCULATE, time intelligence, query folding, incremental refresh, row-level security, Performance Analyzer.
  • Senior: composite models and Direct Lake, calculation groups, large models, deployment pipelines and PBIP with source control, capacity and licensing decisions, governance.

Behavioral questions for Power BI developers

Use the STAR method with a real example:

  • “Tell me about a report you built that changed a decision.”
  • “Describe a time a stakeholder’s numbers didn’t match yours. How did you resolve it?”
  • “Tell me about a slow report you made faster. What did you measure?”
  • “How do you handle a request for a dashboard when the question behind it isn’t clear?”

More: our data analyst interview questions, SQL interview questions and business analyst interview questions.

Frequently asked questions

What Power BI questions are asked in interviews?
Reports vs dashboards, Power Query and query folding, star schema and relationships, measures vs calculated columns, row and filter context, CALCULATE, time intelligence, Import vs DirectQuery vs Direct Lake, incremental refresh, row-level security, performance, deployment, and scenarios such as a slow report or a wrong total.
What is the difference between a measure and a calculated column?
A calculated column is computed for each row and stored in the model, and it updates when the data refreshes. A measure is computed at query time in the current filter context, so it responds to slicers and filters.
What does CALCULATE do in DAX?
It evaluates an expression in a modified filter context, adding, replacing or removing filters. It also turns row context into filter context, which is called context transition.
What is the difference between Import, DirectQuery and Direct Lake?
Import loads data into the in-memory model. DirectQuery sends queries to the source when visuals load. Direct Lake, in Microsoft Fabric, loads Delta tables from OneLake into memory, and its refresh copies only metadata.
Why doesn't row-level security work for some users?
Row-level security only restricts users with Viewer permissions. It doesn't apply to workspace Admins, Members or Contributors, so check the user's workspace role first.
Which certification is there for Power BI?
Microsoft Certified: Power BI Data Analyst Associate, earned by passing exam PL-300.
Can Huru help me practice Power BI interview questions?
Yes, for the speaking parts. You answer out loud, an AI interviewer follows up, and every answer is scored out of 100 with a stronger version. Huru doesn't run DAX, so build your measures in Power BI Desktop.

Sources

Practice this with Huru AI

Turn what you just read into a rehearsal. Unlimited AI mock interviews with instant, specific feedback.

Amine Boukioud

Amine Boukioud is a co-founder of Beatview, Inc., the company behind Huru, and Head of Growth at Huru. He writes and reviews Huru’s interview guides; each one starts from primary sources such as employers’ own careers pages, official data and research, and follows Huru’s editorial policy.

Published

How this article was made: researched and drafted with AI assistance, then written, fact-checked and signed by Amine Boukioud on November 7, 2026. Sources are linked where they are used. How we work: editorial policy.