Power BI full mock exam
12 questions sampled across all 4 modules. Timed like the real thing: answer everything, then review the explanations.
Where should you remove unneeded columns?
- In DAX with a measure
- In Power Query before load
- In the report visual
- In the Service after publishing
Answer: In Power Query before load — Columns removed in Power Query never enter the model, so they cost nothing in size or refresh.
Which action commonly breaks query folding?
- Filtering rows
- Removing columns
- Adding an index column
- Renaming a column
Answer: Adding an index column — An index column has no SQL equivalent, so folding stops there and later steps run locally.
What does query folding mean?
- Collapsing steps
- Power Query translates steps into a query the source runs
- Compressing the file
- Merging queries
Answer: Power Query translates steps into a query the source runs — It keeps the work in the database.
Why is a dedicated Date table required?
- To make reports look tidier
- Time intelligence functions depend on it
- It reduces file size
- DirectQuery needs it
Answer: Time intelligence functions depend on it — Functions like SAMEPERIODLASTYEAR require a contiguous, marked date table to work correctly.
Why avoid setting cross-filter direction to Both globally?
- It is slower to refresh
- It creates ambiguous filter paths and possible circular dependencies
- It breaks DirectQuery
- It disables slicers
Answer: It creates ambiguous filter paths and possible circular dependencies — Ambiguity means the engine may resolve paths unexpectedly; CROSSFILTER in a measure is safer.
USERELATIONSHIP must be used inside:
- SUMX
- CALCULATE
- FILTER
- A calculated column
Answer: CALCULATE — It is a filter modifier.
You want a percent of the total the user has currently selected via slicers. Use:
- ALL
- ALLSELECTED
- REMOVEFILTERS
- KEEPFILTERS
Answer: ALLSELECTED — ALLSELECTED clears the visual filter but keeps slicer and page filters — percent of visible total.
Prior-year measures return blank for recent months. Most likely cause?
- Wrong DAX function
- The Date table does not cover complete years
- Too many relationships
- DirectQuery mode
Answer: The Date table does not cover complete years — Time intelligence needs a contiguous date table spanning full years, or edge periods break.
Why prefer DIVIDE over the / operator?
- It is faster
- It returns blank instead of erroring on divide by zero
- It handles text
- It respects slicers
Answer: It returns blank instead of erroring on divide by zero — DIVIDE has built-in divide-by-zero handling and an optional alternate result.
You want a summary visual to send users to a detail page carrying the selected product. Use:
- Bookmark
- Drillthrough
- Drill down
- Sync slicer
Answer: Drillthrough — Drillthrough passes the selected context to a dedicated detail page.
Which function should dynamic RLS use to identify the viewer?
- USERNAME()
- USERPRINCIPALNAME()
- CUSTOMDATA()
- LOOKUPVALUE()
Answer: USERPRINCIPALNAME() — USERPRINCIPALNAME returns the UPN consistently in both Desktop and the Service.
Drill-through differs from drill-down because it:
- Is faster
- Navigates to another page carrying the selected context
- Only works on dates
- Requires a hierarchy
Answer: Navigates to another page carrying the selected context — Drill-down stays within one visual.