Power BI Interview Questions
30+ Power BI interview questions organized by topic. Click "Show Answer" to reveal. Focus on DAX and Data Modeling — they come up in every interview.
Power BI Basics
Q: What are the main components of Power BI?
Q: What is the difference between a report and a dashboard?
Q: What are the different data connectivity modes?
Q: What is Power BI Premium and how is it different from Pro?
Q: What is a Power BI workspace?
Power Query / ETL
Q: What is Power Query and what language does it use?
Q: What is the difference between Merge and Append in Power Query?
Q: What is query folding and why does it matter?
Q: What is the difference between a parameter and a function in Power Query?
Deeper coverage: Power Query in Core Concepts
Data Modeling
Q: What is a star schema and why is it recommended?
Q: What is the difference between a fact table and a dimension table?
Q: Explain cross-filter direction. When would you use bidirectional?
Q: How do you handle a many-to-many relationship?
Q: What is an inactive relationship and when would you use one?
USERELATIONSHIP(). Example: Sales has OrderDate and ShipDate, both relating to Calendar. Make OrderDate active, ShipDate inactive. Use CALCULATE([Total Sales], USERELATIONSHIP(Sales[ShipDate], Calendar[Date])) when needed.Q: What is row-level security (RLS)? How do you implement it?
[Region] = "West" or [Email] = USERPRINCIPALNAME()). (2) In Service, assign users to roles. (3) Test with "View as Role" in Desktop. Dynamic RLS uses USERPRINCIPALNAME() to filter based on logged-in user, avoiding one role per region.Deeper coverage: Data Model in Core Concepts
DAX
Q: What is filter context vs row context?
Q: Explain what CALCULATE does with an example.
East Sales = CALCULATE([Total Sales], Region[Name] = "East"). Regardless of what the user selects in a region slicer, this measure always returns East sales. CALCULATE replaced the region filter with "East".Q: What is the difference between SUM and SUMX?
SUMX(Sales, Sales[Qty] * Sales[Price]). SUM is faster when the column already exists.Q: Write a measure for year-over-year growth percentage.
YoY Growth % =
VAR CurrentYear = [Total Sales]
VAR PriorYear = CALCULATE([Total Sales], SAMEPERIODLASTYEAR(Calendar[Date]))
RETURN DIVIDE(CurrentYear - PriorYear, PriorYear)
Q: What is ALL() used for? Give two different use cases.
CALCULATE([Total Sales], ALL(Products)) — returns total sales ignoring any product filters. Used for % of total calculations. (2) As a table function: RANKX(ALL(Products), [Total Sales]) — returns a table of all products regardless of filters, used as the ranking universe.Q: How do you calculate a running total in DAX?
Running Total = CALCULATE(
[Total Sales],
FILTER(
ALL(Calendar[Date]),
Calendar[Date] <= MAX(Calendar[Date])
)
)
ALL(Calendar[Date]) removes the date filter, FILTER re-applies it as "all dates up to the current date."
Deeper coverage: DAX Essentials Deep Dive
Visualization & Reporting
Q: What is drill-through and how does it differ from drill-down?
Q: What are bookmarks and how are they useful?
Q: How do you optimize a slow Power BI report?
Administration & Deployment
Q: What is a gateway and when do you need one?
Q: What is incremental refresh?
Q: What are deployment pipelines?