Power Bi Interview Questions
Power BI Interview Questions and Answers 2026: Complete Guide for Freshers & Professionals
Last Updated: March 2026 | Level: Beginner to Advanced | Format: Q&A with DAX/M Code Examples
Power BI has become the industry-standard business intelligence tool, used by over 97% of Fortune 500 companies. Whether you're a fresher targeting data analyst roles or an experienced professional switching to BI, Power BI interview questions are a staple in placements at companies like Microsoft, Deloitte, Accenture, TCS, Infosys, EY, and hundreds of data-driven organizations. This guide covers 30 carefully curated questions — from fundamentals to advanced optimization — with detailed answers and real code snippets to give you interview-ready confidence.
Table of Contents
- Power BI Basics (Q1–Q5)
- Data Modeling (Q6–Q10)
- DAX – Data Analysis Expressions (Q11–Q17)
- Power Query / M Language (Q18–Q22)
- Visualization & Reporting (Q23–Q26)
- Admin & Deployment (Q27–Q29)
- Advanced Topics (Q30)
- Tips for Power BI Interviews
- Conclusion
Power BI Basics
Q1. What is Power BI and what are its key components? Easy
| Component | Description |
|---|---|
| Power BI Desktop | Free Windows application for building reports and data models |
| Power BI Service | Cloud-based SaaS platform (app.powerbi.com) for publishing, sharing, and collaboration |
| Power BI Mobile | Native apps for iOS, Android, and Windows for consuming reports on the go |
| Power BI Report Server | On-premises report server for organizations with strict data residency requirements |
| Power BI Embedded | APIs and SDKs to embed Power BI content into custom applications |
| Power BI Gateway | Bridge that enables secure data transfer between on-premises data and Power BI Service |
Key workflow: Connect → Transform (Power Query) → Model (Relationships + DAX) → Visualize → Publish → Share.
Q2. What is the difference between Power BI Desktop and Power BI Service? Easy
| Feature | Power BI Desktop | Power BI Service |
|---|---|---|
| Type | Windows desktop application | Cloud-based SaaS (browser) |
| Cost | Free | Free (limited) + Pro/Premium licensing |
| Primary Use | Author reports, build data models, write DAX | Publish, share, collaborate, schedule refresh |
| Data Transformation | Full Power Query Editor | Limited (Dataflows) |
| DAX Authoring | Full support | Limited to quick measures |
| Dashboards | Not available (only reports) | Create dashboards by pinning report visuals |
| Collaboration | Single user | Multi-user sharing, workspaces, apps |
| Row-Level Security | Define roles | Define + enforce roles |
Key insight: Power BI Desktop is where you build; Power BI Service is where you share. Reports are authored in Desktop and published to Service. Dashboards exist only in the Service.
Q3. What is Power Query and what role does it play in Power BI? Easy
Power Query handles the ETL (Extract, Transform, Load) pipeline:
- Extract — Connect to databases, APIs, files (CSV, Excel, JSON), web pages, SharePoint, etc.
- Transform — Remove duplicates, split columns, pivot/unpivot, merge queries, handle nulls, change data types, add custom/conditional columns
- Load — Push cleaned data into the Power BI data model for analysis
Example — Cleaning a date column in M:
= Table.TransformColumns(Source, {{"OrderDate", each Date.From(_), type date}})
Why it matters in interviews: Interviewers test whether you understand that data preparation (80% of BI work) happens in Power Query before data reaches the model — not in DAX.
Q4. What is DAX? How is it different from Power Query (M)? Easy
| Aspect | DAX | Power Query (M) |
|---|---|---|
| Purpose | Analysis & calculations on modeled data | Data extraction & transformation before loading |
| Where it runs | Data model (after load) | Power Query Editor (before load) |
| Language style | Excel-like formula syntax | Functional programming language |
| Operates on | Tables and columns in the model | Data streams / query steps |
| Use case | Measures, KPIs, time intelligence, aggregations | Cleaning, merging, shaping raw data |
DAX example — Year-over-Year Growth:
YoY Growth % =
DIVIDE(
[Total Sales] - CALCULATE([Total Sales], SAMEPERIODLASTYEAR('Date'[Date])),
CALCULATE([Total Sales], SAMEPERIODLASTYEAR('Date'[Date])),
0
)
Rule of thumb: If you're cleaning/shaping data → Power Query. If you're analyzing/calculating data → DAX.
Q5. What are the different data connectivity modes in Power BI? Easy
| Mode | How It Works | When to Use |
|---|---|---|
| Import | Data is copied into Power BI's in-memory engine (VertiPaq). Queries run against the local cache. | Default mode. Best for small–medium datasets (<1 GB). Fastest query performance. |
| DirectQuery | No data is imported. Every interaction sends a live query to the source database. | Large datasets, real-time requirements, data that can't leave the source. |
| Live Connection | Similar to DirectQuery but specifically for Analysis Services (SSAS) or Power BI datasets. The model lives externally. | When an enterprise semantic model already exists in SSAS or a shared Power BI dataset. |
Import vs DirectQuery trade-offs:
| Factor | Import | DirectQuery |
|---|---|---|
| Performance | ⚡ Fast (in-memory) | 🐢 Depends on source |
| Data freshness | Scheduled refresh (up to 8x/day Pro, 48x Premium) | Real-time |
| DAX support | Full | Some limitations |
| Dataset size | 1 GB (Pro) / 10+ GB (Premium) | Unlimited (source-dependent) |
| Transformations | Full Power Query | Limited |
Data Modeling
Q6. What is a Star Schema and why is it recommended in Power BI? Medium
[DimDate]
|
[DimProduct]---[FactSales]---[DimCustomer]
|
[DimStore]
Why Power BI prefers Star Schema:
- VertiPaq compression — Dimension tables with low cardinality compress extremely well, reducing memory usage by 10x or more
- Filter propagation — Filters flow naturally from dimensions → fact tables via one-to-many relationships
- DAX performance — CALCULATE, FILTER, and context transition work predictably when the model is a clean star
- Simplicity — Users can drag-and-drop fields intuitively; no ambiguous paths
- Best practice — Microsoft's own documentation explicitly recommends Star Schema over flat/denormalized tables
Anti-pattern to avoid: A single wide table with 50+ columns. It seems simpler but kills VertiPaq compression, creates ambiguous relationships, and makes DAX harder to write.
Q7. Explain relationships in Power BI — types, cardinality, and cross-filter direction. Medium
Cardinality types:
| Cardinality | Description | Example |
|---|---|---|
| One-to-Many (1:*) | One row in table A relates to many rows in table B | One Product → Many Sales |
| Many-to-One (*:1) | Reverse of above — same relationship, different perspective | Many Sales → One Product |
| One-to-One (1:1) | One row maps exactly to one row | Employee → EmployeeDetail |
| Many-to-Many (:) | Multiple rows on both sides | Students ↔ Courses |
Cross-filter direction:
- Single (default for 1:*) — Filters flow from the "one" side to the "many" side only (Dimension → Fact)
- Both (bidirectional) — Filters flow in both directions. Use sparingly — can cause ambiguity, performance issues, and unexpected results
Best practices:
- ✅ Prefer One-to-Many relationships
- ✅ Use Single cross-filter direction by default
- ❌ Avoid bidirectional unless absolutely necessary (e.g., many-to-many bridge tables)
- ❌ Avoid circular dependencies — Power BI will error if it detects ambiguous paths
Q8. What is the difference between a Calculated Column and a Measure? Medium
| Aspect | Calculated Column | Measure |
|---|---|---|
| Evaluated | Row by row during data refresh | On-the-fly during report interactions |
| Storage | Stored in the model (consumes memory) | Not stored — computed at query time |
| Context | Row context (has access to current row values) | Filter context (aggregates based on slicers/filters) |
| Use case | Static categorization, flags, lookups | Dynamic aggregations, KPIs, ratios |
| Can be used in slicers? | ✅ Yes | ❌ No |
Calculated Column example:
Profit Margin Category =
IF(
[Profit Margin] > 0.3, "High",
IF([Profit Margin] > 0.15, "Medium", "Low")
)
Measure example:
Total Revenue = SUMX(Sales, Sales[Quantity] * Sales[UnitPrice])
Interview tip: Always prefer measures over calculated columns unless you need the value for filtering/slicing. Measures are more memory-efficient and respond to filter context dynamically.
Q9. What is a Date Table and why is it critical in Power BI? Medium
Why it's critical:
- Time intelligence functions like
SAMEPERIODLASTYEAR,TOTALYTD,DATEADDrequire a contiguous, marked date table - Consistent filtering across multiple fact tables sharing the same date dimension
- Custom fiscal calendars (April–March fiscal year, 4-4-5 retail calendar)
Creating a Date Table in DAX:
DateTable =
ADDCOLUMNS(
CALENDARAUTO(),
"Year", YEAR([Date]),
"Quarter", "Q" & FORMAT([Date], "Q"),
"Month", FORMAT([Date], "MMMM"),
"MonthNumber", MONTH([Date]),
"WeekDay", FORMAT([Date], "dddd"),
"WeekNumber", WEEKNUM([Date])
)
Mark it as a Date Table: In Power BI Desktop → Select the table → Table Tools → Mark as Date Table → Choose the date column.
Without this step, time intelligence functions will not work correctly.
Q10. What are Inactive Relationships and when would you use them? Medium
By default, filters propagate only through the active relationship. To use an inactive relationship in a measure, use the USERELATIONSHIP function:
Sales by Ship Date =
CALCULATE(
[Total Sales],
USERELATIONSHIP(Sales[ShipDate], DateTable[Date])
)
Common scenarios:
- Order Date vs Ship Date vs Delivery Date
- Created Date vs Modified Date vs Closed Date
- Budget Date vs Actual Date in financial models
Interview tip: This question tests whether you understand that Power BI allows only one active relationship between any two tables, and USERELATIONSHIP is the DAX mechanism to activate an alternate path.
DAX – Data Analysis Expressions
Q11. Explain the CALCULATE function and why it's the most important DAX function. Hard
Syntax:
CALCULATE(<expression>, <filter1>, <filter2>, ...)
What it does:
- Takes the current filter context (from slicers, rows, columns in a visual)
- Applies the additional filter arguments (which can add, replace, or remove filters)
- Evaluates the expression in this new, modified context
Examples:
// Total Sales for Electronics category only
Electronics Sales =
CALCULATE(
[Total Sales],
Products[Category] = "Electronics"
)
// Remove all filters on Product table — show grand total regardless of product slicer
All Products Sales =
CALCULATE(
[Total Sales],
ALL(Products)
)
// Sales for previous year (time intelligence)
PY Sales =
CALCULATE(
[Total Sales],
SAMEPERIODLASTYEAR('Date'[Date])
)
Why interviewers love this question: CALCULATE is the gateway to understanding filter context manipulation — the core concept that separates beginners from intermediate/advanced DAX users.
Q12. What is the difference between Filter Context and Row Context? Hard
| Aspect | Filter Context | Row Context |
|---|---|---|
| Created by | Slicers, visual axes, CALCULATE filters, page/report filters | Calculated columns, iterators (SUMX, AVERAGEX, FILTER) |
| Scope | Filters entire tables/columns | Points to a single row |
| Behavior | Restricts which rows are visible to a calculation | Provides access to column values of the current row |
| Applies to | Measures | Row-by-row evaluation |
Critical concept — Context Transition: When a measure is referenced inside a row context (e.g., inside SUMX), CALCULATE wraps the measure implicitly, converting the current row context into an equivalent filter context. This is called context transition.
// Context transition in action
Avg Order Revenue =
AVERAGEX(
Orders,
[Total Revenue] // [Total Revenue] is a measure → context transition occurs
// Each row's columns become filters for evaluating [Total Revenue]
)
Why this matters: Misunderstanding context transition is the #1 source of DAX bugs. If [Total Revenue] = SUM(Sales[Amount]), the SUM inside AVERAGEX is filtered by each order's context, not the entire table.
Q13. What are Iterator functions in DAX? Give examples. Medium
| Iterator | Aggregation | Equivalent Non-Iterator |
|---|---|---|
SUMX | Sum | SUM |
AVERAGEX | Average | AVERAGE |
MINX | Minimum | MIN |
MAXX | Maximum | MAX |
COUNTX | Count | COUNT |
RANKX | Ranking | — |
CONCATENATEX | Text join | — |
Example — Weighted average price (can't be done with SUM/AVERAGE):
Weighted Avg Price =
DIVIDE(
SUMX(Sales, Sales[Quantity] * Sales[UnitPrice]),
SUM(Sales[Quantity])
)
Example — Concatenate product names:
Product List =
CONCATENATEX(
VALUES(Products[ProductName]),
Products[ProductName],
", ",
Products[ProductName], ASC
)
Key insight: Iterators create a row context. This means context transition applies when you call a measure inside an iterator.
Q14. Explain Time Intelligence in DAX with key functions. Hard
Prerequisites: A properly marked, contiguous Date Table (see Q9).
Key Time Intelligence functions:
| Function | Purpose | Example Use |
|---|---|---|
TOTALYTD | Year-to-date total | YTD Sales |
TOTALQTD | Quarter-to-date total | QTD Revenue |
TOTALMTD | Month-to-date total | MTD Orders |
SAMEPERIODLASTYEAR | Same period in previous year | YoY comparison |
DATEADD | Shift dates by interval | Sales 3 months ago |
DATESYTD | Returns YTD dates | Custom YTD calculations |
PARALLELPERIOD | Full parallel period | Full previous quarter |
PREVIOUSMONTH | Previous month dates | Month-over-month |
Practical examples:
// Year-to-Date Sales
YTD Sales = TOTALYTD([Total Sales], 'Date'[Date])
// Year-over-Year Change
YoY Change =
VAR CurrentYear = [Total Sales]
VAR PreviousYear = CALCULATE([Total Sales], SAMEPERIODLASTYEAR('Date'[Date]))
RETURN
DIVIDE(CurrentYear - PreviousYear, PreviousYear, 0)
// Rolling 3-Month Average
Rolling 3M Avg =
CALCULATE(
[Total Sales] / 3,
DATESINPERIOD('Date'[Date], MAX('Date'[Date]), -3, MONTH)
)
Q15. What is the FILTER function and how does it differ from using CALCULATE with a direct filter? Medium
// Direct filter in CALCULATE — applies column filter
Sales Over 100 =
CALCULATE([Total Sales], Sales[Amount] > 100)
// FILTER function — returns a table, iterates row by row
Sales Over 100 =
CALCULATE(
[Total Sales],
FILTER(Sales, Sales[Amount] > 100)
)
Key differences:
| Aspect | Direct Filter (Column) | FILTER Function |
|---|---|---|
| Scope | Can only filter a single column | Can use complex, multi-column expressions |
| Performance | Optimized by engine — uses column indexes | Iterates row by row — slower on large tables |
| Use case | Simple equality/comparison filters | Complex conditions involving multiple columns or measures |
When to use FILTER:
- When the condition involves multiple columns:
FILTER(Sales, Sales[Qty] * Sales[Price] > 1000) - When filtering on a measure:
FILTER(ALL(Products), [Total Sales] > 50000) - When you need the actual table for further operations
Best practice: Prefer direct column filters for performance. Use FILTER only when you need row-level complex conditions.
Q16. Explain the ALL, ALLEXCEPT, and REMOVEFILTERS functions. Medium
| Function | What It Does |
|---|---|
ALL(Table) | Removes all filters from the table — returns all rows |
ALL(Column) | Removes filters from a specific column only |
ALLEXCEPT(Table, Column1, Column2) | Removes all filters EXCEPT on specified columns |
REMOVEFILTERS() | Alias for ALL — clearer intent when used inside CALCULATE |
Examples:
// % of Grand Total — removes all filters from Sales
% of Total =
DIVIDE(
[Total Sales],
CALCULATE([Total Sales], ALL(Sales))
)
// % of Category — keeps Category filter, removes everything else
% of Category =
DIVIDE(
[Total Sales],
CALCULATE([Total Sales], ALLEXCEPT(Products, Products[Category]))
)
Interview tip: ALL is a table function when used outside CALCULATE (returns a table), but acts as a filter modifier when used inside CALCULATE (removes filters). Understanding this dual behavior is critical.
Q17. Write a DAX measure for a Running Total. Hard
Running Total =
CALCULATE(
[Total Sales],
FILTER(
ALL('Date'[Date]),
'Date'[Date] <= MAX('Date'[Date])
)
)
How it works:
ALL('Date'[Date])— Removes any date filters, giving access to all datesFILTER(...)— Re-applies a filter keeping only dates ≤ the current visual context's max date[Total Sales]— Sums sales for all those dates
Alternative using window functions (Power BI 2023+):
Running Total =
CALCULATE(
[Total Sales],
WINDOW(1, ABS, 0, REL, ORDERBY('Date'[Date], ASC))
)
Performance tip: For large datasets, ensure the Date table is marked and the relationship is clean. Running totals are inherently expensive — avoid nesting them.
Power Query / M Language
Q18. What are the key data transformation steps in Power Query? Easy
Most common transformations:
| Transformation | What It Does | M Function |
|---|---|---|
| Remove Columns | Drop unnecessary columns | Table.RemoveColumns |
| Filter Rows | Keep/remove rows by condition | Table.SelectRows |
| Change Type | Set correct data types | Table.TransformColumnTypes |
| Replace Values | Find and replace in a column | Table.ReplaceValue |
| Split Column | Split by delimiter or character count | Table.SplitColumn |
| Pivot/Unpivot | Reshape data orientation | Table.Pivot / Table.Unpivot |
| Group By | Aggregate rows | Table.Group |
| Merge Queries | Join two tables (like SQL JOIN) | Table.NestedJoin |
| Append Queries | Stack tables (like SQL UNION) | Table.Combine |
| Add Custom Column | Create new calculated column | Table.AddColumn |
| Conditional Column | If/then/else logic | Table.AddColumn with if...then...else |
Best practice: Always set data types as the last step — earlier type changes can be overridden by subsequent transformations.
Q19. What is the difference between Merge and Append in Power Query? Easy
| Operation | SQL Equivalent | What It Does | Result Shape |
|---|---|---|---|
| Merge | JOIN | Combines columns from two tables based on a matching key | Wider (more columns) |
| Append | UNION | Stacks rows from two or more tables on top of each other | Taller (more rows) |
Merge Join types available:
- Left Outer (all from left + matching from right)
- Right Outer
- Full Outer
- Inner (only matching rows)
- Left Anti (left rows with no match)
- Right Anti
Merge example — Adding customer names to sales:
Merge: Sales[CustomerID] = Customers[CustomerID] → Left Outer Join
→ Expand the Customers column to get CustomerName
Append example — Combining monthly files:
Append: Jan_Sales + Feb_Sales + Mar_Sales
→ Single table with all months' rows
Interview tip: Merge = horizontal combination (JOIN). Append = vertical combination (UNION). Simple but frequently asked.
Q20. How do you handle errors and null values in Power Query? Medium
Handling nulls:
// Replace nulls in a column
= Table.ReplaceValue(Source, null, 0, Replacer.ReplaceValue, {"Amount"})
// Filter out null rows
= Table.SelectRows(Source, each [CustomerName] <> null)
// Conditional null handling
= Table.AddColumn(Source, "CleanAmount", each if [Amount] = null then 0 else [Amount])
Handling errors:
// Replace errors in a column with null
= Table.ReplaceErrorValues(Source, {{"Amount", null}})
// try...otherwise for error handling in custom columns
= Table.AddColumn(Source, "SafeDivision", each try [Revenue] / [Cost] otherwise 0)
Error prevention strategies:
- ✅ Set data types explicitly to catch conversion errors early
- ✅ Use
try...otherwisefor calculations that might fail (division by zero, type mismatches) - ✅ Check for nulls before operations:
if [Column] <> null then ... else ... - ✅ Use "Remove Errors" step cautiously — understand what data you're dropping
Q21. What are Parameters in Power Query and how are they used? Medium
Common use cases:
- Dynamic data source paths — Switch between Dev/Test/Prod databases
- Date range filtering — Let users specify start/end dates
- Threshold values — Parameterize business rules
- Incremental refresh —
RangeStartandRangeEndparameters (required by Power BI's incremental refresh feature)
Creating a parameter in M:
// In the query:
let
ServerName = "sql-prod-01" meta [IsParameterQuery=true, Type="Text", IsParameterQueryRequired=true],
Source = Sql.Database(ServerName, "SalesDB"),
...
Incremental Refresh parameters (required names):
// These exact names are required by Power BI for incremental refresh
RangeStart = #datetime(2024, 1, 1, 0, 0, 0) meta [IsParameterQuery=true, Type="DateTime", IsParameterQueryRequired=true]
RangeEnd = #datetime(2026, 3, 26, 0, 0, 0) meta [IsParameterQuery=true, Type="DateTime", IsParameterQueryRequired=true]
Q22. How does Query Folding work and why is it important? Hard
Why it matters:
- Performance — The database server handles filtering, joins, and aggregations (optimized engines, indexes, parallelism)
- Memory — Only the final result set is transferred to Power BI, not the entire raw table
- Scalability — Can process billions of rows without loading them all locally
How to check if a step folds: Right-click an Applied Step → "View Native Query"
- If the option is available and shows SQL → Step folds ✅
- If the option is greyed out → Step doesn't fold ❌
Steps that typically fold: SelectRows, RemoveColumns, ChangeType, GroupBy, MergeQueries (on SQL sources), Sort, RenameColumns
Steps that break folding: AddCustomColumn (complex M logic), Pivot/Unpivot (sometimes), operations on non-foldable sources (CSV, Excel)
Best practice: Put foldable steps first (filter, remove columns, change type) before non-foldable steps. This ensures maximum work is pushed to the source.
Visualization & Reporting
Q23. What are best practices for designing Power BI reports? Medium
Layout & Design:
- ✅ Use a consistent color palette (3–5 colors max) aligned with brand guidelines
- ✅ Place key KPIs at the top — readers scan top-left to bottom-right
- ✅ Use whitespace strategically — don't cram every pixel
- ✅ Title every visual clearly — "Monthly Revenue by Region" beats "Chart 1"
- ✅ Use tooltips to provide detail without cluttering the report
Visual Selection:
| Data Scenario | Recommended Visual |
|---|---|
| Trend over time | Line chart |
| Part-to-whole | Donut/Pie (≤5 categories) or Stacked bar |
| Comparison across categories | Bar/Column chart |
| Geographic data | Map / Filled map |
| KPI single value | Card / KPI visual |
| Detailed records | Table / Matrix |
| Correlation | Scatter plot |
| Flow/Process | Decomposition tree |
Performance:
- ❌ Avoid more than 8 visuals per page (each fires a query)
- ❌ Avoid high-cardinality columns in visuals (10,000+ unique values in a slicer)
- ✅ Use bookmarks for toggling views instead of cramming everything on one page
Q24. What is Drill-Through in Power BI and how do you set it up? Medium
Setup steps:
- Create a detail page (e.g., "Product Details")
- Add the drill-through field to the Drill-through filters well on that page (e.g., drag
Products[Category]there) - Add visuals showing granular details on this page
- Power BI automatically adds a Back button — users can return to the source page
Cross-report drill-through: In Power BI Service, you can drill from one report to a completely different report, enabling modular report design where a summary report drills into specialized detail reports.
Key setting: The drill-through filter can have "Keep all filters" toggled ON to carry the full filter context from the source page.
Q25. Explain Conditional Formatting in Power BI. Easy
Available on: Tables, Matrix, Cards, and some chart elements.
Types:
| Type | Description | Example |
|---|---|---|
| Background color | Cell fill based on value | Red for negative, Green for positive |
| Font color | Text color changes | Grey for low priority, Red for critical |
| Data bars | In-cell bar charts | Revenue bars in a table |
| Icons | KPI indicator icons | ✅ ⚠️ ❌ based on thresholds |
| Web URL | Clickable links | Dynamic hyperlinks |
Methods:
- Color scale — Gradient from min to max
- Rules — If value between X and Y, apply color Z
- Field value — Use a DAX measure or column to drive the color
DAX-driven conditional formatting:
KPI Color =
SWITCH(
TRUE(),
[Profit Margin] >= 0.2, "#00B050", // Green
[Profit Margin] >= 0.1, "#FFC000", // Yellow
"#FF0000" // Red
)
Then use this measure as the "Field value" in the conditional formatting dialog.
Q26. What are Bookmarks and how are they used in Power BI? Easy
Use cases:
- Toggle views — Switch between chart view and table view on the same page using buttons + bookmarks
- Presentation mode — Create a guided, step-by-step story through your data
- Reset filters — A "Reset" button that restores the default slicer state
- Show/hide panels — Filter panel that slides in/out
- Custom navigation — Build a multi-page app with custom navigation buttons
Setup:
- Configure the page state (filters, visible visuals)
- View → Bookmarks Pane → Add bookmark
- Insert a Button → Set Action = Bookmark → Select the bookmark
Personal vs Report bookmarks:
- Report bookmarks — Created by the author, visible to all viewers
- Personal bookmarks — Created by viewers in the Service for their own saved views
Admin & Deployment
Q27. What is Row-Level Security (RLS) and how do you implement it? Hard
Implementation steps:
Step 1 — Define roles in Power BI Desktop: Modeling tab → Manage Roles → Create a role with DAX filter:
// Role: RegionManager
// Table: Sales
// DAX Filter Expression:
[Region] = USERPRINCIPALNAME()
Or static assignment:
// Role: WestRegion
[Region] = "West"
Step 2 — Test in Desktop: Modeling → View as Roles → Select the role → Verify filtered data
Step 3 — Assign users in Power BI Service: Dataset → Security → Add members (users/groups) to each role
Dynamic RLS example with a security table:
UserSecurityTable:
| Email | Region |
|-------|--------|
| [email protected] | West |
| [email protected] | East |
| [email protected] | North |
// DAX Filter on UserSecurityTable:
[Email] = USERPRINCIPALNAME()
Relationship: UserSecurityTable[Region] → Sales[Region] (filter propagates, restricting Sales to the user's assigned regions)
Q28. What are Workspaces and Deployment Pipelines in Power BI Service? Medium
Workspaces are collaborative containers in Power BI Service for organizing related dashboards, reports, datasets, and dataflows. They replace the legacy "groups."
| Feature | My Workspace | Shared Workspace |
|---|---|---|
| Visibility | Only you | All workspace members |
| Collaboration | No | Yes — roles: Admin, Member, Contributor, Viewer |
| Apps | No | Can publish as an App for broad distribution |
| Recommended for | Personal development/testing | Team collaboration and production content |
Deployment Pipelines provide a managed promotion workflow:
[Development] → [Test] → [Production]
- Create content in Development workspace
- Promote to Test for UAT/validation
- Promote to Production for end users
- Each stage has its own workspace and data source bindings
- Parameter rules let you automatically switch data sources per stage (e.g., Dev SQL → Prod SQL)
Why it matters: Deployment Pipelines bring DevOps practices (CI/CD) to Power BI, eliminating manual PBIX re-publishing and reducing deployment errors.
Q29. What is a Power BI Gateway and when do you need it? Medium
When you need a gateway:
- Scheduled refresh for datasets connected to on-premises SQL Server, Oracle, SAP, file shares, etc.
- DirectQuery/Live Connection to on-premises Analysis Services
- Any data source behind a corporate firewall
Two types:
| Type | Use Case |
|---|---|
| Standard (Enterprise) | Shared across the organization. Multiple data sources, multiple users. Managed centrally by IT. |
| Personal | Single user only. Installed on your machine. Good for individual scheduled refresh. |
Architecture: The gateway runs as a Windows service on an on-premises machine. It establishes an outbound connection to Azure Service Bus (no inbound firewall ports needed). When Power BI Service triggers a refresh, it sends a request through Service Bus → Gateway → On-premises source → Data flows back.
Best practices:
- ✅ Install Standard Gateway on a dedicated, always-on server (not a laptop)
- ✅ Add multiple admins to the gateway cluster for failover
- ❌ Don't install on the same machine as the database server (resource contention)
Advanced Topics
Q30. Explain Composite Models, Aggregations, and performance optimization strategies in Power BI. Hard
Composite Models allow a single Power BI model to combine Import and DirectQuery tables in the same report. Introduced as a game-changer for large-scale enterprise BI.
| Scenario | Mode |
|---|---|
| Frequently queried dimension tables (Products, Dates) | Import (fast) |
| Large fact table with billions of rows | DirectQuery (no size limit) |
| Summary/aggregate table | Import (pre-computed) |
Aggregations take this further by creating pre-aggregated Import tables that Power BI automatically uses for high-level queries, falling back to DirectQuery for drill-down details.
User clicks "Total Sales by Year" → Hits Import aggregation table (instant)
User drills down to "Sales by Product by Day" → Falls through to DirectQuery (live)
Setup: Define aggregation mappings (Sum of Amount, Count of Rows grouped by Year, Region) and Power BI handles the routing transparently.
Performance Optimization strategies:
| Area | Optimization |
|---|---|
| Data Model | Star schema, remove unused columns, avoid calculated columns where measures suffice |
| DAX | Use variables (VAR), avoid nested CALCULATE, prefer DIVIDE over division operator |
| Power Query | Enable query folding, filter early, remove columns early, disable auto-detect types |
| Visuals | Limit visuals per page (≤8), avoid high-cardinality slicers, use bookmarks for toggling |
| Storage | Use aggregations for billion-row tables, Import for dimensions, DirectQuery for detail |
| Refresh | Incremental refresh for large tables (requires RangeStart/RangeEnd parameters) |
| Monitoring | Use Performance Analyzer (Desktop) and Azure Log Analytics (Service) to identify slow queries |
Performance Analyzer workflow:
- Open Performance Analyzer in Power BI Desktop (View tab)
- Start recording → interact with the report
- Analyze per-visual timings — identify the slowest DAX query or visual
- Copy the DAX query → paste into DAX Studio for detailed profiling
Tips for Power BI Interviews
Before the Interview
- Build a portfolio project — Create a Power BI report on a public dataset (Kaggle, government data) and publish it to your Power BI Service. Share the link in your resume.
- Practice DAX in DAX Studio — Download it (free) and run queries against sample models. It's the best way to internalize CALCULATE, context, and iterators.
- Know the licensing model — Free vs Pro vs Premium Per User (PPU) vs Premium Per Capacity. Interviewers often ask about this.
- Understand the end-to-end workflow — Don't just know DAX. Know Power Query, data modeling, visualization, publishing, gateway, and RLS.
During the Interview
- Think aloud — When asked a DAX question, explain your thought process: "First I need to remove the filter context, then apply a new date filter..."
- Draw the data model — If given a scenario, sketch a Star Schema on paper/whiteboard before writing DAX.
- Mention trade-offs — "I'd use Import mode for performance, but DirectQuery if data freshness is critical" shows senior-level thinking.
- Ask clarifying questions — "Is this measure supposed to respond to slicers, or show a fixed total?" demonstrates you understand filter context.
Common Mistakes to Avoid
- Confusing measures and calculated columns — Know when to use each (Q8)
- Forgetting to mark the Date Table — Time intelligence will silently fail (Q9)
- Overusing bidirectional relationships — Leads to ambiguity and performance issues (Q7)
- Writing DAX without variables — Makes debugging harder and can cause double-evaluation
Conclusion
Power BI has evolved from a simple reporting tool into a comprehensive enterprise BI platform. Interview questions now span the full spectrum — from basic concepts like components and connectivity modes to advanced topics like composite models, context transition, and performance optimization.
Key takeaway: The strongest Power BI candidates aren't just DAX wizards — they understand the entire data pipeline from source to dashboard, can make architectural decisions (Import vs DirectQuery, Star Schema vs flat tables), and can explain why they'd choose one approach over another.
Focus your preparation on these pillars:
- Data Modeling — Star Schema, relationships, cardinality
- DAX Mastery — CALCULATE, filter context, context transition, time intelligence
- Power Query — Query folding, transformations, parameters
- Architecture — Gateways, RLS, deployment pipelines, composite models
- Visualization — Best practices, drill-through, bookmarks, conditional formatting
Master these, and you'll handle any Power BI interview thrown at you — whether it's at a service company, product company, or consulting firm.
Found this guide helpful? Explore more interview preparation resources on PapersAdda. Check out our SQL Interview Questions 2026, Data Structures Interview Questions 2026, and System Design Interview Questions 2026 for a complete technical interview prep toolkit.
Explore this topic cluster
More resources in Interview Questions
Use the category hub to browse similar questions, exam patterns, salary guides, and preparation resources related to this topic.
Related Articles
Accenture Interview Questions 2026
Round Description Duration Key Focus Areas Round 1: Cognitive Assessment Online aptitude and reasoning test 90 mins...
Adobe Interview Questions 2026
Stage Description Duration Round 1: Online Assessment Aptitude, Coding, Technical MCQ 120 minutes Round 2: Technical...
Barclays Interview Questions 2026
Stage Description Duration Round 1: Online Assessment Cognitive ability, Behavioral, Coding 90-120 minutes Round 2:...
Capgemini Interview Questions 2026
Round Description Duration Key Focus Areas Round 1: Online Test Aptitude + Technical MCQs + Essay 120 mins Quantitative,...
Cgi Interview Questions 2026
Stage Description Duration Round 1: Online Assessment Aptitude, Logical, Verbal, Technical MCQs 60-90 minutes Round 2:...
More from PapersAdda
Top 30 HR Interview Questions with Best Answers (2026)
Top 30 System Design Interview Questions for 2026
Top 40 React.js Interview Questions & Answers (2026)
Top 50 Data Structures Interview Questions 2026