Free Interactive Flashcards
Master SQL, Python, Power BI, PMP and more with our free interactive flashcards. Study at your own pace, test your knowledge, and track your progress.
Showing 500 of 500 free flashcards
Concept
What is a fuzzy merge?
Show Answer
A merge that matches similar but not identical text, using a similarity threshold, optional transformation table and case and space options. **Why:** It helps with typos like "Infosys Ltd" vs "Infosys Limited", but check the results; a low threshold creates false matches.
Trick question
Trick question: you add a sales manager as a Member of the workspace and also to an RLS role that limits them to the West region. What do they see?
Show Answer
All regions; RLS doesn't apply to Admins, Members or Contributors. **Why:** Those roles can edit the semantic model, so security can't be enforced on them. Give restricted users Viewer or app access.
Scenario
A CSV from the UK has dates like 03/04/2025 that load as 4 March instead of 3 April. How do you fix it?
Show Answer
Use Change type > Using locale, choose Date with English (United Kingdom). **Why:** Power Query reads text dates with your computer's locale by default. Setting the source locale tells it the day comes first.
Interview question
Interview: what is the difference between merge and append?
Show Answer
Merge joins tables side by side on matching keys (adds columns); append stacks tables with the same columns (adds rows). **Why:** A simple way to remember: merge = join, append = union.
Concept
What is the difference between Promoted and Certified content?
Show Answer
Any user with write access to an item can promote it; only reviewers the admin authorises can certify it. **Why:** Certified means the organisation vouches for it, which helps users pick the "official" semantic model.
Interview question
Interview: refresh takes 3 hours on Pro and sometimes times out. What would you do?
Show Answer
Remove unused columns and rows, make sure steps fold, use incremental refresh, and move heavy transformations upstream; consider capacity if it still doesn't fit. **Why:** Shared capacity stops at two hours, so the fix is mostly less data and more folding, not just a bigger licence.
Common mistake
Common mistake: making every report reader a Member "so they can see everything". What should you do instead?
Show Answer
Give readers the Viewer role or, better, access through an app. **Why:** Members can edit and delete content and bypass row-level security. Least privilege keeps content safe.
Concept
What is a OneLake shortcut?
Show Answer
A pointer in a lakehouse to data stored elsewhere (another OneLake location or external storage) that appears as if it were local. **Why:** Shortcuts avoid copying data; Direct Lake semantic models can use shortcut tables as sources.
Concept
What can Edit interactions change?
Show Answer
Whether selecting data in one visual filters, highlights or has no effect on each other visual on the page. **Why:** Sometimes a total card should ignore clicks on a chart. Edit interactions sets this per pair of visuals.
Concept
What are user-defined aggregations in Power BI?
Show Answer
Smaller summary tables (often Import) that Power BI uses automatically instead of a large detail table when a query only needs summary data. **Why:** Visuals at summary level hit the fast aggregation table, and only drill-to-detail queries go to the big DirectQuery table.
What does it return?
Customer A has sales 100 and B has 300. In a card with no filters, what does this measure show? ```dax Avg per Customer = AVERAGEX ( Customer, [Total Sales] ) ```
Show Answer
200. **Why:** AVERAGEX evaluates [Total Sales] for each customer through context transition (100 and 300) and averages them. Customers with no sales return blank and are ignored.
Concept
Why would an author ask Copilot to summarise the underlying semantic model?
Show Answer
To get a quick plain-language overview of what the model contains, such as its main tables, measures and what questions it can answer. **Why:** It helps when you inherit a model or start a new report, before you dig into the model view.
Trick question
Trick question: does `// ...` start a comment in M?
Show Answer
Yes; M supports // for a line comment and /* ... */ for a block. **Why:** Comments in the Advanced Editor survive, so use them to explain unusual steps.
Concept
What is object-level security (OLS)?
Show Answer
A semantic model security setting that hides tables or columns from members of a role, so they can't see or query them. **Why:** Unlike hiding a field, OLS makes visuals that use the secured column fail for those users, which protects things like salary data.
Concept
What does ADDCOLUMNS ( VALUES ( Product[Category] ), "Sales", [Total Sales] ) return?
Show Answer
A table of categories with a Sales column calculated for each one. **Why:** ADDCOLUMNS adds computed columns to a table. The measure gets context transition per category row.
Trick question
Trick question: does applying a "Confidential" sensitivity label to a report stop people in the workspace from opening it?
Show Answer
Not by itself; Power BI access is still controlled by workspace roles and permissions. **Why:** The label classifies the item and protects exported files. Who can open the report is still set by permissions.
Concept
Write a year-to-date sales measure with classic time intelligence.
Show Answer
`Sales YTD = TOTALYTD ( [Total Sales], 'Date'[Date] )` **Why:** TOTALYTD needs a proper date column, ideally from a marked date table, and adds up from the start of the year to the last date in context.
Scenario
Your data engineers keep a 2-billion-row gold sales table in a Fabric lakehouse refreshed every 15 minutes. Analysts want fast reports without waiting for big imports. What do you suggest?
Show Answer
A Direct Lake semantic model on the gold Delta tables, with capacity sized for the guardrails (for example F128 or above for 3 billion rows per table). **Why:** Direct Lake avoids copying the data and picks up new versions quickly through framing, with VertiPaq query speed.
Concept
What is My workspace, and why not use it for team content?
Show Answer
Your personal workspace. Content there can't be shared through workspace roles or apps, and it belongs to you alone. **Why:** If you leave the company, content in My workspace is hard to recover. Team content belongs in a shared workspace.
Trick question
Trick question: when you deploy a semantic model from Test to Production, is the data copied as well?
Show Answer
No; metadata is copied, not data. The model in Production must be refreshed to load data. **Why:** Deployment clones definitions. Refresh (and credentials) are handled in each stage's workspace.
Concept
What was EARLIER used for, and what do people write today instead?
Show Answer
EARLIER reaches the outer row context in nested iterations. Today, a variable that stores the outer value is clearer. **Why:** `VAR CurrentPrice = Product[Price] RETURN COUNTROWS ( FILTER ( Product, Product[Price] > CurrentPrice ) )` reads more easily than EARLIER.
Scenario
Orders holds shipping cost per order; OrderLines has one row per product. Users want shipping cost by product category. What do you do?
Show Answer
Allocate shipping cost to order lines with a rule (for example by line value), or keep it at order level and show it only by order attributes. **Why:** An order-level value can't be split by product without a rule. Allocating to lines makes it additive at product grain; otherwise totals by category double count.
Concept
How much data does key influencers need, roughly?
Show Answer
Microsoft suggests at least 100 observations for the selected state and at least 10 for the comparison states, and it analyses a sample of up to 10,000 data points. **Why:** Too little data gives "no influencers found"; too many categories with few rows each does too.
Concept
What does a DAX query start with, and what does DEFINE add?
Show Answer
EVALUATE followed by a table expression; DEFINE lets you declare measures, variables, columns or functions used only in that query. **Why:** You test measure changes in DAX query view by defining a new version in DEFINE MEASURE and evaluating it before updating the model.
What does it return?
What does this return when [Amount] is the text "N/A"? ```m try Number.From([Amount]) otherwise 0 ```
Show Answer
0. **Why:** Number.From("N/A") raises an error; try ... otherwise catches it and returns the fallback value.
Scenario
A measure uses FILTER ( Sales, [Total Sales] > 1000 ) over a 100-million-row Sales table and is slow. What would you change?
Show Answer
Iterate a smaller table, such as VALUES ( Customer[CustomerKey] ) or the dimension you actually need, and compare with a variable. **Why:** Iterating the fact table and calling a measure per row triggers context transition millions of times. Iterating the dimension does far less work.
What does it return?
An RLS role on the Region table has this filter. What does a user in the role see? ```dax [Region] = "West" ```
Show Answer
Only rows related to the West region, in every table filtered by Region. **Why:** The filter applies to Region and flows through relationships to fact tables, so sales of other regions disappear.
Interview question
Interview: "Why not just load one big flat table into Power BI?"
Show Answer
A flat table repeats descriptive text on every row, can't hold facts at different grains, and makes some DAX harder. A star schema is smaller and more flexible. **Why:** Power BI compresses repeated values but still stores more. More importantly, a second fact table (like budget) has nowhere to go in a flat design.
Trick question
Trick question: after preparing your model for AI, will Copilot always give the same answer to the same question?
Show Answer
No. **Why:** Microsoft notes that these features can't guarantee a specific output; AI behaviour is nondeterministic. Preparation improves consistency but doesn't make it exact.
Concept
What is Microsoft Fabric, in one sentence?
Show Answer
Microsoft's analytics platform that brings data engineering, data integration, warehousing, data science, real-time analytics and Power BI onto shared capacity and one data lake, OneLake. **Why:** Power BI is one Fabric workload, so Fabric features like Direct Lake and Copilot capacity affect how Power BI is deployed.
Concept
What does Add Column > Custom column create?
Show Answer
A new column computed with an M formula for each row, such as [Quantity] * [Unit Price]. **Why:** The generated step uses Table.AddColumn with an each function, which runs once per row.
Concept
What is the difference between Reference and Duplicate on a query?
Show Answer
Duplicate copies all the steps into an independent query. Reference creates a new query whose source is the original query's output. **Why:** Referenced queries change when the original changes, which keeps shared logic in one place.
Concept
What licensing does Direct Lake need?
Show Answer
A Fabric capacity (F SKU, or a remaining P SKU); Import and DirectQuery work with any Power BI licence. **Why:** Direct Lake also can't be created in My workspace.
Concept
What does "Personalize visuals" let report readers do?
Show Answer
Change a visual's type, fields or summarisation for their own view, without edit rights and without changing the report for others. **Why:** Readers can answer small follow-up questions themselves. Authors can turn it on for the report and choose which fields are available through perspectives.
Concept
Why does almost every model need its own date table?
Show Answer
To give one consistent calendar (year, quarter, month, fiscal periods) that all facts share and time intelligence can use. **Why:** A dedicated date table lets you control fiscal years, holidays and sorting, and avoids one hidden auto date table per date column.
Trick question
Trick question: a user has Power BI Pro and a report in a Pro workspace. Can they use the Copilot pane on it?
Show Answer
Not with Pro alone; Copilot needs a capacity, such as moving the workspace to F2+ or assigning the user to a Fabric Copilot capacity. **Why:** Microsoft documents that a Pro or PPU licence alone isn't sufficient. A Fabric Copilot capacity can bill Copilot use from Pro and PPU workspaces.
Concept
What is a semi-additive measure?
Show Answer
A measure that can be added across some dimensions but not across time, such as a stock level or account balance. **Why:** Adding balances for every day of a month makes no sense; you want the balance at the end of the month.
What does it return?
The filter context is 1–31 March 2025. Which dates does `DATEADD ( 'Date'[Date], -1, MONTH )` return?
Show Answer
1–28 February 2025. **Why:** DATEADD shifts each date back a month; March dates without a matching February date (29–31) collapse to the end of February.
What does it return?
In a table visual showing Month and Sales (Jan 10, Feb 20, Mar 30), what does this visual calculation return for March? ```dax Running = RUNNINGSUM ( [Sales] ) ```
Show Answer
60. **Why:** RUNNINGSUM adds the current row to all rows above it on the visual's axis: 10 + 20 + 30.
Concept
What happens when scheduled refresh keeps failing?
Show Answer
Owners get failure emails, and after several consecutive failures the service disables the schedule. **Why:** Leave failure notifications on and add the team to the notification list so someone acts quickly.
Fix the code
This title measure errors when more than one region is selected. Fix it. ```dax Title = "Sales for " & VALUES ( Region[Region] ) ```
Show Answer
`Title = "Sales for " & SELECTEDVALUE ( Region[Region], "all regions" )` **Why:** VALUES returns a table, which can't be joined to text when it has more than one row. SELECTEDVALUE returns one value or the fallback.
Scenario
Users don't discover right-click drillthrough. How can you make it obvious?
Show Answer
Add a button with the Drill through action pointing to the detail page; it becomes active when a user selects a data point. **Why:** The button can show helper text such as "Select a product to see details", which teaches the interaction.
Concept
How can you recover a previous version of a semantic model edited in the service?
Show Answer
Use the semantic model's version history in the service, if it is available for that model, to restore an earlier version. **Why:** Editing models on the web is convenient; version history gives a safety net. Git integration provides a fuller history.
Concept
What does the Folder connector do?
Show Answer
It lists every file in a folder and can combine files with the same structure into one table, using a sample file to define the transformation. **Why:** Monthly CSV exports dropped in one folder load automatically each refresh without editing the query.
Concept
How do you get Copilot to write a measure description?
Show Answer
Select the measure in Model view and choose "Create with Copilot" under the Description box, then keep or edit the result. **Why:** Descriptions appear to report authors and help Copilot. If you change the measure later, run it again; it doesn't update by itself.
Interview question
Interview: a report is slow. Walk through how you find the cause.
Show Answer
Use Performance Analyzer to find the slow visuals, copy their queries into DAX query view or DAX Studio, check whether time is in the measure or the visual, then look at model size, relationships and cardinality. **Why:** The answer shows you measure before you change things: narrow down to a visual, then a query, then the model.
Concept
What is special about Copilot in apps?
Show Answer
It answers questions and summarises content within the app's curated scope, and can return verified answers that the app's authors prepared. **Why:** App authors can turn it on or off per app (Show Copilot in app navigation). Responses respect the user's permissions within the app.
Concept
What licence do you need to share content and collaborate in a workspace on shared capacity?
Show Answer
Power BI Pro (or Premium Per User) for both the person sharing and the people viewing. **Why:** On shared capacity every consumer needs Pro or PPU. Free users can only view content in workspaces on F64 or larger (or P) capacity.
What does it return?
The current context is May 2025. Which dates does `DATESYTD ( 'Date'[Date] )` return?
Show Answer
1 January 2025 to 31 May 2025. **Why:** DATESYTD returns the year's dates up to the last date in context, which a CALCULATE then uses to total the year so far.
Concept
In Import mode, where does the data live when a report runs?
Show Answer
In a compressed in-memory copy inside the semantic model, loaded at refresh time. **Why:** Queries hit the VertiPaq engine instead of the source, so Import is usually the fastest mode, but the data is only as fresh as the last refresh.
Common mistake
Common mistake: enabling bidirectional filtering everywhere so that the security table filters every table. What is the safer pattern?
Show Answer
Use bidirectional filtering (with security filter in both directions) only on the security table's relationship, and keep the rest of the model single direction. **Why:** Bidirectional relationships everywhere slow queries and can create ambiguity. Only the security path needs it.
Concept
Where should security be enforced when a DirectQuery model's source already has its own user-level security?
Show Answer
Either in the source (by passing each user's identity with single sign-on) or with RLS in the semantic model. **Why:** With SSO, the source applies its own rules for each user. Without SSO, queries run with stored credentials, so you need RLS in the model.
Concept
What do you need for the built-in forecast on a line chart?
Show Answer
A continuous date or number axis and a single measure, without a legend. **Why:** The forecast extends one series forward and shades a confidence interval. Multiple series in a legend aren't supported for it.
Scenario
Year-over-year growth looks great, but the business opened 20 new stores this year. How do you give a fairer comparison?
Show Answer
A like-for-like measure that only includes stores open in both periods, for example by filtering stores whose open date is before the start of last year's period. **Why:** New stores have no prior-year sales, so they inflate growth. A store flag or a filter on open date compares the same set of stores.
Interview question
Interview: what happens, step by step, when CALCULATE runs?
Show Answer
It copies the current filter context, applies context transition if there is a row context, applies its filter arguments (removing, replacing or keeping filters), then evaluates the expression. **Why:** Explaining this order shows you understand why filter arguments can override slicers and why measures behave differently inside iterators.
What does it return?
What does this DAX query return? ```dax EVALUATE SUMMARIZECOLUMNS ( 'Date'[Year], "Sales", [Total Sales] ) ```
Show Answer
A table with one row per year that has sales, and a Sales column. **Why:** SUMMARIZECOLUMNS groups by Year and evaluates the measure for each; years where every measure is blank are left out.
What does it return?
A slicer selects Year = 2025. On the West row, what does `CALCULATE ( [Total Sales], ALL ( Region ) )` return?
Show Answer
Total sales of all regions for 2025. **Why:** ALL ( Region ) only removes filters on the Region table. The year filter on the Date table still applies.
What does it return?
What does this return? ```m Date.AddDays(#date(2025, 2, 27), 3) ```
Show Answer
2 March 2025 (#date(2025, 3, 2)). **Why:** 2025 isn't a leap year, so three days after 27 February is 28 February, 1 March, then 2 March.
Concept
What is a Type 2 slowly changing dimension?
Show Answer
A dimension that keeps history by adding a new row (with a new surrogate key and valid-from/to dates) when an attribute changes. **Why:** A customer who moved region last year still reports old sales under the old region, which is what auditors usually expect.
Fix the code
This should show sales by ship date but still follows order date. Fix it (Sales[ShipDate] has an inactive relationship to 'Date'[Date]). ```dax Sales by Ship Date = CALCULATE ( [Total Sales], Sales[ShipDate] ) ```
Show Answer
`CALCULATE ( [Total Sales], USERELATIONSHIP ( Sales[ShipDate], 'Date'[Date] ) )` **Why:** Mentioning the column isn't enough. USERELATIONSHIP activates the inactive relationship for this calculation.
Fix the code
This step fails with "We couldn't parse the input provided as a Date value" for values like "07-03-2025" (day first). Fix it. ```m Typed = Table.TransformColumnTypes(Source, {{"OrderDate", type date}}) ```
Show Answer
Give a culture: `Table.TransformColumnTypes(Source, {{"OrderDate", type date}}, "en-IN")` (or "en-GB"). **Why:** The culture tells Power Query the text uses day-month-year order.
Concept
What is row-level security (RLS)?
Show Answer
Rules on a semantic model that filter which rows each user can see, for example only their own region. **Why:** One model and report serve everyone, and each user sees only their permitted data.
Concept
What is an implicit measure?
Show Answer
The automatic aggregation Power BI creates when you drag a numeric column into a visual, such as "Sum of Amount". **Why:** Explicit measures are better practice: they are reusable, named clearly, work with calculation groups and are easier for Copilot to use.
Scenario
Column profile shows OrderAmount has a minimum of -99,999 and most values between 100 and 5,000. What do you do?
Show Answer
Investigate whether -99,999 is a placeholder for missing or test data, then replace it with null or filter it out, documenting the rule. **Why:** Placeholder values distort averages and totals. Confirm the meaning with the data owner before removing them.
Concept
What does anomaly detection do on a line chart?
Show Answer
It marks points outside an expected range and, when you select one, explains which fields are associated with the anomaly. **Why:** It speeds up "why did this day spike?" questions without manual slicing.
Trick question
Trick question: you define an RLS role in Desktop and publish. Is anyone restricted yet?
Show Answer
No. Until you add users or groups to the role in the service, nobody is a member of it. **Why:** Defining roles and assigning members are separate steps; also, editors of the workspace are never restricted.
Common mistake
Common mistake: important semantic models are owned by one analyst's account with their personal credentials. What is the risk and fix?
Show Answer
Refresh breaks when the analyst leaves or changes their password. Use shared connections or service accounts, take over ownership in time, and keep content in team workspaces. **Why:** Ownership and credentials should belong to the team or a service principal, not to one person.
Concept
What is a surrogate key and why use one?
Show Answer
A simple integer key you create for a dimension instead of relying on a long text or composite business key. **Why:** Integers compress well and make relationships fast. They also let you handle slowly changing dimensions where one business key has several versions.
Concept
How do you replace null values in a column with 0?
Show Answer
Select the column, Replace values, value to find null, replace with 0. **Why:** The generated M uses Table.ReplaceValue with null. Only do this when null really means zero; sometimes "unknown" is more honest.
Concept
What are the four workspace roles?
Show Answer
Admin, Member, Contributor and Viewer. **Why:** Each role adds rights: Viewers read, Contributors create and edit content, Members can also share and add people, and Admins manage everything including deleting the workspace.
Concept
Name three Copilot experiences for business users in Power BI.
Show Answer
The Copilot pane in a report, the standalone Copilot experience (full screen from the left navigation), and Copilot in apps. **Why:** Microsoft lists the report pane as generally available, while standalone Copilot and Copilot in apps are in preview.
Concept
What is the difference between CALCULATE and CALCULATETABLE?
Show Answer
CALCULATE returns a scalar value; CALCULATETABLE returns a table, both evaluated in a modified filter context. **Why:** Use CALCULATETABLE when you need a filtered table, for example inside COUNTROWS or as an iterator's input.
Concept
How do you colour bars by a rule written in DAX, like "red below target, green above"?
Show Answer
Write a measure that returns a colour name or hex code, then use Format > Colours > fx > Field value with that measure. **Why:** Field value formatting reads the colour straight from the measure, so the rule lives in one place and can be reused.
Fix the code
This calculated column in Sales fails with "a single value for column Category cannot be determined". Fix it. ```dax Category = Product[Category] ```
Show Answer
`Category = RELATED ( Product[Category] )` **Why:** A calculated column in Sales has a row context on Sales only. RELATED follows the relationship to Product to fetch the matching row's value.
Concept
What is dynamic row-level security?
Show Answer
One role whose filter uses the signed-in user's identity, such as `[Email] = USERPRINCIPALNAME()`, on a table that maps users to what they may see. **Why:** Instead of one role per region, a single role reads a security table, so adding a person is a data change, not a model change.
Scenario
Your model is 2 GB. Most of it is Sales[TransactionTimestamp] and a GUID column nobody uses. What do you do?
Show Answer
Remove the GUID, and split the timestamp into a date column (and an hour column if needed) or drop the time part. **Why:** Both columns have nearly one unique value per row, so they barely compress. Removing columns nobody reports on is the cheapest speed-up there is.
Concept
What are display folders and descriptions for in a model?
Show Answer
Display folders group measures and columns in the field list; descriptions show as tooltips and help Copilot and authors understand fields. **Why:** A tidy, documented model is easier to use and gives Copilot better context, since it reads names and descriptions.
Scenario
An Excel export has a report title in the first three rows and the real headers on row 4. How do you clean it?
Show Answer
Remove top rows (3), then Use first row as headers. **Why:** Removing by position is fine if the layout is stable. If it varies, filter rows using a known header value instead.
Concept
What does Group By do in Power Query?
Show Answer
It groups rows by one or more columns and aggregates others (sum, count, min, max, all rows). **Why:** Use it to reduce granularity before loading, for example from transactions to daily totals per store.
Concept
What is calendar-based time intelligence?
Show Answer
A newer (preview) approach where you define calendars on a table, mapping columns to categories like Year, Month and Week, and pass the calendar to functions such as TOTALYTD ( [Sales], 'Fiscal Calendar' ). **Why:** It supports any calendar (retail 4-4-5, 13-month), week-based functions like TOTALWTD, and doesn't need a gap-free date column.
Scenario
You ask Copilot to "create a page showing sales performance by region" and it picks odd fields. What should you improve first?
Show Answer
The semantic model: clear table, column and measure names, descriptions and relationships, plus Prep data for AI settings. **Why:** Copilot builds from model metadata. Generic names like "Column1" or "Measure 3" give it little to work with.
Concept
How do you sort a bar chart by a measure that is not shown on it?
Show Answer
Add the measure to the tooltips well, then choose Sort axis > that measure. **Why:** Visuals can only sort by fields they contain. Putting the field in Tooltips adds it without displaying it on the axis.
Interview question
Interview: why publish an app instead of giving everyone workspace access?
Show Answer
Apps give read-only, curated content with their own navigation and audiences, while the workspace stays a place for developers. **Why:** Developers can work on changes without users seeing half-finished reports, and access is easier to manage.
Concept
What is the difference between groups and bins in Power BI?
Show Answer
Groups combine chosen category values (like several small countries into "Other"); bins split a number or date into equal-size ranges (0–9, 10–19). **Why:** Both create a new field without writing DAX or changing the source.
Concept
What does the "grain" of a fact table mean?
Show Answer
The level of detail one row represents, for example one row per order line per day. **Why:** Every fact table needs a clear grain. Mixing grains in one table (daily sales and monthly targets) causes double counting.
Interview question
Interview: list the layers of security in Power BI from outside in.
Show Answer
Tenant settings, workspace roles, item and app permissions (including Build), row- and object-level security in the semantic model, and sensitivity labels for classification and export protection. **Why:** Interviewers want to see that you know which layer controls what, and that RLS only restricts viewers.
Concept
What does SELECTEDVALUE ( Product[Colour], "Several" ) return?
Show Answer
The colour if exactly one colour is in the filter context, otherwise "Several". **Why:** It is a shortcut for IF ( HASONEVALUE ( ... ), VALUES ( ... ), alternate ) and is handy in titles and dynamic labels.
Concept
Write a basic measure for total sales from Sales[Amount].
Show Answer
`Total Sales = SUM ( Sales[Amount] )` **Why:** A base measure like this is reused by other measures, so the logic for "sales" lives in one place.
Common mistake
Common mistake: Sales[OrderDate] holds date and time (2025-03-01 14:35) but the Date table holds dates only. What goes wrong?
Show Answer
Most rows fail to match the date table, so date filters return blanks. **Why:** Relationships match exact values. Split the time into its own column, or change OrderDate to a Date type, so keys match.
Concept
What can the Analytics pane add to a line chart?
Show Answer
Reference lines (constant, average, min, max, median, percentile), trend lines, error bars and a forecast. **Why:** These add context such as "are we above average?" directly to the chart without new measures.
Trick question
Trick question: can you turn on anomaly detection for a line chart with Region in the legend?
Show Answer
No. **Why:** Anomaly detection isn't supported with legends, multiple values or secondary values, and needs a time series axis with at least four points.
Concept
Which columns usually make an Import model big?
Show Answer
Columns with many unique values: IDs, timestamps with seconds, long text and high-precision decimals. **Why:** VertiPaq compresses by column, and columns with few distinct values compress best. Removing or simplifying high-cardinality columns shrinks the model most.
Concept
What are AI instructions on a semantic model?
Show Answer
Plain-language guidance for Copilot, such as business definitions ("fiscal year starts in April") or how to interpret fields. **Why:** Instructions add business context that names and descriptions alone don't carry.
Trick question
Trick question: can you use Prep data for AI on a model where Q&A is turned off?
Show Answer
No; Microsoft lists enabling Power BI Q&A on the semantic model as a requirement. **Why:** The tooling builds on the model's linguistic setup, so Q&A must be enabled even though Q&A itself is being retired.
Concept
What are DAX Studio and Tabular Editor used for?
Show Answer
DAX Studio runs and times DAX queries and shows model size statistics; Tabular Editor edits model metadata (measures, calculation groups) quickly. **Why:** Both are popular free or commercial external tools that launch from Power BI Desktop's External tools ribbon.
Fix the code
This measure should total each line's quantity × price, but it gives a huge number. Fix it. ```dax Revenue = SUM ( Sales[Qty] ) * SUM ( Sales[Price] ) ```
Show Answer
`Revenue = SUMX ( Sales, Sales[Qty] * Sales[Price] )` **Why:** The multiplication must happen per row before adding. SUMX iterates the rows and adds the products.
Common mistake
Common mistake: `CALCULATE ( [Total Sales], ALL ( Sales ) )` to ignore a product slicer. What else does it ignore?
Show Answer
Every filter that reaches Sales through relationships too, such as Date, Region and Customer. **Why:** Removing filters from the fact table removes all filters on it. To ignore only products, use ALL ( Product ) or REMOVEFILTERS ( Product ).
Concept
What are privacy levels (Private, Organizational, Public) for?
Show Answer
They stop Power Query from sending data from one source to another source when combining them, for example in a merge. **Why:** Without them, values from a private file could be sent to a public web API as part of a folded query. Mismatched levels can also block or slow combinations.
Concept
What is the difference between the standard gateway and personal mode?
Show Answer
Standard mode serves many users and sources and supports scheduled refresh and DirectQuery; personal mode is for one user, supports import refresh only and can't be shared. **Why:** Organisations use standard mode, managed by IT, for production reports.
Concept
What is Direct Lake storage mode?
Show Answer
A Fabric storage mode that loads columns straight from Delta tables in OneLake into memory when queries need them. **Why:** Queries run on the same VertiPaq engine as Import, but a "refresh" only updates metadata (framing), so there is no full data copy to reload.
What does it return?
A table has a column Score with values 45 and 80. What does the new column contain? ```m Table.AddColumn(Source, "Result", each if [Score] >= 50 then "Pass" else "Fail") ```
Show Answer
"Fail" for 45 and "Pass" for 80. **Why:** each defines a function run for every row; [Score] reads that row's value.
Fix the code
This calculated column in Customer should flag customers with more than 10 orders, but it shows the same result on every row. Fix it. ```dax Is Loyal = IF ( COUNTROWS ( Sales ) > 10, "Yes", "No" ) ```
Show Answer
`Is Loyal = IF ( COUNTROWS ( RELATEDTABLE ( Sales ) ) > 10, "Yes", "No" )` **Why:** A calculated column has a row context but no filter context, so COUNTROWS ( Sales ) counts every sale. RELATEDTABLE returns only the current customer's sales.
Scenario
Reports only ever look at the last three years, but the query loads ten years of transactions. What do you change?
Show Answer
Filter the date column in Power Query (ideally with a folding filter) to keep only the needed period. **Why:** Fewer rows means faster refresh and a smaller model. If older years are needed occasionally, consider a separate aggregated table.
Fix the code
This should return sales from orders above the average order value, but Power BI rejects the filter. Fix it. ```dax Big Order Sales = CALCULATE ( [Total Sales], Sales[Amount] > [Average Order] ) ```
Show Answer
Store the measure in a variable first: `VAR AvgOrder = [Average Order] RETURN CALCULATE ( [Total Sales], Sales[Amount] > AvgOrder )` **Why:** A Boolean filter in CALCULATE can't reference a measure. The variable is evaluated first, so the filter compares the column with a fixed value.
Concept
When is DATESBETWEEN useful?
Show Answer
When you need a custom range between two dates, such as from a campaign start date to the current date in context. **Why:** Unlike DATESINPERIOD, you give both ends explicitly; blank start or end means the earliest or latest date.
Interview question
Interview: a stakeholder asks for a 3D pie chart with 15 slices. What do you say?
Show Answer
Suggest a sorted bar chart (or a top 5 plus "Other") and explain that people compare lengths far better than angles, especially in 3D. **Why:** Interviewers check that you can push back politely with a reason and an alternative, not just follow requests.
Scenario
You add Device to Explain by in key influencers and get an error that the field isn't uniquely related to the Customer table being analysed. Why?
Show Answer
A customer can use several devices, so Device isn't a single attribute of each customer. **Why:** Aggregate it (for example count of devices) or pivot devices into Yes/No columns per customer, so each factor is defined at customer level.
Concept
What does unticking "Include in report refresh" do?
Show Answer
The query keeps its last loaded data and is skipped when you refresh in Desktop. **Why:** Useful in Desktop for static tables (like a list of countries) that are slow to fetch and rarely change, so you don't wait for them on every refresh.
What does it return?
Same matrix with Colour on rows. What does this show on the Blue row? ```dax Red Sales Kept = CALCULATE ( [Total Sales], KEEPFILTERS ( Product[Colour] = "Red" ) ) ```
Show Answer
Blank. **Why:** KEEPFILTERS intersects the new filter with the existing one. The row says Blue and the filter says Red, so no product matches.
Concept
What is context transition?
Show Answer
When CALCULATE runs inside a row context, it turns the current row's values into filters on the model. **Why:** That is why a measure used inside an iterator or calculated column returns the value "for this row's product", and why it can be slow on large tables.
Concept
Name two limitations of the key influencers visual.
Show Answer
For example: it doesn't support DirectQuery, live connections to Azure Analysis Services or SQL Server Analysis Services, or Publish to web. **Why:** Check the storage mode before promising key influencers on a DirectQuery report.
Concept
What does ALL ( Product ) do as a CALCULATE filter?
Show Answer
It removes all filters from the Product table. **Why:** It is the classic way to get a grand total in every row, for example to compute a share of total.
Concept
What belongs in a dimension table?
Show Answer
One row per thing you slice by (a product, a customer, a date) with a unique key and descriptive columns. **Why:** Dimensions provide the labels for slicers, rows and axes, and their filters flow into the facts through relationships.
Trick question
Trick question: a user is assigned to two Fabric Copilot capacities. Where is their usage billed?
Show Answer
To the most recently created Copilot capacity. **Why:** Microsoft supports only one Fabric Copilot capacity per user; with several, the newest one registers the usage.
Scenario
You published an app with row-level security, but one user sees nothing at all. What is the most likely cause?
Show Answer
The user isn't a member of any RLS role on the semantic model (or their group isn't added). **Why:** With RLS defined, a Viewer who isn't in any role sees no data. Add them, or their security group, to the right role.
Concept
Refresh worked yesterday but now fails with a credentials error. What do you check first?
Show Answer
The data source credentials on the semantic model (or the gateway connection), for example an expired password or token. **Why:** Credentials are stored in the service, separate from Desktop. Re-entering them under the semantic model settings is often the fix.
Concept
How does standalone Copilot decide which capacity pays for your usage?
Show Answer
It uses your Fabric Copilot capacity if you have one; otherwise it auto-selects a Copilot-enabled workspace on F2+ capacity, which you can change. **Why:** Without an FCC or access to such a workspace, Microsoft says you can't use standalone Copilot.
Scenario
A pivot-style export shows Region only on the first row of each block, with blanks below. How do you give every row its region?
Show Answer
Make sure the blanks are null, then use Fill down on the Region column. **Why:** Fill down copies the last non-null value into following null cells. Empty text isn't null, so replace "" with null first if needed.
Trick question
Trick question: will Copilot use the comments inside a measure's DAX when it writes the description?
Show Answer
No. **Why:** Microsoft says comments and text in double quotes aren't used, and the measure must be valid with no errors.
Interview question
Interview: what is query folding and how do you protect it?
Show Answer
Folding is Power Query translating steps into source queries. You protect it by filtering and removing columns early, avoiding non-folding steps before them, and checking View Native Query. **Why:** Interviewers ask this to see if you understand refresh performance and incremental refresh.
Concept
What is the difference between a slicer and a filter in the Filters pane?
Show Answer
A slicer is a visual on the canvas that users click; the Filters pane is a side panel that authors can lock or hide. **Why:** Slicers are visible and inviting for common choices. Pane filters suit fixed rules or less common choices.
Scenario
Budget is stored by month and category, but users view the report by product. How do you show budget sensibly?
Show Answer
Show budget only at levels it exists (category and month), returning blank at product level, or allocate it with an explicit rule such as last year's product share. **Why:** Showing the category budget on every product row looks like each product has the whole budget. ISINSCOPE helps detect the product level.
Concept
What does CALCULATE ( [Total Sales], ALLEXCEPT ( Product, Product[Category] ) ) return?
Show Answer
Sales with all Product filters removed except the filter on Category. **Why:** It gives "category total" in each product row. Filters from other tables still apply.
Concept
Write a calculated column in Product that labels items over 100 in price as "Premium".
Show Answer
`Price Band = IF ( Product[Price] > 100, "Premium", "Standard" )` **Why:** It is computed once per row at refresh, so you can put Price Band on a slicer or axis.
Concept
What is the Selection pane used for?
Show Answer
Showing or hiding visuals, grouping them, and setting layer order and tab order. **Why:** Combined with bookmarks it lets you swap visuals in place (for example, chart vs table toggles).
Concept
What is Premium Per User (PPU)?
Show Answer
A per-user licence that unlocks Premium features (like 48 refreshes a day, XMLA endpoints, deployment pipelines) for licensed users. **Why:** Only PPU users can open content in PPU workspaces, so it suits small teams needing advanced features, not large audiences.
Scenario
After enabling Copilot for everyone, the F64 capacity throttles during month-end refreshes. What can you do?
Show Answer
Check Copilot usage in the Capacity Metrics app, bill heavy users to a separate Fabric Copilot capacity, scope the Copilot tenant setting to the right groups, or scale the capacity. **Why:** Copilot shares capacity units with refreshes and queries, so its cost needs the same monitoring as any other workload.
Concept
What are small multiples?
Show Answer
One chart repeated in a grid, once per category value, all sharing the same axes. **Why:** Comparing the same trend across regions is easier in small identical charts than in one busy chart with many lines.
Interview question
Interview: what do you need in the model before time intelligence works reliably?
Show Answer
A dedicated date table with one row per day and no gaps, marked as a date table, related to the facts' date columns. **Why:** Classic functions shift and extend dates on that column. Missing days or using the fact's date column gives wrong or blank results.
Concept
What does the clustering option on a scatter chart do?
Show Answer
It finds groups of similar points automatically and adds the result as a new field. **Why:** It is a quick way to spot segments, for example customers with similar spend and visit frequency.
What does it return?
What does this return? ```m List.Sum(List.Select({1, 2, 3, 4, 5}, each _ > 2)) ```
Show Answer
12. **Why:** List.Select keeps 3, 4 and 5; List.Sum adds them.
Concept
What are RangeStart and RangeEnd?
Show Answer
Two DateTime parameters that incremental refresh uses to filter a table's date column, so the service refreshes only recent partitions. **Why:** You filter rows where the date is >= RangeStart and < RangeEnd. Using >= on one end and < on the other avoids counting boundary rows twice.
Concept
How does a report built on an Excel file in OneDrive or SharePoint stay up to date?
Show Answer
The service refreshes it on a schedule (or on demand) like other cloud sources, with no gateway. **Why:** Connecting to the cloud copy, not a local path, is what makes this work.
What does it return?
What does this return? ```m Number.Round(2.5) ```
Show Answer
2. **Why:** By default M rounds to even (banker's rounding). Use Number.Round(2.5, 0, RoundingMode.AwayFromZero) to get 3.
Interview question
Interview: when would you use a dataflow instead of Power Query inside a .pbix?
Show Answer
When several semantic models need the same cleaned data, or when you want the transformation to run once in the service and be reused. **Why:** Duplicated queries in many files drift apart. A dataflow gives one shared, governed version.
Concept
What is happening to Power BI Q&A?
Show Answer
Microsoft Learn says Q&A experiences are going away in February 2027 and recommends Copilot instead. **Why:** An earlier announcement gave December 2026, so plan to move users off Q&A visuals and dashboard Q&A before the earlier date.
Concept
What is a dataflow (Gen2) in Fabric?
Show Answer
Power Query that runs in the service, with its output stored for reuse (for example in a lakehouse or warehouse) by many semantic models. **Why:** Shared cleaning runs once and every report uses the same result, instead of copying the same queries into each .pbix.
Concept
What does lineage view show?
Show Answer
How items in a workspace connect: data sources, dataflows, semantic models, reports and dashboards, and which depend on which. **Why:** Before changing a semantic model you can see which reports would be affected.
Concept
Which visual suits a trend over time?
Show Answer
A line chart (or area chart), with dates on the X axis. **Why:** Lines make rises, falls and seasonality easy to see. Bar charts work better for comparing categories.
Concept
What does locking a level in a decomposition tree do?
Show Answer
It stops report consumers from removing or changing that level; they can still explore paths inside it and add levels after it. **Why:** Authors can fix the first steps of an analysis while leaving room to explore. Unlocked levels can't come before locked ones.
Concept
How is "Analyze > Explain the increase" different from Copilot?
Show Answer
It is a built-in statistical analysis on a selected data point that ranks contributing factors, without generative AI or Copilot capacity. **Why:** It works in many reports where Copilot isn't available, but only answers that one kind of question.
What does it return?
What does this return? ```m List.Count(List.Dates(#date(2025, 1, 1), 31, #duration(1, 0, 0, 0))) ```
Show Answer
31. **Why:** List.Dates returns 31 dates, one day apart, starting 1 January; List.Count counts them.
Concept
Why hide key columns (like ProductKey) in the report view?
Show Answer
Report authors should slice by descriptive columns, not by surrogate keys. **Why:** Hidden columns still work in relationships and DAX. Hiding them keeps the field list clean and prevents filtering on the fact table's key.
Scenario
You append 12 monthly files, but March has "Cust ID" while the others have "Customer ID". The result has two half-empty columns. How do you fix it?
Show Answer
Rename the column in the sample file transform (or standardise column names in the combine function) before appending. **Why:** Append matches columns by name, so different names create separate columns filled with nulls.
Concept
What does the Viewer role allow?
Show Answer
Viewing and interacting with content in the workspace, without editing it. **Why:** Viewer is for consumers. Row-level security applies to Viewers, unlike the other three roles.
Concept
What does Transpose do, and when do you need it?
Show Answer
It swaps rows and columns, useful for reports where headers run down the first column. **Why:** After transposing you usually promote headers. Transpose ignores column names, so do it before naming columns.
Concept
What does "Take over" on a semantic model do?
Show Answer
It makes you the owner of the semantic model's settings, such as credentials and refresh schedule. **Why:** Workspace members can take over when the original owner is unavailable, then re-enter credentials so refresh works again.
Scenario
Power BI refuses to activate a new relationship and says it would create ambiguity. What does that mean?
Show Answer
There would be two active filter paths between the same tables, so Power BI couldn't tell which one a filter should follow. **Why:** Keep one path active, make the other inactive and use USERELATIONSHIP in measures, or reshape the model so paths don't loop.
Concept
Why assign security groups instead of individual users to RLS roles?
Show Answer
Group membership is managed in Microsoft Entra ID, so joiners and leavers get the right access without editing the semantic model. **Why:** It scales and keeps access in line with HR or IT processes rather than manual updates by report authors.
Concept
What does Performance Analyzer show for each visual?
Show Answer
How long the DAX query, the visual display and other work took, and it can copy the DAX query the visual sent. **Why:** It tells you whether the slowness is in the model (DAX query time) or the visual itself, and gives you the query to test elsewhere.
What does it return?
A slicer has both "North" and "South" selected. What does `SELECTEDVALUE ( Region[Region] )` return?
Show Answer
Blank. **Why:** With more than one value in context and no alternate result given, SELECTEDVALUE returns blank.
Interview question
Interview: how does Microsoft Fabric change the way you design Power BI solutions?
Show Answer
Data can be prepared once in OneLake (lakehouse or warehouse) and served by Direct Lake models, Copilot runs on Fabric capacity, and items share Git integration and deployment pipelines. **Why:** The answer shows you understand storage choices, capacity and lifecycle, not just Power BI Desktop.
Concept
What is the difference between VALUES and DISTINCT on a column?
Show Answer
Both return unique values visible in the current context, but VALUES also includes the blank row that appears when there are unmatched keys; DISTINCT does not. **Why:** The difference only shows up with referential integrity problems, but it explains a surprise "(Blank)" count.
Concept
Where do you change a source's credentials or point a report to a new server?
Show Answer
Transform data > Data source settings (to change source or edit permissions), or edit the Source step or a parameter. **Why:** Data source settings holds credentials and privacy levels for each source. Parameters make server and database names easy to switch.
What does it return?
What does this return? ```m null + 1 ```
Show Answer
null. **Why:** In M, arithmetic with null returns null. Use a check like if [x] = null then 0 else [x], or the ?? operator, to supply a default.
What does it return?
Same data. What does this show, and why is it different? ```dax Odd = AVERAGEX ( Customer, SUM ( Sales[Amount] ) ) ```
Show Answer
400. **Why:** SUM without CALCULATE gets no context transition, so for each customer row it returns total sales of all customers (400), and the average of 400 and 400 is 400.
Trick question
Trick question: when a reader changes a slicer, does the Copilot narrative update automatically?
Show Answer
No; the reader selects the visual's refresh button to get an updated summary. **Why:** Microsoft documents that the narrative doesn't update automatically when filters change.
Interview question
Interview: how would you set up development, test and production for Power BI?
Show Answer
Separate workspaces per stage connected by a deployment pipeline, deployment rules for data sources, Git integration for source control, and an app published from Production. **Why:** The answer shows you separate building from consuming and can roll back changes.
Scenario
Managers can see several regions each, and the list changes monthly. How do you design RLS?
Show Answer
A UserRegion table (Email, Region) related to Region, and one role filtering UserRegion[Email] = USERPRINCIPALNAME(). **Why:** The relationship from the security table to Region must pass the filter to Region (often bidirectional with "apply security filter in both directions"), so each manager sees exactly their regions.
Interview question
Interview: explain the difference between a measure and a calculated column in one minute.
Show Answer
A calculated column is computed for each row at refresh and stored; a measure is computed at query time for whatever filters the visual applies. **Why:** Columns cost memory but can slice and filter. Measures cost nothing until used and react to slicers, which is why most numbers should be measures.
What does it return?
Product and Sales are related one-to-many, single direction. A slicer on Sales[Channel] = "Online". What does `COUNTROWS ( Product )` return?
Show Answer
The number of all products, because the Sales filter doesn't flow to Product. **Why:** Use CALCULATE ( COUNTROWS ( Product ), CROSSFILTER ( Sales[ProductKey], Product[ProductKey], BOTH ) ) to count only products sold online.
What does it return?
What does this return? ```dax FORMAT ( DATE ( 2025, 3, 7 ), "MMM YYYY" ) ```
Show Answer
"Mar 2025" (as text). **Why:** FORMAT returns text using the format string; MMM is the short month name. Because it is text, it sorts alphabetically unless you sort by another column.
Trick question
Trick question: Power Query's Remove duplicates kept both "abc" and "ABC". Will the model accept this column as a unique relationship key?
Show Answer
No. Power Query compares case-sensitively, but the model engine is case-insensitive, so it sees "abc" and "ABC" as the same value. **Why:** Standardise the case (for example Uppercase) before removing duplicates on key columns.
Scenario
Your target table is keyed by Region and Month, but there is no single column to join on. How do you relate it to the model?
Show Answer
Relate it to the dimensions it shares at its own grain: Region to the Region dimension and Month to a month-level column or month table. **Why:** Power BI relationships use one column each side. Joining targets at their own grain (not to the daily fact) avoids double counting.
Concept
When is a calculated column the right choice instead of a measure?
Show Answer
When you need a value per row to slice, filter or group by, such as an age band or a "Large order" flag. **Why:** Calculated columns are computed at refresh and stored. Measures are computed at query time and can't be used as slicers or row labels.
Concept
What does marking a semantic model "Approved for Copilot" do?
Show Answer
It tells standalone Copilot the model is ready, removing the extra friction treatment on its answers; reports using the model count as approved too. **Why:** The setting was previously called "prepped for AI". It is set on the semantic model in the service; reports and apps can't be marked directly.
Concept
What does TREATAS do?
Show Answer
It applies the values of one table or column as filters on other columns, as if a relationship existed. **Why:** It is useful for virtual relationships, for example filtering a Budget table by values chosen in an unrelated slicer.
Concept
When would you use LOOKUPVALUE instead of RELATED?
Show Answer
When there is no relationship to follow, for example looking up an exchange rate by currency and date from an unrelated table. **Why:** RELATED is faster and simpler when a relationship exists; LOOKUPVALUE searches by the columns you give it.
What does it return?
Sales[CustomerKey] holds 1, 2, 2, 3 and one blank. What does `DISTINCTCOUNT ( Sales[CustomerKey] )` return?
Show Answer
4. **Why:** DISTINCTCOUNT counts blank as a value. DISTINCTCOUNTNOBLANK would return 3.
Trick question
Trick question: after adding a calculation group, users can no longer drag a numeric column and see it summed. Why?
Show Answer
Creating a calculation group turns on "discourage implicit measures", so automatic summaries of columns stop. **Why:** Calculation items only apply to explicit measures, so the model requires them. Create explicit measures for the numbers people need.
Concept
What is automatic page refresh and what does it need?
Show Answer
A page setting that re-queries visuals on a fixed interval or when a change is detected. It works with DirectQuery (and some other non-Import) sources. **Why:** Import data only changes at refresh, so re-querying it on a timer would show nothing new. Admins can set a minimum interval.
Concept
Does the Copilot narrative visual summarise the semantic model or the report canvas?
Show Answer
The report canvas: the visuals you include. **Why:** That is why clear visual titles and axis names matter. Visuals on hidden pages aren't included unless a supported bookmark makes them visible.
Concept
What are field parameters?
Show Answer
A feature that lets report readers choose which measures or columns a visual shows, through a slicer. **Why:** One chart can switch between Sales, Profit and Units, or between Region and Product, instead of building one chart per option.
Concept
What is the structure of a query in the Advanced Editor?
Show Answer
A let expression: named steps separated by commas, then in followed by the step whose result the query returns. **Why:** Each step usually refers to the previous one by name. The result is whatever comes after in, normally the last step.
Concept
How do you show only the top 10 products in a visual without DAX?
Show Answer
Use a Top N filter on the Product field in the visual's filters, ranked by a measure such as Sales. **Why:** Top N filters work per visual and update as other slicers change.
Scenario
A column holds "Pune, Maharashtra". You need City and State columns. How?
Show Answer
Split column by delimiter (comma), then Trim both new columns. **Why:** Splitting leaves a leading space on the second part, so Trim keeps values consistent for slicers and relationships.
Concept
When is Pivot column useful?
Show Answer
When attribute-value pairs (Attribute = "Colour", Value = "Red") need to become separate columns. **Why:** Pivot turns one column's values into column headers and fills them from another column, optionally aggregating.
Fix the code
A colleague wrapped every measure in IFERROR. What's a better fix for this one? ```dax Avg Price = IFERROR ( [Total Sales] / [Units], 0 ) ```
Show Answer
`Avg Price = DIVIDE ( [Total Sales], [Units] )` **Why:** IFERROR hides problems and can slow queries. DIVIDE handles the only expected error here, a zero or blank denominator.
Concept
What does "How Copilot arrived at this" show?
Show Answer
What Copilot used from the semantic model to reach an answer. **Why:** It helps authors check whether Copilot picked the right fields and whether Prep data for AI settings were applied.
Concept
What permission do you need to add a Copilot narrative visual to a report?
Show Answer
Edit access to the report or workspace, or build access to the semantic model. **Why:** It's a visual, so it needs the same rights as creating any visual. Readers without edit rights can use the Copilot pane to get a summary instead.
Scenario
Three tables (Customer, Orders, Returns) all start with the same cleaning of a big CRM extract. How do you avoid repeating that logic?
Show Answer
Build one staging query for the shared cleaning, turn off its load, and Reference it from the three queries. **Why:** Shared steps live in one place. Note that each referenced query may still read the source separately at refresh.
Concept
What are the three levels of filters in the Filters pane?
Show Answer
Filters on this visual, filters on this page and filters on all pages. **Why:** Each applies to a different scope. Report-level filters are useful for rules like "exclude test stores" everywhere.
Concept
What is Power Query in Power BI?
Show Answer
The data preparation engine (opened with Transform data) that connects to sources and shapes data before it loads into the model. **Why:** Each change you make is recorded as an applied step in the M language, and the steps re-run on every refresh.
Concept
What does "Analyze > Explain the increase" do?
Show Answer
When you right-click a data point that rose, Power BI looks across other fields to find which ones contributed most to the change. **Why:** It speeds up the first "why did this go up?" question, though you should still check the result makes business sense.
Concept
How do you add a surrogate key to a dimension in Power Query?
Show Answer
After removing duplicates, Add Column > Index column (from 1), then merge it back to the fact on the business key to replace it. **Why:** Integer keys are compact. Keep the business key in the dimension for lookups and drillthrough.
Common mistake
Common mistake: writing measures as Sales[Total Sales] and columns as [Amount]. What is the convention?
Show Answer
Reference measures without a table name ([Total Sales]) and columns always with one (Sales[Amount]). **Why:** The convention tells readers instantly whether something is a measure (with implicit CALCULATE) or a column, which changes how it behaves.
Trick question
Trick question: customers can have several accounts and accounts several customers. Can a single many-to-many relationship between Customer and Account handle "balance by customer"?
Show Answer
Not on its own; you need a bridge table (CustomerAccount) between them. **Why:** The pairs live in the bridge. Customer filters the bridge, and the bridge filters Account, usually with one relationship set to both directions or CROSSFILTER in the measure.
Interview question
Interview: how do you start modelling a new data source?
Show Answer
Identify the business process and grain, separate facts from dimensions, build a date table, set relationships one-to-many single direction, then write base measures. **Why:** Interviewers look for a repeatable method: grain first, star schema next, then DAX. It shows you won't start with visuals and fix the model later.
Interview question
Interview: "Will Copilot replace report developers?" How would you answer?
Show Answer
No; Copilot speeds up building and exploring, but it depends on a well-designed semantic model, and people still check its output and own the business logic. **Why:** Microsoft itself says unprepared models give generic or inaccurate answers, which is why modelling and Prep data for AI matter more, not less.
Scenario
A chart must switch between Sales, Units and Margin based on a user's choice. What are two ways to do it?
Show Answer
A field parameter that lists the three measures, or a disconnected table with a SWITCH measure on SELECTEDVALUE. **Why:** Field parameters are the newer, no-DAX option; the SWITCH pattern still helps when you need custom logic per choice.
Concept
When should you unpivot columns?
Show Answer
When values are spread across columns, like Jan, Feb, Mar as separate columns, and you need one Month column and one Value column. **Why:** Models and DAX work with tall tables. Unpivoted data lets one date relationship and one measure handle every month.
Concept
What capacity does Copilot in Power BI require?
Show Answer
A paid Fabric capacity (F2 or higher) or Power BI Premium (P1 or higher). **Why:** Microsoft states that trial capacities and free SKUs aren't supported, and that a Pro or PPU licence alone isn't enough; Copilot needs organisational capacity (or a Fabric Copilot capacity for billing).
Concept
When should you use Clear chat in Copilot?
Show Answer
When you switch topics, so earlier conversation doesn't confuse new answers. **Why:** Clearing removes previous context. It doesn't refresh data.
Concept
Which tenant setting must be on for Copilot in Power BI?
Show Answer
"Users can use Copilot and other features powered by Azure OpenAI". **Why:** Microsoft says it is on by default, but admins can turn it off or scope it to groups. If Copilot is missing, this is one of the first things to check.
Scenario
A report page has 35 visuals and takes 15 seconds to load. Performance Analyzer shows each query is fast. What is the likely fix?
Show Answer
Reduce the number of visuals on the page, for example with drillthrough pages, tooltips or bookmarks. **Why:** Every visual sends its own queries and renders separately. Many small fast visuals still add up, so fewer visuals per page loads faster.
What does it return?
In a table by Product Category, what does this measure return? ```dax % of All = DIVIDE ( [Total Sales], CALCULATE ( [Total Sales], ALL ( Product ) ) ) ```
Show Answer
Each category's share of total sales across all products. **Why:** The denominator ignores product filters, so it always shows the grand total; the numerator keeps the row's category.
Concept
Why use VAR ... RETURN in measures?
Show Answer
Variables store a value once, make formulas easier to read and debug, and avoid computing the same expression twice. **Why:** A variable is evaluated in the context where it is defined, which also makes behaviour clearer when you change filters later.
Common mistake
Common mistake: building a report from an Excel file on your desktop, then publishing and expecting scheduled refresh to work. What happens?
Show Answer
Refresh fails unless an on-premises data gateway can reach that path; the service can't see your desktop. **Why:** Store the file in OneDrive or SharePoint and connect to it there, so the service refreshes without a gateway.
Scenario
Your YTD line keeps flat after today because the Date table runs to 31 December. How do you stop the line past the last sale?
Show Answer
Return blank for dates after the last sales date, for example `IF ( MIN ( 'Date'[Date] ) <= CALCULATE ( MAX ( Sales[OrderDate] ), ALL ( Sales ) ), [Sales YTD] )`. **Why:** YTD repeats the running total on future dates. Comparing with the last date that has data hides those points.
Concept
What is Copilot in Power BI?
Show Answer
Generative AI built into Power BI that answers questions about data, summarises reports, builds report pages and helps write DAX. **Why:** It uses the semantic model when a question is about your data, and the language model's general knowledge otherwise, so model quality shapes the answers.
Common mistake
Common mistake: building a new executive report around the Q&A visual in late 2026. Why is that a poor choice?
Show Answer
Q&A is being retired (February 2027 on Microsoft Learn), so the report would need rework soon. **Why:** Use Copilot experiences, verified answers and well-designed visuals for natural-language questions instead.
Concept
What is a sensible order of checks when you first open a new source in Power Query?
Show Answer
Look at column quality and distribution (on the entire dataset), confirm data types, check keys for duplicates and blanks, then look for odd values like "N/A" or dates in 1900. **Why:** Catching quality problems before modelling saves you from explaining wrong totals later.
Concept
How do you test RLS before giving access?
Show Answer
Use "View as" with a role (and optionally another user) in Desktop, or "Test as role" on the semantic model's Security page in the service. **Why:** Testing catches roles that show too much or nothing, before real users see the report.
Trick question
Trick question: you ask Copilot the same question twice in an hour on an unchanged model and get the identical answer. Why?
Show Answer
Copilot can answer from cache when the same prompt is asked on an unchanged model (same schema, data and instructions) within a rolling 24 hours. **Why:** Microsoft documents this caching; clearing the chat doesn't change it. Change the prompt or refresh the model if you expect a different result.
Concept
What is item pairing in a deployment pipeline?
Show Answer
The link between an item in one stage and the same item in the next stage, used to decide what a deployment overwrites. **Why:** Unpaired items with the same name are not overwritten; deploying creates a duplicate instead, which surprises people.
Interview question
Interview: name three ways to make a slow DAX measure faster.
Show Answer
Use variables to avoid repeated work, filter columns rather than whole tables, and iterate small dimension tables instead of the fact; also check model design (cardinality, relationships). **Why:** Most slow DAX comes from iterating big tables with context transition or from complex FILTER arguments.
Concept
Name one visual the Copilot narrative doesn't support yet.
Show Answer
The key influencers visual. **Why:** Microsoft notes the narrative visual doesn't support all visual types yet, giving key influencers as an example.
Concept
A company with 2,000 report readers wants them to view content without individual Pro licences. What does Microsoft require?
Show Answer
Put the content in a workspace on a Fabric F64 or larger capacity (or remaining P SKU), and give readers the Viewer role or app access. **Why:** Microsoft's migration guide states that on F64 and larger, Free users with the Viewer role can view content; on F2 to F32 every viewer needs Pro or PPU.
What does it return?
What does this return? ```dax UPPER ( LEFT ( "power bi", 5 ) ) ```
Show Answer
"POWER". **Why:** LEFT takes the first five characters, "power", and UPPER converts them to capitals.
Concept
What is a star schema?
Show Answer
A model with fact tables in the middle, holding events and numbers, linked to dimension tables that describe them (date, product, customer). **Why:** Power BI's engine, DAX and filters are designed around this shape, so star schemas give simpler DAX and faster queries.
Concept
What does RELATEDTABLE return?
Show Answer
In a row context on the one side, the related rows from the many side, for example all Sales rows for the current customer. **Why:** COUNTROWS ( RELATEDTABLE ( Sales ) ) in a Customer calculated column gives each customer's number of orders.
Concept
What is DAX query view in Power BI Desktop?
Show Answer
A view where you write and run DAX queries (EVALUATE ...) against the model and see the result grid. **Why:** You can paste a slow visual's query from Performance Analyzer, test changes to measures, and define measures before adding them to the model.
Concept
What does a scatter chart show that a bar chart can't?
Show Answer
The relationship between two measures across many items, for example discount vs margin for each product. **Why:** Each dot is an item, placed by two values (and sized by a third). Clusters and outliers stand out at a glance.
Fix the code
In a matrix by Colour, this should show sales of red products only on the Red row and blank elsewhere. It shows red sales on every row. Fix it. ```dax Red Only = CALCULATE ( [Total Sales], Product[Colour] = "Red" ) ```
Show Answer
`Red Only = CALCULATE ( [Total Sales], KEEPFILTERS ( Product[Colour] = "Red" ) )` **Why:** The plain filter overrides the row's colour. KEEPFILTERS intersects it with the row, so non-red rows become blank.
Scenario
Monthly Excel files are saved to a SharePoint document library. How should you connect so new files are picked up and refresh works in the service?
Show Answer
Use the SharePoint folder connector with the site URL, filter to the right folder and file type, then combine files. **Why:** A local folder path needs a gateway and breaks when the author's laptop is off. SharePoint is a cloud source, so the service refreshes it directly.
Concept
What is query folding?
Show Answer
When Power Query turns your steps into a single query the source runs, such as one SQL statement, instead of processing data itself. **Why:** Folding moves the work to the database, transfers fewer rows and makes refreshes much faster. It is also required for incremental refresh to be efficient.
What does it return?
The current filter context has the products Apple, Pear and Plum. What does this return? ```dax CONCATENATEX ( VALUES ( Product[Product] ), Product[Product], ", ", Product[Product], ASC ) ```
Show Answer
"Apple, Pear, Plum". **Why:** CONCATENATEX joins the values of an expression over a table with the separator, here sorted ascending by name.
Concept
Why use DIVIDE instead of the / operator?
Show Answer
DIVIDE handles division by zero or blank, returning blank (or an alternate value you give) instead of an error or infinity. **Why:** Ratios such as margin % often hit zero denominators in some filter contexts. DIVIDE keeps visuals clean.
What does it return?
What does this return? ```m let Double = (x) => x * 2 in Double(21) ```
Show Answer
42. **Why:** (x) => x * 2 defines a function; calling Double(21) runs it with x = 21.
Concept
What are DAX user-defined functions (UDFs)?
Show Answer
Reusable functions you define with the FUNCTION keyword and call from measures, calculated columns, visual calculations or other functions. **Why:** Microsoft documents them as generally available in Power BI Desktop and the service from the June 2026 release (compatibility level 1702 or higher). They keep business rules in one place.
Concept
How does key influencers decide what counts as an influencer for a categorical metric?
Show Answer
It runs a logistic regression (with ML.NET) and keeps factors that pass a Wald test at a p-value of 0.05. **Why:** Numeric metrics use linear regression instead, and Top segments uses a decision tree, all with the same 0.05 threshold.
Concept
What is filter context?
Show Answer
The set of filters active when a measure is evaluated: from slicers, visual rows and columns, page and report filters, and CALCULATE. **Why:** The same measure returns a different number in each cell of a matrix because each cell has a different filter context.
Concept
What are dynamic format strings for measures?
Show Answer
A format string written as a DAX expression, so one measure can show, for example, "₹1.2M" or "₹950K" depending on its value. **Why:** The value stays numeric (charts and sorting still work) while the display changes.
Concept
How can you organise many items inside one workspace?
Show Answer
Use folders in the workspace to group reports, models and other items. **Why:** Folders keep a busy workspace navigable. Deployment pipelines copy the folder structure to later stages.
Trick question
Trick question: can a user data function used by a Power BI data function button return a table?
Show Answer
No; Microsoft says it must return a str (string) to be added to a report. **Why:** The button shows the returned message to the user; the actual changes happen in the data source.
Concept
What happens when a visual is rendered on a DirectQuery table?
Show Answer
Power BI translates the DAX query into the source's query language (for example SQL) and sends it to the source at that moment. **Why:** Data stays in the source and is current, but every visual depends on the source's speed and capacity.
Concept
How do you put a workspace on a Fabric capacity?
Show Answer
In workspace settings, choose the license mode (for example Fabric capacity) and select the capacity, if you are a workspace admin with capacity assignment rights. **Why:** The workspace's capacity decides which features (Direct Lake, Copilot, 48 refreshes) and which viewers are supported.
What does it return?
What does this return? ```dax DIVIDE ( 10, 0, 0 ) ```
Show Answer
0. **Why:** The third argument is the alternate result used when the denominator is zero or blank.
Concept
What are the DAX window functions OFFSET, INDEX and WINDOW for?
Show Answer
Referring to other rows in an ordered set: OFFSET for a relative row (previous month), INDEX for a position (first or last), WINDOW for a range (moving totals). **Why:** They make "compare with previous row" logic much simpler than older patterns with EARLIER or FILTER.
Concept
What is the difference between Expand and Aggregate on a nested table column?
Show Answer
Expand adds the nested table's rows and columns to the parent (often adding rows); Aggregate summarises the nested values into one value per parent row. **Why:** After a merge, choose Aggregate when you need a count or sum per row instead of extra rows.
Trick question
Trick question: administrators give low ratings 13% of the time, nearly as often as consumers (15%), but only consumers appear as an influencer. Why?
Show Answer
There are far fewer administrators, so the visual doesn't have enough data to be confident the pattern isn't chance. **Why:** The regression accounts for the number of data points; small groups need a bigger effect to count.
Concept
What does Append do?
Show Answer
It stacks the rows of two or more tables with the same columns into one table. **Why:** Use it for monthly files or regional tables with identical structure. Columns are matched by name, and missing columns are filled with null.
Concept
What does Build permission on a semantic model allow?
Show Answer
Creating new reports on the model, using Analyze in Excel, and querying it with tools like DAX query view or a composite model. **Why:** Read permission only lets users view reports; Build lets them reuse the model for their own analysis.
Concept
How do you add comments in DAX?
Show Answer
Use // or -- for a line comment and /* ... */ for a block. **Why:** Short comments that explain why a filter is removed or a rule exists save the next person (often you) a lot of time.
What does it return?
Sales has two rows: (Qty 2, Price 5) and (Qty 3, Price 10). What does this return? ```dax Revenue = SUMX ( Sales, Sales[Qty] * Sales[Price] ) ```
Show Answer
40. **Why:** SUMX computes 2 × 5 = 10 and 3 × 10 = 30, then adds them. Multiplying SUM(Qty) by SUM(Price) would give 75, which is wrong.
Scenario
You need to group customers into "High / Medium / Low" by their sales in the selected period, and the bands must change with slicers. Calculated column or measure?
Show Answer
A measure-based approach, for example a disconnected Segment table and a measure that counts customers whose sales fall in each band. **Why:** A calculated column is fixed at refresh and can't react to slicers. Dynamic segmentation needs the band to be evaluated in the current filter context.
Concept
What is Fabric Git integration?
Show Answer
Connecting a workspace to a branch in Azure DevOps or GitHub, so items are saved to and updated from Git. **Why:** Teams get version history, code review and branching for semantic models and reports, often saved as Power BI projects.
Concept
What does SUMMARIZECOLUMNS do?
Show Answer
It returns a table grouped by the columns you list, with the measures or expressions you add as new columns. **Why:** It is the function Power BI visuals use in their queries, and it is the usual choice for summary tables in DAX queries.
Scenario
A supplier sends invoices as PDFs. Can Power Query read them, and what should you watch for?
Show Answer
Yes, the PDF connector detects tables and pages. Watch for tables split across pages and layouts changing between files. **Why:** PDF extraction depends on the layout. Test a few months of files and add steps that check expected columns exist.
Concept
Name three ways to make a report more accessible.
Show Answer
Add alt text to visuals, set a logical tab order, and don't rely on colour alone (use labels or markers too) with enough contrast. **Why:** Screen readers read alt text and follow tab order; colour-blind users need a second cue besides colour.
Common mistake
Common mistake: using a calculated column for "Sales Last 30 Days" on the Customer table. Why is it wrong for a report?
Show Answer
It is computed at refresh, so it ignores slicers and goes stale until the next refresh. **Why:** Anything that should react to report filters or the current date belongs in a measure.
Scenario
The tenant has 400 workspaces, many abandoned, and nobody knows what is official. Name three governance steps.
Show Answer
Control who can create workspaces, certify official semantic models, and review usage metrics or the activity log to archive unused content. **Why:** Governance is about making the right content easy to find and the wrong content easy to retire.
Concept
How do you calculate year-over-year growth %?
Show Answer
`YoY % = DIVIDE ( [Total Sales] - [Sales PY], [Sales PY] )` **Why:** Build it from base measures. DIVIDE returns blank when there is no prior year, instead of an error.
Concept
What can conditional formatting change in a table or matrix?
Show Answer
Background colour, font colour, data bars, icons and web URLs, based on values or rules. **Why:** It draws the eye to what needs attention, such as red for negative growth, without adding more visuals.
Scenario
A user filters Region = West with a slicer and wants each product's share to add up to 100% of West. Which filter remover do you use in the denominator?
Show Answer
ALLSELECTED ( Product ). **Why:** ALL ( Product ) keeps the slicer on Region but clears any product slicer; ALLSELECTED clears only the visual's product rows and respects every outer selection.
Concept
What does GENERATESERIES ( 0, 100, 10 ) return?
Show Answer
A one-column table with 0, 10, 20 … 100 (11 rows), in a column named Value. **Why:** Numeric range parameters use it behind the scenes to build the slider values.
Scenario
The single gateway server is restarted for patches every month and refreshes fail. What do you set up?
Show Answer
A gateway cluster: install another gateway on a second machine and add it to the same cluster. **Why:** Clusters give high availability and can balance load across members.
Fix the code
This date table should cover 2024 and 2025, but time intelligence breaks because it stops early. Fix it. ```dax Dates = CALENDAR ( DATE ( 2024, 1, 1 ), DATE ( 2025, 1, 31 ) ) ```
Show Answer
`Dates = CALENDAR ( DATE ( 2024, 1, 1 ), DATE ( 2025, 12, 31 ) )` **Why:** The end date was 31 January 2025, so most of 2025 is missing. Date tables should cover whole years for every date in the facts.
Scenario
You try to relate Sales[CustomerID] (whole number) to Customer[CustomerID] (text). What should you do first?
Show Answer
Make both columns the same data type, ideally whole number. **Why:** Relationships match values exactly, and mismatched types either fail or cause silent misses. Integer keys are also faster.
Concept
What does "suggest content for a new report page" mean with Copilot?
Show Answer
Copilot proposes possible pages based on the model, which you can choose from and then refine. **Why:** It is a starting point for a report, not a finished design. Authors still check the visuals and numbers.
Fix the code
'Date'[Year] is a whole number column. This measure fails with an error about comparing Integer and Text values. Fix it. ```dax Sales 2025 = CALCULATE ( [Total Sales], 'Date'[Year] = "2025" ) ```
Show Answer
Compare with a number: `CALCULATE ( [Total Sales], 'Date'[Year] = 2025 )` **Why:** DAX won't compare a whole number column with text. Remove the quotes so both sides are numbers.
Concept
What are app audiences?
Show Answer
Groups of users inside one app, each seeing a different set of the app's reports and dashboards. **Why:** Executives and analysts can get tailored views from the same workspace without building two workspaces.
Concept
What are deployment rules in a deployment pipeline?
Show Answer
Settings on a target stage that change data source connections or parameter values when content is deployed there. **Why:** Test can point at the test database and Production at the live one, without editing the .pbix between stages.
Concept
What does CROSSFILTER let you do in a measure?
Show Answer
Change a relationship's filter direction (Both, OneWay or None) for that calculation only. **Why:** You keep the model single-direction and make one measure filter in both directions, avoiding the risks of a bidirectional model.
Concept
What is the XMLA endpoint used for?
Show Answer
Connecting tools such as Tabular Editor, SQL Server Management Studio or DAX Studio to semantic models in capacity or PPU workspaces, to read or write model metadata and run refreshes. **Why:** It brings enterprise lifecycle tools to Power BI, such as partition refreshes and scripted deployments.
Fix the code
This visual calculation should show each product's share of its category in a Category > Product matrix, but every row shows 100%. Fix it. ```dax Share = DIVIDE ( [Sales], [Sales] ) ```
Show Answer
`Share = DIVIDE ( [Sales], COLLAPSE ( [Sales], ROWS ) )` **Why:** Dividing a value by itself is always 1. COLLAPSE evaluates Sales one level up the rows axis, giving the category total as the denominator.
Concept
Why set "Summarize by: None" on a Year or ProductKey column?
Show Answer
So Power BI does not add them up when you drag them into a visual. **Why:** Numbers that are really labels or keys should not be summed. Turning off default summarization prevents silly totals like "Sum of Year".
Concept
What are the three skills in the Copilot skill picker?
Show Answer
Answer questions about the data, Analyze report visuals, and Create new report pages. **Why:** Authors pick skills to simulate what end users see in each place, for example only "Answer questions" for standalone Copilot.
Scenario
Users live in Microsoft Teams all day. How can you put a report where they work without breaking security?
Show Answer
Add the report as a tab in a Teams channel (or share the app in Teams). **Why:** Teams embedding respects the same sign-in, permissions and row-level security as the Power BI service.
Fix the code
Dynamic RLS uses a UserRegion table related to Region, but managers still see all regions. The relationship is UserRegion (many) to Region (one), single direction. What do you change? ```dax UserRegion[Email] = USERPRINCIPALNAME () ```
Show Answer
Let the security filter reach Region: set that relationship's cross-filter direction to Both and tick "Apply security filter in both directions". **Why:** With single direction, filters flow from Region to UserRegion, not the other way, so filtering UserRegion doesn't limit Region or the facts.
Trick question
Which is likely to slow a model more: a column with 10 million rows but 3 distinct values, or a column with 1 million rows and 1 million distinct values?
Show Answer
The column with 1 million distinct values. **Why:** VertiPaq stores a dictionary of distinct values and compresses repeats. Cardinality, not row count, is usually what hurts.
Concept
What is the difference between Direct Lake on OneLake and Direct Lake on SQL?
Show Answer
Direct Lake on OneLake reads Delta tables from one or more Fabric sources and never falls back to DirectQuery; Direct Lake on SQL uses one source's SQL analytics endpoint and can fall back to DirectQuery. **Why:** Fallback happens, for example, with SQL views or SQL-based security. The Direct Lake behavior property controls whether fallback is allowed.
Scenario
Users say a report is "busy". What layout changes usually help most?
Show Answer
Put the key numbers top-left, keep one question per page, align visuals to a grid, cut duplicate charts and move detail to drillthrough or tooltips. **Why:** People scan from the top left. A clear hierarchy of information beats extra visuals.
Fix the code
This year-to-date measure is blank everywhere. The model's date table is called Calendar. Fix it. ```dax Sales YTD = TOTALYTD ( [Total Sales], Sales[OrderDate] ) ```
Show Answer
Use the date table: `TOTALYTD ( [Total Sales], 'Calendar'[Date] )`, with Calendar related to Sales and marked as a date table. **Why:** Time intelligence should run on a complete date column from the date table, so filters from the calendar's slicers and axes apply.
Trick question
Trick question: incremental refresh is set up but every refresh still reads the whole table from SQL Server. What is the likely cause?
Show Answer
The RangeStart/RangeEnd filter doesn't fold to the source, so Power Query downloads everything and filters locally. **Why:** Incremental refresh depends on query folding. Check View Native Query on the filter step and move non-folding steps after it.
Fix the code
This query errors with "Token Comma expected". Fix it. ```m let Source = Csv.Document(File.Contents("C:\data\sales.csv")), Promoted = Table.PromoteHeaders(Source) Filtered = Table.SelectRows(Promoted, each [Amount] <> "") in Filtered ```
Show Answer
Add a comma at the end of the Promoted line. **Why:** Every step in a let block except the last is followed by a comma.
Trick question
Trick question: can a Member delete the workspace?
Show Answer
No; only Admins can delete a workspace. **Why:** Members can add people, publish and update apps, and edit content, but deleting the workspace is reserved for Admins.
Trick question
Trick question: can you cross-filter tiles on a Power BI dashboard by clicking one of them?
Show Answer
No; clicking a tile opens the report (or link) it came from. **Why:** Dashboards are monitoring surfaces. Interactive filtering happens in reports, or in a pinned live report page.
Scenario
A card should always show the all-time total, no matter which year a slicer picks, but still respect the region slicer. How?
Show Answer
`CALCULATE ( [Total Sales], REMOVEFILTERS ( 'Date' ) )` **Why:** Removing filters only from the Date table keeps every other filter, such as region, in place.
Concept
How do you turn a JSON API response into a table in Power Query?
Show Answer
Connect with Web or the JSON connector, convert the list or record to a table, then expand the record columns. **Why:** JSON arrives as nested lists and records. Expanding (the double-arrow button) flattens them into columns.
Common mistake
Common mistake: `Revenue = SUM ( Sales[Qty] ) * SUM ( Sales[Price] )`. What goes wrong?
Show Answer
It multiplies the totals instead of each row, so the result is too big whenever there is more than one row. **Why:** Row-by-row maths needs an iterator: SUMX ( Sales, Sales[Qty] * Sales[Price] ).
Concept
How long can a refresh run before it times out?
Show Answer
Two hours on shared capacity and five hours on Premium/Fabric capacity (refreshes through the XMLA endpoint can run longer). **Why:** Long refreshes are a signal to reduce data, fix folding or use incremental refresh.
Concept
What does a bookmark capture?
Show Answer
The current state of a page: filters, slicers, visual visibility, sort order and drill state (you choose which of data, display and current page to include). **Why:** Buttons linked to bookmarks let you build toggles, guided stories and "reset filters" buttons.
Scenario
Users want two slicers on one page: one for order date and one for ship date, used at the same time. Inactive relationships are not enough. What do you build?
Show Answer
Two date dimension tables, for example Order Date and Ship Date, each with an active relationship to Sales. **Why:** An inactive relationship only works inside a measure. Separate tables give each role its own active filter path, so both slicers can apply together.
Concept
Where can you set a data alert, and on which visuals?
Show Answer
On dashboard tiles of cards, KPIs and gauges in the Power BI service. **Why:** Alerts notify you when a value crosses a threshold. They are set on dashboards, not directly on report visuals.
Concept
What is the difference between a table visual and a matrix visual?
Show Answer
A table shows flat rows and columns. A matrix groups rows and columns into levels with subtotals, and can be expanded and collapsed. **Why:** Use a matrix for pivot-style analysis (Region by Month), and a table for detail lists.
Concept
How long can a Copilot prompt be in Power BI?
Show Answer
Up to 10,000 characters, across Copilot surfaces including the standalone experience, the report pane, apps, mobile and Embedded. **Why:** Longer prompts let you give detailed instructions and context in a single message.
What does it return?
[Sales] is blank for a product. What does `[Sales] - 0` return, and what does `[Sales] * 1` return?
Show Answer
[Sales] - 0 returns 0; [Sales] * 1 returns blank. **Why:** In subtraction and addition, blank is treated as 0. In multiplication, blank stays blank.
Concept
How does the standalone Copilot differ from the report Copilot pane?
Show Answer
Standalone Copilot can find and answer questions about any report or semantic model you can access; the pane only covers the open report. **Why:** It is a preview, full-screen experience and needs its own tenant setting plus a Copilot-supported capacity for billing.
Concept
How can you add page navigation to a report without bookmarks?
Show Answer
Use a page navigator, or buttons with a Page navigation action. **Why:** The page navigator creates a button for each page and updates when pages are added, renamed or hidden.
Concept
What does Analyze in Excel do?
Show Answer
It opens Excel connected live to a Power BI semantic model, so users build PivotTables with the model's measures. **Why:** Excel users keep their habits while numbers come from the governed model. It needs Build permission.
Concept
How can Copilot help with report subscriptions?
Show Answer
You can include Copilot-generated summaries when you set up subscriptions to a report. **Why:** Recipients get a short written summary along with the snapshot, which helps busy readers.
Concept
You find a one-to-one relationship between Customer and CustomerExtra. What should you usually do?
Show Answer
Merge the two tables into one Customer dimension. **Why:** A one-to-one relationship adds a join without adding meaning. One table is simpler for authors and for the engine.
Concept
What can the Copilot pane on a report do?
Show Answer
Summarise the report or a topic and answer questions about the report's data. **Why:** It is scoped to the open report. To search across reports and models you have access to, use the standalone Copilot.
Concept
What is a mobile layout in Power BI?
Show Answer
A separate portrait layout of a page where you place and resize visuals for phones. **Why:** The Power BI mobile app shows the mobile layout when it exists, so phone users don't have to pinch and zoom a desktop page.
Concept
Does a DirectQuery semantic model need scheduled refresh?
Show Answer
Not to get data; queries go to the source live. Power BI may still refresh tile caches on dashboards on a schedule. **Why:** DirectQuery reads current data on demand, so you manage source performance rather than refresh windows.
Concept
Name three AI visuals in Power BI.
Show Answer
Key influencers, decomposition tree and the Q&A visual (smart narrative/narrative is a fourth). **Why:** These visuals use machine learning or natural language to explain data, without writing code.
What does it return?
In M, `each _ * 2` is shorthand for which function?
Show Answer
`(_) => _ * 2` **Why:** each creates a one-parameter function whose parameter is named _. In table steps, [Column] inside each means _[Column].
Concept
What are domains in Fabric?
Show Answer
A way to group workspaces by business area (like Finance or Sales) for governance and discovery. **Why:** Domain admins can manage settings for their area, and users can filter the catalog by domain.
Scenario
Two departments use one app. Each should see different reports, and in shared reports only their own data. What do you combine?
Show Answer
App audiences for which reports each department sees, and row-level security for which rows they see. **Why:** Audiences control item visibility; only RLS filters data inside a report.
Concept
What happens when you publish a .pbix from Desktop to a workspace?
Show Answer
It creates (or replaces) a semantic model and a report with the same name in that workspace. **Why:** Republishing overwrites both. Report-only changes still republish the model unless the report uses a live connection to a separate model.
Concept
How does reducing granularity improve performance?
Show Answer
Summarising data to the level reports need (for example daily per store instead of per transaction) means far fewer rows to scan. **Why:** If nobody looks at individual receipts, storing them only makes the model bigger and slower.
Concept
When do you need the large semantic model storage format?
Show Answer
When an Import model in a capacity workspace must grow beyond the default size limit (10 GB compressed for upload). **Why:** It lets the model grow up to the capacity's memory limit and improves XMLA write performance.
Concept
When do you use a Conditional column?
Show Answer
To create a column from if-then-else rules, for example "If Amount > 1000 then Large else Small". **Why:** It writes an M if expression through a simple form. For complex rules, edit the formula directly.
Concept
Your rows are only unique by Store + Date. How do you create a single key column in Power Query?
Show Answer
Merge the columns into one text column with a separator (for example Store|Date) or build an integer key. **Why:** Relationships use one column. A separator avoids clashes like 1 + 23 vs 12 + 3.
Scenario
A developer publishes straight to the production workspace and breaks the CEO's report. What process prevents this?
Show Answer
A deployment pipeline (Development, Test, Production), with only a few people allowed to deploy to Production and changes tested in Test first. **Why:** Developers work in Development, testers check Test, and Production changes only through controlled deployments that can be compared first.
Trick question
Trick question: after a Left outer merge with a lookup table and expanding a column, your fact table has more rows than before. Why?
Show Answer
The lookup table had duplicate keys, so some rows matched more than once. **Why:** A merge returns every match. Remove duplicates in the lookup (or fix the key) before merging.
What does it return?
For a continuous factor, key influencers says "`Tenure` goes up 13.44 → 1.23x more likely to be Low". What is 13.44?
Show Answer
One standard deviation of tenure (in its unit, here months). **Why:** For continuous factors the visual reports the effect of increasing the factor by its standard deviation.
Interview question
Interview: how do you design a report page for an executive audience?
Show Answer
Lead with three to five key numbers and their trend, add one or two charts that explain them, and move detail to drillthrough pages or tooltips. **Why:** Executives want the answer first and the evidence on request. Mentioning layout, hierarchy and drillthrough shows practical design sense.
Concept
How can a capacity admin see how much compute Copilot uses?
Show Answer
In the Microsoft Fabric Capacity Metrics app, filtered to the "Copilot in Fabric" operation. **Why:** Copilot usage counts as background capacity operations measured in capacity units, so it shares resources with refreshes and queries.
Concept
How do you find out who uses a report?
Show Answer
Open the report's usage metrics report in the service, or use the admin activity log for tenant-wide analysis. **Why:** Usage data tells you which reports matter and which can be retired.
Concept
What are sensitivity labels in Power BI?
Show Answer
Microsoft Purview Information Protection labels (such as Confidential) applied to Power BI items. **Why:** Labels show users how sensitive content is, and they can stay on data exported to Excel, PowerPoint or PDF, carrying protection outside Power BI.
What does it return?
What does this return? ```m [City = "Pune", Sales = 120][Sales] ```
Show Answer
120. **Why:** Square brackets with name = value pairs make a record; [Sales] after it reads that field.
Fix the code
This custom column returns null for some rows because Discount is sometimes null. Fix it so missing discounts count as 0. ```m each [Price] - [Discount] ```
Show Answer
`each [Price] - ([Discount] ?? 0)` **Why:** Arithmetic with null returns null in M. The ?? operator substitutes 0 when Discount is null.
Scenario
There are six "Sales" semantic models and users don't know which to trust. What helps most?
Show Answer
Certify the official one, retire or consolidate the others, and point reports to the certified model. **Why:** Endorsement badges appear in the OneLake catalog and Get data lists, guiding users to the right model.
Interview question
Interview: what is the difference between sharing a report and publishing an app?
Show Answer
Sharing gives individuals access to one item; an app packages several items with navigation and audiences, and changes reach users only when you update it. **Why:** Apps scale better for large audiences and protect users from changes in progress.
Scenario
A manager wants next quarter's sales forecast on a chart today, without a data scientist. What built-in option is there, and what caveat do you give?
Show Answer
The Analytics pane forecast on a line chart with a date axis; explain it is a statistical projection with a confidence band, not a business plan. **Why:** It extends past patterns and seasonality. It doesn't know about price changes or new stores, so treat it as one input.
Concept
What is a degenerate dimension?
Show Answer
A descriptive key, such as an order number, that stays in the fact table because it has no other attributes worth a separate table. **Why:** Creating a dimension with only the key would just duplicate the column. It can stay in the fact and still be used in tables or drillthrough.
Concept
Name four kinds of sources Power BI's Get data can connect to.
Show Answer
For example: files (Excel, CSV, PDF, folders), databases (SQL Server, Oracle, PostgreSQL), cloud services (SharePoint, Dataverse, Salesforce) and Fabric items (lakehouses, warehouses, semantic models). **Why:** There are hundreds of connectors. Choosing the right one matters because some support DirectQuery and query folding, and others don't.
Concept
What is the difference between Absolute and Relative analysis in decomposition tree AI splits?
Show Answer
Absolute picks the highest or lowest value; Relative picks the value that stands out most compared with the others in its column. **Why:** Absolute can choose a field with a single value (trivially the highest). Relative finds surprising splits, like a value four times the expected share.
Concept
What does a report theme control?
Show Answer
Default colours, fonts, and formatting for visuals across the report. Themes can be saved and imported as JSON files. **Why:** Themes keep branding consistent and save formatting each visual by hand.
Scenario
HR stores one row per employee per month-end with Active = 1. Yearly totals show 12 × the real headcount. What measure do you write?
Show Answer
Headcount at the last month in context, for example CALCULATE ( SUM ( HR[Active] ), LASTDATE ( 'Date'[Date] ) ) (or LASTNONBLANK if month-ends can be missing). **Why:** Headcount is semi-additive: it adds across departments but not across time.
Concept
What is happening to Power BI Premium per-capacity (P) SKUs?
Show Answer
Microsoft is retiring them and no longer sells new ones; customers migrate to Fabric (F) capacity SKUs when their P subscription term ends. **Why:** Pro and Premium Per User licences aren't affected. Plan the F SKU move before the P subscription ends to avoid throttling after the grace period.
What does it return?
What does this DAX query return? ```dax DEFINE FUNCTION AddTax = ( amount : NUMERIC, taxRate : NUMERIC = 0.1 ) => amount * ( 1 + taxRate ) EVALUATE { AddTax ( 10 ) } ```
Show Answer
11. **Why:** taxRate is optional with a default of 0.1, so AddTax(10) computes 10 × 1.1.
What does it return?
Sales has 120 rows for 2025; 30 of them are returns with negative amounts. What does `COUNTROWS ( Sales )` return for 2025?
Show Answer
120. **Why:** COUNTROWS counts rows regardless of values. To count only sales, filter first, for example CALCULATE ( COUNTROWS ( Sales ), Sales[Amount] > 0 ).
Fix the code
This RLS role should show each sales rep only their own rows, matched on email address, but it doesn't work reliably. Fix it. ```dax [RepEmail] = USERNAME () ```
Show Answer
`[RepEmail] = USERPRINCIPALNAME ()` **Why:** USERPRINCIPALNAME returns the signed-in user's UPN, usually their email. USERNAME can return DOMAIN\user in Power BI Desktop, which doesn't match an email column.
Concept
How can you show a live, interactive Power BI report page in a PowerPoint presentation?
Show Answer
Use the Power BI add-in for PowerPoint (or Export > PowerPoint > Embed live data) to insert the report page. **Why:** The slide shows current data and can be filtered during the presentation, respecting the viewer's permissions.
Concept
What does a report subscription do?
Show Answer
It emails users a snapshot of a report page (or attachment) on a schedule, with a link back to the report. **Why:** Busy readers get the numbers without logging in. Subscribing other people needs a Pro or PPU licence and at least the Contributor role in the workspace.
Concept
What is OneLake integration for Import semantic models?
Show Answer
A setting that automatically writes the data of Import tables to Delta tables in OneLake. **Why:** Other Fabric tools (SQL, notebooks, shortcuts) can then use the same data without a separate export.
Trick question
Trick question: a query builds its URL with Web.Contents("https://api.example.com/" & Page). It refreshes in Desktop but the service says it can't refresh a dynamic data source. Why?
Show Answer
The service needs to know the data source before running the query; a fully computed URL hides it. **Why:** Use Web.Contents with a fixed base URL and the RelativePath and Query options, so the base address is static.
Concept
What is a virtual network (VNet) data gateway?
Show Answer
A Microsoft-managed gateway that connects to data sources inside an Azure virtual network without you installing gateway software. **Why:** It suits Azure sources locked down with private endpoints. Microsoft lists it for P, F and A4-or-higher capacities (F8 or above recommended).
Concept
What is Column from examples?
Show Answer
You type the result you want for a few rows and Power Query works out the transformation (like extracting a first name or a year). **Why:** It writes the M for you. Check the formula it generated before relying on it.
Scenario
Five reports each contain their own copy of the same model, and every change must be made five times. How should you restructure?
Show Answer
Publish one shared semantic model and build the five reports with live connections to it. **Why:** One model means one refresh, one set of measures and one place to fix things.
Concept
How do you create a custom function in Power Query?
Show Answer
Write a query like (x as number) as number => x * 2, or right-click a parameterised query and choose Create function. **Why:** Functions let you apply the same logic to many files or rows, which is how Combine files works behind the scenes.
Common mistake
Common mistake: setting every relationship to "Both" so slicers filter each other. Why is this risky?
Show Answer
Bidirectional filters can create ambiguous paths, slow queries and surprising results. **Why:** Use single direction by default. When one visual needs a reverse filter, use CROSSFILTER inside a measure, or a measure-based filter on the slicer, instead of changing the model.
Concept
What is the difference between HASONEVALUE and ISINSCOPE?
Show Answer
HASONEVALUE is true when the filter context leaves one value; ISINSCOPE is true when the column is a grouping level of the current visual row or column. **Why:** ISINSCOPE is the reliable way to tell detail rows from subtotals in a matrix, because a slicer can also leave one value.
Trick question
Trick question: a decomposition tree level shows only 10 of your 40 products. Is data missing?
Show Answer
No; each level shows the top 10 values by default. **Why:** Microsoft documents a top n of 10 per level, a maximum of 50 levels and 5,000 data points on the tree at once.
Scenario
You pasted a hand-written SQL statement into the SQL Server connector. Later steps are slow. Why?
Show Answer
Steps after a custom native query generally don't fold (unless you enable folding with Value.NativeQuery and EnableFolding), so Power Query processes them locally. **Why:** Do the shaping in the SQL itself, or connect to a table or view and let Power Query generate folded SQL.
Concept
Which functions give month-to-date and quarter-to-date totals?
Show Answer
TOTALMTD and TOTALQTD (or CALCULATE with DATESMTD or DATESQTD). **Why:** They work like TOTALYTD but reset at the start of each month or quarter.
Interview question
Interview: why do people say "flatten your snowflakes" in Power BI?
Show Answer
Merge chains of lookup tables (Product → Subcategory → Category) into one product dimension. **Why:** Each extra hop is another relationship to filter through and another table for report authors to understand. One wider dimension is usually faster and simpler.
Concept
How many scheduled refreshes per day can a semantic model have?
Show Answer
Up to 8 on shared capacity (Pro), and up to 48 on Premium, Premium Per User or Fabric capacity. **Why:** For more frequent data, consider DirectQuery, Direct Lake, or refreshing through the XMLA endpoint or API on capacity.
Common mistake
Common mistake: adding + 0 to every measure so visuals show 0 instead of blank. What is the side effect?
Show Answer
Visuals then show every combination, such as every product for every day, even with no data, which bloats tables and slows reports. **Why:** Visuals hide rows where all measures are blank. Forcing zeros removes that, so only return 0 where it matters, such as a card.
Concept
What does "Mark as date table" require?
Show Answer
A date column with unique values, no blanks and no missing dates between the first and last date. **Why:** Classic time intelligence relies on a complete, contiguous date column. Covering whole years is the usual practice, and marking the table tells Power BI which column to use.
Concept
How do you calculate a rolling 12-month total?
Show Answer
`CALCULATE ( [Total Sales], DATESINPERIOD ( 'Date'[Date], MAX ( 'Date'[Date] ), -12, MONTH ) )` **Why:** DATESINPERIOD returns the dates from the last visible date back 12 months, so each month shows the trailing year.
Concept
What is the difference between hiding a column and securing it with object-level security (OLS)?
Show Answer
Hiding only removes it from the field list; anyone with build access can still query it. OLS makes the column or table invisible and unqueryable for the roles you choose. **Why:** Hiding is for tidiness. Sensitive fields such as salary need OLS (or not being in the model at all).
Common mistake
Common mistake: `SUMMARIZE ( Sales, Product[Category], "Sales", SUM ( Sales[Amount] ) )`. What is the recommended pattern?
Show Answer
Group with SUMMARIZE (or VALUES/SUMMARIZECOLUMNS) and add the calculation with ADDCOLUMNS, or use SUMMARIZECOLUMNS directly. **Why:** Calculating new columns inside SUMMARIZE can produce unexpected results because of how it builds context. The ADDCOLUMNS pattern is predictable.
Fix the code
This step errors with "The name 'table.selectrows' wasn't recognized". Fix it. ```m Filtered = table.selectrows(Source, each [Qty] > 0) ```
Show Answer
`Filtered = Table.SelectRows(Source, each [Qty] > 0)` **Why:** M is case-sensitive: function names, step names and column names must match exactly.
Interview question
Interview: how do you decide between Import, DirectQuery and Direct Lake?
Show Answer
Import for the best speed when data fits and refresh latency is acceptable; DirectQuery when data must be current or is too large to copy; Direct Lake when the data is already in OneLake Delta tables on Fabric capacity. **Why:** A good answer ties the choice to freshness, size, source and licensing, not to habit.
Scenario
Your model's measures are named M1, M2, Calc_final and Sum of Amt2. You plan to turn on Copilot for readers. What do you fix first?
Show Answer
Rename measures in plain business language (Total Sales, Gross Margin %) and add descriptions. **Why:** Copilot and report authors rely on names and descriptions to choose the right measure; cryptic names lead to wrong answers.
Concept
How can you give someone access to one report without adding them to the workspace?
Show Answer
Share the report directly with them, or include it in an app audience they belong to. **Why:** Item-level access avoids giving workspace rights to people who only need one report.
Concept
What does "refresh" mean for a Direct Lake semantic model?
Show Answer
Framing: updating the model's references to the latest version of the Delta tables, which copies metadata only and usually takes seconds. **Why:** There is no full data copy like an Import refresh. Data preparation happens upstream in OneLake.
Trick question
Trick question: you subscribe five regional managers to a report that uses row-level security. Does each manager's email image show their own region?
Show Answer
No. The image in the email shows data based on the subscription owner's permissions. **Why:** Microsoft warns about this for RLS models. When managers click through, the report opens with their own permissions, so keep confidential data out of the snapshot or let each manager subscribe themselves.
Concept
What is incremental refresh?
Show Answer
A policy that partitions an Import table by date, keeps older partitions, and refreshes only recent ones (for example the last 10 days of 5 years). **Why:** Refreshes become faster and lighter on the source. It needs RangeStart and RangeEnd parameters filtering a date column in Power Query.
Concept
What does a numeric range parameter (what-if parameter) create?
Show Answer
A calculated table of values, a slicer, and a measure that returns the selected value. **Why:** You can use the selected value in other measures, for example "Sales if price rises by X%", and let users move the slider.
Concept
What can a Contributor not do that a Member can?
Show Answer
A Contributor can't add people to the workspace or share items onward, and can update the app only if the workspace allows it. **Why:** Contributor suits report developers who build content but shouldn't control access.
Fix the code
After the source renamed "Cust Name" to "Customer Name", refresh fails on this step. Fix it so it keeps working. ```m Renamed = Table.RenameColumns(Source, {{"Cust Name", "Customer"}}) ```
Show Answer
Rename the column that now exists: `Table.RenameColumns(Source, {{"Customer Name", "Customer"}})` **Why:** Steps that name columns fail when the column disappears. (MissingField.Ignore would only skip the missing "Cust Name" and leave "Customer Name" unrenamed, so later steps that use Customer would still fail.)
Concept
How does drillthrough work?
Show Answer
You add a field to a target page's Drillthrough well; users right-click a data point elsewhere and jump to that page filtered to the item. **Why:** It keeps summary pages clean while giving detailed pages for one customer or product on demand.
Concept
How can you build a Product dimension when you only have a flat sales extract?
Show Answer
Reference the extract, keep the product columns, remove duplicates on the product key, and load it as its own table. **Why:** Then remove the descriptive product columns from the fact table and keep only the key, which gives a star schema.
Trick question
Trick question: can a DAX user-defined function call itself recursively?
Show Answer
No. **Why:** Microsoft lists recursion (and mutual recursion), overloading and explicit return types as unsupported for UDFs.
Scenario
Finance wants yesterday's numbers every morning from a 5 GB SQL Server database, and reports must feel instant. Import, DirectQuery or Direct Lake?
Show Answer
Import with a nightly scheduled refresh. **Why:** Daily latency is fine, the volume fits comfortably in memory, and Import gives the fastest visuals. Direct Lake needs the data in OneLake as Delta tables, which this source is not.
Concept
What is a role-playing dimension?
Show Answer
One dimension used for several meanings, like a Date table that relates to Order Date, Ship Date and Due Date. **Why:** You either keep one active and others inactive (and use USERELATIONSHIP), or load copies of the table (Order Date, Ship Date) so each can filter on its own.
Scenario
A visual shows a "(Blank)" product with sales next to it. Why?
Show Answer
Some Sales rows have a ProductKey that doesn't exist in the Product table, so Power BI groups them under a blank member. **Why:** This is a data quality signal. Fix the missing products at the source or in Power Query, or map unknown keys to an "Unknown" row.
Concept
What is the card visual for?
Show Answer
Showing one or a few headline numbers, such as Total Sales or Margin %. **Why:** A key number at the top of the page answers the first question quickly. The newer card visual can show several values with reference labels.
Concept
What is a report page tooltip?
Show Answer
A small report page set to Tooltip use, shown when users hover over a data point, filtered to that point. **Why:** It gives rich context (a mini chart, extra numbers) on hover without adding visuals to the main page.
Common mistake
Common mistake: adding an Index column before filtering a SQL table to the last two years. What is the effect?
Show Answer
Adding an index often breaks folding, so the filter runs locally after downloading all rows. **Why:** Put filters and column removal first while they still fold, then do steps that don't fold.
Concept
What is a Power BI semantic model?
Show Answer
The tables, relationships, measures and settings that reports query. It used to be called a dataset. **Why:** Reports never hold data themselves. They send queries to a semantic model, so one well-built model can serve many reports.
Concept
Name three statistical functions available in DAX.
Show Answer
For example MEDIAN, PERCENTILE.INC and STDEV.S (also AVERAGE, MIN, MAX and their X versions). **Why:** These let you describe a distribution, for example median order value, which is less sensitive to a few huge orders than the average.
Common mistake
Common mistake: leaving the automatic "Changed Type" step after Promoted Headers in a query that will get new columns. What can break?
Show Answer
The step lists every column by name, so a renamed or removed column makes refresh fail. **Why:** Delete auto-generated type steps and set types once, deliberately, after the shape is final.
Common mistake
Common mistake: using Remove errors on the whole table as a routine step. Why is it dangerous?
Show Answer
It silently drops rows whenever any column has an error, so totals shrink without anyone noticing. **Why:** Fix errors at their cause, or replace errors in specific columns, and keep a check (for example a row count) to notice changes.
Fix the code
This merge returns no matches although the codes look identical. Codes in Sales are text like "P001 " (with a space). Fix the approach. ```m Merged = Table.NestedJoin(Sales, {"Code"}, Products, {"Code"}, "P", JoinKind.LeftOuter) ```
Show Answer
Trim (and standardise case of) the Code column in both queries before the merge. **Why:** Merges compare values exactly; "P001 " and "P001" don't match. Clean keys first.
Trick question
Trick question: can you refresh a Direct Lake model through an on-premises data gateway?
Show Answer
No. **Why:** Direct Lake supports only cloud connections and can't operate through any gateway.
Trick question
Trick question: is this a valid filter in CALCULATE? ```dax CALCULATE ( [Total Sales], Product[Colour] IN { "Red", "Blue" } ) ```
Show Answer
Yes. **Why:** The IN operator with a table constructor is a valid column predicate and is clearer than chaining OR conditions.
Trick question
Trick question: a user belongs to two RLS roles, "West" and "East". What do they see?
Show Answer
Both West and East. **Why:** Role permissions are combined (a union), so membership in more roles shows more rows, never fewer.
Scenario
The business wants "new customers this month": customers whose first purchase ever is in the selected month. Outline the DAX.
Show Answer
For each customer in context, get their first purchase date across all time, and count customers whose first date falls in the visible period. **Why:** For example: COUNTROWS ( FILTER ( VALUES ( Sales[CustomerKey] ), CALCULATE ( MIN ( Sales[OrderDate] ), ALL ( 'Date' ) ) >= MIN ( 'Date'[Date] ) ) ). Removing date filters is the key step.
Concept
What does the Auto date/time option do, and why do many teams turn it off?
Show Answer
It creates a hidden date table for every date column. It is off in most production models because it inflates model size and gives no shared calendar. **Why:** Several dates mean several hidden tables. A single date table you build is smaller and works across all facts.
Concept
What does a one-to-many relationship between Product and Sales mean?
Show Answer
Each product key appears once in Product and can appear many times in Sales. **Why:** This is the normal dimension-to-fact relationship. Filters flow from the one side (Product) to the many side (Sales).
Concept
When is a bar or column chart a better choice than a pie chart?
Show Answer
Almost always when you compare more than a few categories. **Why:** People judge lengths more accurately than angles. A pie with eight slices is hard to read; a sorted bar chart is not.
Trick question
Trick question: can Copilot in Dataflow Gen2 "capitalise the column headers in every query" with one prompt?
Show Answer
No; Copilot can't transform or explain across multiple queries in a single input. **Why:** Microsoft lists working on one query at a time as a current limitation.
Concept
What is a .pbit file?
Show Answer
A Power BI template: the queries, model, measures and report layout without the data. **Why:** Opening a template asks for parameter values (if any) and then loads fresh data, so it is a clean way to reuse a design.
Concept
What belongs in a fact table?
Show Answer
One row per event or measurement (a sale, a shipment, a reading), with numeric values and keys to the dimensions. **Why:** Facts are the tall tables you aggregate. Keeping descriptive text out of them keeps them narrow and compresses better.
Concept
How does BLANK behave in arithmetic, for example BLANK() + 5 and BLANK() * 5?
Show Answer
BLANK() + 5 = 5, and BLANK() * 5 is blank. **Why:** In addition and subtraction blank acts like zero; in multiplication and division it stays blank. This affects measures that combine missing values.
Trick question
Trick question: stock is counted only on weekdays, and a month ends on a Sunday. What does the LASTDATE version of Closing Stock show for that month?
Show Answer
Blank, because there is no stock row on the last calendar day. **Why:** Use LASTNONBLANK ( 'Date'[Date], CALCULATE ( SUM ( Stock[Qty] ) ) ) to take the last date that actually has data.
Scenario
Actuals are daily, budgets are monthly. A user wants budget vs actual by month. How do you model it?
Show Answer
Keep Budget as its own fact table, relate it to Date at month level (for example to a month key or the first day of month), and compare measures by month. **Why:** Facts with different grains shouldn't be merged. Compare them through shared dimensions, and only show budget at levels it really exists.
What does it return?
In a matrix with Colour on rows (Red, Blue, Green), what does this measure show on the Blue row? ```dax Red Sales = CALCULATE ( [Total Sales], Product[Colour] = "Red" ) ```
Show Answer
The sales of red products. **Why:** The filter argument replaces the existing filter on Product[Colour], so every row shows the same red total. Use KEEPFILTERS to intersect instead.
Concept
How can a calculation item show YoY % as a percentage while other items keep currency?
Show Answer
Give the YoY % item a format string expression, for example "0.0%". **Why:** Calculation items can override the format string of the measure they modify, so the same column shows money and percentages correctly.
Interview question
Interview: what governance would you put around Copilot in Power BI?
Show Answer
Decide who gets Copilot through tenant settings and groups, choose the capacity (or a Fabric Copilot capacity) that pays for it, monitor usage in the Capacity Metrics app, and approve only prepared models for Copilot. **Why:** Copilot consumes capacity and its answers depend on model quality, so access, cost and readiness all need owners.
What does it return?
What does this return? ```m Text.Combine({"Mumbai", "Pune", "Delhi"}, ", ") ```
Show Answer
"Mumbai, Pune, Delhi". **Why:** Text.Combine joins a list of text values with the separator you give.
Concept
What do you need to use Copilot in Power BI Desktop?
Show Answer
To sign in and have write access to a workspace on a paid Fabric or Premium capacity (or a Fabric Copilot capacity assigned to you). **Why:** Desktop runs Copilot through a capacity for billing, even though the report isn't published yet.
Scenario
Today is 15 March 2026. A "YTD vs last YTD" card compares 1 Jan–15 Mar 2026 with all of 1 Jan–31 Mar 2025 and looks bad. What went wrong, and how do you fix it?
Show Answer
The Date table runs to 31 March, so last year's YTD covers dates past 15 March. Limit both periods to dates up to the last date with data, for example with a "date has passed" flag in the Date table. **Why:** Comparing a partial period with a fuller one makes growth look worse. Like-for-like dates fix it.
Concept
What is the difference between a .pbix file and a Power BI project (.pbip)?
Show Answer
A .pbix is one binary file holding the report, model and data. A .pbip saves the report and model as folders of text files (including TMDL for the model). **Why:** Text files can be diffed and stored in Git, which is why teams that use source control save as .pbip.
Concept
When is a paginated report the right choice?
Show Answer
When people need pixel-perfect, printable output that can run to many pages, like invoices or long operational lists. **Why:** Power BI reports are interactive and fit a screen. Paginated reports (built in Power BI Report Builder) are designed to print or export every row.
Trick question
Trick question: can you type over the text Copilot generated in the narrative visual?
Show Answer
No; you change it with prompts. **Why:** To edit freely, switch to the Custom (smart narrative) mode and paste or write the text there.
Concept
What is an on-premises data gateway for?
Show Answer
It lets the Power BI service reach data sources inside a private network, such as an on-premises SQL Server or a file share. **Why:** The service runs in Microsoft's cloud and can't connect to private networks directly. The gateway makes outbound connections to relay the data.
Concept
Name two report page settings you can change in the Format pane.
Show Answer
Canvas size (such as 16:9 or custom) and canvas background or wallpaper. **Why:** A consistent page size and background across pages makes the report feel designed rather than assembled.
Concept
What does Sync slicers do?
Show Answer
It applies one slicer's selection to other pages, and can show or hide that slicer on each page. **Why:** Users pick a region once and see it everywhere, instead of re-selecting on every page.
Concept
What does setting a column's data category (for example City or Web URL) do?
Show Answer
It tells Power BI what the values mean, so maps place them correctly and URLs or images display properly. **Why:** "Paris" could be a city in France or Texas. Categories, ideally with country columns too, help visuals interpret values.
Concept
What can Copilot in web modeling (preview) help model authors do?
Show Answer
Spot problems such as unclear structure or inconsistent naming, recommend best practices, and edit measures, tables, columns and relationships. **Why:** It needs write access to the model in a capacity workspace and works in Editing mode of the model view in the service.
Trick question
Trick question: you add a slicer on Sales[Region] (a column in the fact table). Will it filter the Product dimension's slicer list?
Show Answer
Not with a single-direction one-to-many relationship. **Why:** Filters flow from the one side to the many side. Slicing by attributes in a dimension table is the cleaner design anyway.
Concept
What does "Get the latest data in real time with DirectQuery" add to an incremental refresh policy?
Show Answer
A DirectQuery partition for the newest period on top of the imported partitions, making it a hybrid table. **Why:** Users see current data for today while history stays fast in Import. It needs Premium, Premium Per User or Fabric capacity.
Concept
What happens when Copilot generates a DAX query with a syntax error?
Show Answer
Copilot checks the syntax and retries once automatically; if it is still invalid, it returns the query with a note saying it contains errors. **Why:** You can rephrase the request or fix the DAX yourself. Always run and read generated queries.
Trick question
Trick question: you fixed a report in the workspace. Do app users see the change immediately?
Show Answer
No; you have to update the app. **Why:** The app shows the version published last time. Updating the app pushes your changes to its users.
Common mistake
Common mistake: pasting a Copilot answer straight into a board pack. What should you do first?
Show Answer
Check the numbers against the report or a trusted measure, and look at how Copilot arrived at the answer. **Why:** Copilot can be wrong, especially on ambiguous models. Treat it as a fast first draft, not an audited source.
Trick question
Trick question: does a report on SharePoint Online files and Azure SQL Database (public endpoint) need a gateway to refresh?
Show Answer
No. **Why:** Both are cloud sources the service can reach directly. A gateway is needed for sources in a private network (including Azure sources behind a private network, which may need a VNet data gateway).
Trick question
Trick question: can you try Copilot in Power BI on a Fabric trial capacity?
Show Answer
No. **Why:** Copilot in Fabric and Power BI only runs on paid SKUs. Trial capacities are explicitly excluded.
Fix the code
The slicer uses Region[Region], but this title shows "Sales for " with nothing after it. Fix it. ```dax Title = "Sales for " & SELECTEDVALUE ( Sales[Region] ) ```
Show Answer
`Title = "Sales for " & SELECTEDVALUE ( Region[Region], "all regions" )` **Why:** Read the column the slicer filters. The fallback text also covers the case where several regions (or none) are selected.
Common mistake
Common mistake: `CALCULATE ( [Total Sales], FILTER ( Sales, Sales[Region] = "West" ) )`. What is better and why?
Show Answer
`CALCULATE ( [Total Sales], Sales[Region] = "West" )` **Why:** The FILTER version iterates the whole fact table and puts all its columns into the filter. A column predicate filters only one column and is faster and clearer.
What does it return?
The same table (Jan 10, Feb 20, Mar 30). What does this visual calculation show for February? ```dax Change = [Sales] - PREVIOUS ( [Sales] ) ```
Show Answer
10. **Why:** PREVIOUS returns the value from the previous row on the axis, so February shows 20 - 10. January has no previous row.
Concept
Where do you look to see why a refresh failed last night?
Show Answer
The semantic model's refresh history in the service, which shows status, duration and error details for each run. **Why:** The error message usually points to credentials, gateway availability, a changed column or a timeout.
What does it return?
Product prices are 10, 20 and 30. What does this calculated column return on the row priced 20? ```dax Cheaper Count = VAR ThisPrice = Product[Price] RETURN COUNTROWS ( FILTER ( Product, Product[Price] < ThisPrice ) ) ```
Show Answer
1. **Why:** Only the product priced 10 is cheaper than 20. The variable captures the current row's price before FILTER starts its own row context.
What does it return?
What does this calculated table return? ```dax Dates = CALENDAR ( DATE ( 2025, 1, 1 ), DATE ( 2025, 12, 31 ) ) ```
Show Answer
A one-column table named Date with 365 rows, one for each day of 2025. **Why:** CALENDAR returns every date between the start and end dates, inclusive, in a column called Date.
Concept
When is SWITCH ( TRUE (), ... ) better than nested IFs?
Show Answer
When you test several conditions in order, such as margin bands. **Why:** SWITCH ( TRUE (), [Margin] < 0, "Loss", [Margin] < 0.1, "Low", "Healthy" ) reads top to bottom and is easier to maintain.
Concept
What can Copilot do in DAX query view?
Show Answer
Write a DAX query from a plain-language request, modify a selected query, explain a query, and explain DAX functions or topics. **Why:** You can run the suggested query and keep or discard it. The shortcut to open Copilot there is Ctrl+I.
Concept
What is the difference between a Power BI report and a dashboard?
Show Answer
A report has one or more interactive pages built on one semantic model. A dashboard is a single service-only canvas of pinned tiles, which can come from many reports. **Why:** Dashboards are a summary for monitoring and alerts; reports are for exploring. Dashboards are created in the service, not in Desktop.
What does it return?
What does this return? ```m "Apple" = "apple" ```
Show Answer
false. **Why:** Text comparison in M is case-sensitive by default. Use Comparer.OrdinalIgnoreCase or convert both to the same case to compare loosely.
Concept
What does Publish to web do, and when should you never use it?
Show Answer
It creates a public link or embed code that anyone on the internet can view without signing in. Never use it for confidential or internal data. **Why:** There is no authentication or row-level security. Admins can disable it in tenant settings.
Concept
What does an AI data schema do?
Show Answer
It lets you choose which tables, columns and measures Copilot should focus on, so it ignores helper or confusing fields. **Why:** A smaller, relevant schema reduces ambiguity, for example between three different "Amount" columns.
Concept
How do tiles get onto a dashboard?
Show Answer
You pin visuals (or a whole live report page) from reports, or add tiles such as text, images or web content. **Why:** A dashboard can collect key visuals from several reports and semantic models on one screen.
Fix the code
This custom column errors with "We cannot apply operator & to types Text and Number". Fix it. ```m each "Order " & [OrderID] ```
Show Answer
`each "Order " & Text.From([OrderID])` **Why:** The & operator joins text. Convert the number to text first with Text.From.
Scenario
Analysts want to build their own reports on the certified Sales model without seeing its workspace. What do you grant?
Show Answer
Build permission on the semantic model (directly or through the app), without a workspace role. **Why:** They can connect to the model from Desktop or the service and create reports elsewhere, while the model stays protected.
What does it return?
What does this return? ```m Text.Split("2025-03-07", "-") ```
Show Answer
A list: {"2025", "03", "07"}. **Why:** Text.Split returns a list of text pieces. Use List functions (for example {0} to take the first item) to get one part.
What does it return?
What does this M query return? ```m let a = 2, b = a * 5, c = b + 1 in b ```
Show Answer
10. **Why:** The query returns whatever step is named after in. Step c is computed only if something needs it; here nothing does.
Concept
What happens when you click an earlier step in the Applied steps list?
Show Answer
The preview shows the data as it was after that step. **Why:** It is the quickest way to find where a problem started. New steps are inserted after the selected step, which can break later steps that expect the old shape.
What does it return?
What does this return? ```m null ?? "Unknown" ```
Show Answer
"Unknown". **Why:** ?? is M's coalesce operator: it returns the left value unless it is null, otherwise the right value.
Trick question
Trick question: can classic time intelligence compute week-to-date directly?
Show Answer
No; classic functions have no week-level variants. Calendar-based time intelligence adds TOTALWTD. **Why:** Week-based calendars were a long-standing gap. With a calendar that defines week categories, TOTALWTD ( [Sales], 'Calendar' ) works.
Concept
What are High value and Low value AI splits in a decomposition tree?
Show Answer
Options that look across the remaining fields and drill into the one giving the highest (or lowest) value of the measure. **Why:** AI levels show a light bulb and recalculate when you select a different node or cross-filter the tree.
Concept
What is a verified answer?
Show Answer
A visual an author marks as the answer to certain questions, with trigger phrases, so Copilot returns that visual when users ask those questions. **Why:** It gives consistent, approved answers to common questions like "sales this quarter". Verified answers are saved on the semantic model.
Concept
What is a conformed dimension?
Show Answer
A dimension shared by several fact tables, such as one Date or Product table used by Sales, Returns and Budget. **Why:** One slicer on the shared dimension filters every fact consistently, so numbers line up across visuals.
Concept
How do you test Prep data for AI changes before publishing?
Show Answer
Use the Copilot report pane in Power BI Desktop, choosing skills with the skill picker, and close and reopen the pane after each change. **Why:** Changes save on the model; reopening the pane makes Copilot pick them up. "How Copilot arrived at this" and Download diagnostics help troubleshoot.
Concept
What are tenant settings in the Fabric admin portal?
Show Answer
Organisation-wide switches that admins set, such as allowing Publish to web, export, Copilot and who can create workspaces. **Why:** Many "why can't I do X?" questions are answered by a tenant setting, often scoped to security groups.
Concept
What does increasing anomaly detection sensitivity do?
Show Answer
Smaller deviations are flagged as anomalies; lowering it makes the algorithm more selective. **Why:** Tune sensitivity so users see the anomalies that matter, not every wiggle.
Concept
What does Copilot in DAX query view use to write queries, and what limits apply?
Show Answer
The model's metadata (tables, columns, measures and the first 200 characters of descriptions), and it may use a reduced view of very large models. **Why:** It can't read your table data (apart from min/max samples in Import mode), so descriptive names and descriptions matter.
Concept
Your fiscal year starts on 1 April. How do you make year-to-date follow it with classic time intelligence?
Show Answer
Pass the year-end date to the function, for example TOTALYTD([Sales], 'Date'[Date], "3-31"). **Why:** TOTALYTD and DATESYTD accept a year_end_date argument. A fiscal year column in the date table also helps with labels and slicers.
Concept
Name the six join kinds in Merge.
Show Answer
Left outer, Right outer, Full outer, Inner, Left anti and Right anti. **Why:** Anti joins return only rows with no match, which is a quick way to find orphan keys or missing products.
Concept
What does RANKX ( ALL ( Product[Product] ), [Total Sales] ) return for a product row?
Show Answer
The product's rank by sales among all products (1 = highest). **Why:** RANKX evaluates the measure for every row of the table in its first argument and finds where the current value fits.
Concept
What does the narrative visual with Copilot do?
Show Answer
It writes a text summary of the whole report, chosen pages or chosen visuals, which you can steer with suggested or custom prompts. **Why:** It gives readers a written takeaway with footnotes that point back to the visuals it used.
Concept
What can report authors ask Copilot to do?
Show Answer
Create or edit report pages, summarise the semantic model, add a narrative visual, write DAX queries and suggest measure descriptions. **Why:** Some run in the Copilot pane and others inline, such as in DAX query view or the model view's description box.
Scenario
Report authors complain the field list has 300 fields and they can't find anything. What do you change in the model?
Show Answer
Hide keys and technical columns, group measures into display folders, rename fields in business terms and add descriptions. **Why:** A smaller, well-named field list speeds up authoring and reduces mistakes like slicing by the wrong column.
Concept
What is "Prep data for AI"?
Show Answer
A set of tools (in preview) for model owners to improve Copilot answers: an AI data schema, verified answers and AI instructions. **Why:** Copilot can misread an unprepared model. These tools tell it which fields matter, what terms mean and which visuals answer common questions.
Common mistake
Common mistake: using SAMEPERIODLASTYEAR ( Sales[OrderDate] ) on the fact table. Why can it fail or mislead?
Show Answer
Classic time intelligence expects a complete date column; the fact table has gaps on days with no sales. **Why:** Use the date table's column ('Date'[Date]) with a relationship to Sales, so shifts land on real calendar dates.
Concept
What is the difference between COUNT, COUNTA, COUNTROWS and DISTINCTCOUNT?
Show Answer
COUNT counts non-blank values in a column (numbers, dates or text), COUNTA counts non-blank values of any type, COUNTROWS counts rows of a table, and DISTINCTCOUNT counts unique values. **Why:** For "number of orders" use COUNTROWS on the fact; for "number of customers who bought" use DISTINCTCOUNT on the customer key.
Concept
What can Copilot do in Dataflow Gen2?
Show Answer
Generate transformation steps or new queries from a plain-language request, summarise a query and its steps, and undo the last applied step. **Why:** Microsoft documents these features with limits: Copilot works on one query at a time and can be inaccurate when the data it needs isn't in the sample.
Concept
Name three quick Power Query fixes for messy text.
Show Answer
Trim (remove leading and trailing spaces), Clean (remove non-printing characters) and Capitalize Each Word or Uppercase. **Why:** "Delhi", "delhi " and "DELHI" look different to a relationship or slicer. Standardise them before loading.
Concept
A column has some Error cells after a type change. Name three ways to deal with them.
Show Answer
Find the cause by clicking the error, fix the values before the type step, or use Replace errors or Remove errors as a last resort. **Why:** Removing error rows can silently drop real data. Understanding the cause (often text like "N/A" in a number column) is better.
Concept
When do you use a waterfall chart?
Show Answer
To show how a starting value moves to an ending value through positive and negative steps, like a profit bridge. **Why:** Each bar starts where the last one ended, so viewers see which items added or removed the most.
Concept
What is M?
Show Answer
The formula language behind Power Query. Every applied step is an M expression, visible in the Advanced Editor. **Why:** Most work is done through the ribbon, but reading M helps you debug, reuse and fine-tune queries.
What does it return?
Key influencers shows "`Role in Org is consumer` → 2.57x more likely to be Low", and 14.93% of consumers gave a Low rating. Roughly what share of the other roles gave a Low rating?
Show Answer
About 5.8%. **Why:** The multiplier compares the influencer's rate with the average of the other values: 14.93% ÷ 2.57 ≈ 5.8%.
Common mistake
Common mistake: relating two fact tables (Sales and Returns) directly to each other. What should you do instead?
Show Answer
Relate both to shared dimensions (Date, Product, Customer) and compare them with measures. **Why:** Fact-to-fact relationships are many-to-many and confusing. Shared (conformed) dimensions let one slicer filter both facts correctly.
Concept
What are the jobs of Power BI Desktop and the Power BI service?
Show Answer
Desktop is the free Windows app where you connect, shape, model and design reports. The service (app.powerbi.com) is where you publish, share, refresh and govern them. **Why:** Most authoring starts in Desktop, while collaboration, scheduled refresh, apps and security settings live in the service.
Concept
What is OneLake?
Show Answer
The single, tenant-wide data lake in Fabric where items such as lakehouses and warehouses store their data, in Delta format for tables. **Why:** Because everything sits in one lake, Direct Lake models and other engines can read the same tables without copying them.
Concept
In a calculation item, what does SELECTEDMEASURE() mean?
Show Answer
Whatever measure the visual is currently evaluating. **Why:** A YTD item written as CALCULATE ( SELECTEDMEASURE (), DATESYTD ( 'Date'[Date] ) ) works for Sales, Cost or Units.
Concept
What does TOPN ( 5, ALL ( Product ), [Total Sales] ) return?
Show Answer
A table of the five products with the highest sales (more if there are ties at fifth place). **Why:** TOPN returns a table, so use it in CALCULATE or iterators, for example to compute "Sales of the top 5 products".
Concept
What is a workspace in the Power BI service?
Show Answer
A shared container where a team keeps related items such as semantic models, reports, dashboards and dataflows. **Why:** Workspaces are where collaboration, roles, capacity assignment and app publishing are managed.
Concept
What is a Fabric Copilot capacity (FCC)?
Show Answer
A Fabric capacity (F2 or P1 at least) that an admin designates to collect and bill the Copilot usage of assigned users, wherever their content lives. **Why:** It lets people use Copilot in Power BI Desktop and in Pro or PPU workspaces, and brings Copilot costs into one capacity for monitoring.
Concept
What does Merge do?
Show Answer
It joins two queries on matching columns, like a SQL join, and adds the matched rows as a nested table column you can expand. **Why:** Use it to bring a lookup value into a table, or to find rows that do or don't match.
Interview question
Interview: when is a bidirectional relationship acceptable?
Show Answer
Rarely: for example on a bridge table in a many-to-many pattern, or for a security table in dynamic RLS. Otherwise prefer single direction and CROSSFILTER in specific measures. **Why:** Interviewers want to hear that you understand ambiguity and performance risks and treat "Both" as a deliberate exception.
Concept
How can a chart title change with the slicer selection?
Show Answer
Set the title text with fx to a measure, for example "Sales for " & SELECTEDVALUE(Region[Region], "all regions"). **Why:** Titles bound to measures tell readers exactly what they are looking at after they filter.
Concept
What does USERELATIONSHIP do?
Show Answer
Inside CALCULATE, it activates an inactive relationship for that calculation only. **Why:** `CALCULATE ( [Total Sales], USERELATIONSHIP ( Sales[ShipDate], 'Date'[Date] ) )` gives sales by ship date while the order date relationship stays active.
Concept
Name four Fabric workloads besides Power BI.
Show Answer
For example Data Factory, Data Engineering, Data Warehouse, Data Science, Real-Time Intelligence and Databases. **Why:** All of them run on the same Fabric capacity and store data in OneLake, which is what makes Fabric a single platform.
Concept
What does CALCULATE do?
Show Answer
It evaluates an expression in a filter context changed by its filter arguments. **Why:** Almost every "sales for X", "ignoring Y" or "compared with Z" measure is a CALCULATE with filters that add, replace or remove context.
Interview question
Interview: when would you use the decomposition tree instead of key influencers?
Show Answer
Decomposition tree for exploring how a measure breaks down across chosen dimensions step by step; key influencers for ranking which factors statistically drive an outcome. **Why:** One answers "where is it?" by drilling; the other answers "what drives it?" with regression.
Scenario
You want a measure to show a value on product rows but blank on the category subtotal and grand total. How?
Show Answer
Wrap it: `IF ( ISINSCOPE ( Product[Product] ), [My Measure] )` **Why:** ISINSCOPE is true only on rows grouped by Product, so subtotals and totals return blank.
Scenario
Your company wants to roll out Copilot to 500 report readers next month. What should model owners do first?
Show Answer
Clean up names and descriptions, prepare the main models for AI, test common questions, then mark ready models Approved for Copilot. **Why:** Readers judge Copilot by its first answers. Preparation before rollout avoids generic or wrong results that hurt trust.
Fix the code
This rank shows 1 on every row of a product table. Fix it. ```dax Rank = RANKX ( Product, [Total Sales] ) ```
Show Answer
`Rank = RANKX ( ALL ( Product[Product] ), [Total Sales] )` **Why:** Each row filters Product to one item. ALL on the product column ranks against every product.
Interview question
Interview: explain how you would implement row-level security for 300 sales reps.
Show Answer
A security table mapping each rep's email to their territories, a relationship into the model, one dynamic role using USERPRINCIPALNAME(), testing with View as, and reps given Viewer or app access. **Why:** Dynamic RLS scales without a role per rep, and the answer shows you know RLS doesn't apply to editors.
Concept
Why does the choice between Decimal number and Fixed decimal number matter?
Show Answer
Fixed decimal (Currency) stores four decimal places exactly, which avoids floating-point rounding surprises in money totals. **Why:** Decimal number is a floating-point type. For money, Fixed decimal gives exact sums and often compresses better.
Trick question
Trick question: can you set a classic Power BI data alert on a line chart in a report?
Show Answer
No; classic data alerts are set on dashboard tiles showing a single number (card, KPI, gauge). **Why:** For report visuals, pin a card to a dashboard and set the alert there, or use other tools such as Fabric Activator.
Concept
What naming and organisation habits make a model's measures easier to use?
Show Answer
Name measures in business language without table prefixes, keep them in a dedicated measure table or display folders, and add descriptions. **Why:** Report authors and Copilot both read measure names and descriptions, so clear naming reduces mistakes.
Concept
What is the decomposition tree visual for?
Show Answer
Breaking a measure down across dimensions in any order, drilling level by level, for ad hoc root-cause analysis. **Why:** Users choose the next dimension themselves, or let AI splits pick it.
Interview question
Interview: when would you recommend calculation groups, and what is the trade-off?
Show Answer
When many measures need the same variants (YTD, PY, YoY). The trade-off is that implicit measures stop working and the logic is less visible to new authors. **Why:** Calculation groups cut measure count dramatically, but the team must understand SELECTEDMEASURE and precedence.
Scenario
Compliance wants to stop people exporting row-level detail from a finance report to Excel, but summaries are fine. What do you configure?
Show Answer
In the report's settings, allow only summarised data export (or none), and check the related tenant settings with the admin. **Why:** Export options exist at report and tenant level; the stricter one wins.
Scenario
Column quality shows 15% empty values in Customer Email. Should you remove those rows?
Show Answer
No; keep the customers and leave the email blank (or "Not provided"). **Why:** Removing rows would drop their sales from the model. Blank attributes are normal; missing keys are the real problem.
Concept
Name four ways to distribute Power BI content.
Show Answer
Workspace roles, apps, direct sharing of an item (or a link), and embedding (Teams, SharePoint, a secure portal or your own app). **Why:** Each suits a different audience. Apps are usually best for large read-only audiences; workspace roles for the team building content.
Scenario
A user says "I can't see the Copilot button in my report." List the checks in order.
Show Answer
Is the workspace on paid F2+/P1+ capacity (or is the user on a Fabric Copilot capacity)? Is the Copilot tenant setting on for them? Is the capacity in a supported region, and is cross-geo processing allowed if needed? **Why:** Missing Copilot is nearly always capacity, tenant settings or region. Microsoft also notes new capacity can take up to 24 hours to be recognised.
What does it return?
Total sales across all regions is 1,000. On the West row (300) of a region table, what does this return? ```dax CALCULATE ( [Total Sales], ALL ( Region ) ) ```
Show Answer
1,000. **Why:** ALL ( Region ) removes the row's region filter, so every row shows the grand total.
Concept
What does ALLSELECTED do?
Show Answer
It removes filters coming from inside the visual (rows, columns) but keeps filters from outside it, such as slicers. **Why:** Use it for "share of the visible total" when a slicer has narrowed the data, so percentages still add up to 100% on screen.
Trick question
Trick question: a Direct Lake on OneLake table exceeds the row guardrail for its F-SKU. Does it fall back to DirectQuery?
Show Answer
No. Refresh fails and the model can't be queried until the Delta tables are brought within the limits. **Why:** Only Direct Lake on SQL falls back (if allowed). Microsoft's guardrail table gives, for example, 300 million rows per table up to F32 and 1.5 billion on F64.
Concept
Why use Power Query parameters for server and database names?
Show Answer
You change one value to point all queries at test or production, and you can edit parameter values in the service's semantic model settings. **Why:** Parameters also drive deployment pipeline rules and incremental refresh (RangeStart and RangeEnd).
Concept
What is REMOVEFILTERS?
Show Answer
A CALCULATE modifier that clears filters from a table or columns. It works like ALL used as a filter argument, with a clearer name. **Why:** Many teams prefer REMOVEFILTERS because readers see the intent immediately. Unlike ALL, it cannot be used as a table expression.
Common mistake
Common mistake: selecting Jan–Dec and choosing Unpivot columns on a sheet that gets a new month column every month. What is safer?
Show Answer
Select the ID columns and choose Unpivot other columns. **Why:** "Unpivot other columns" names only the columns to keep, so new month columns are unpivoted automatically.
Trick question
Trick question: [Total Sales] is defined as SUM ( Sales[Amount] ). Why does using [Total Sales] inside an iterator give a different result from writing SUM ( Sales[Amount] ) there?
Show Answer
A measure reference is always wrapped in an implicit CALCULATE, so it triggers context transition; the bare SUM does not. **Why:** This is the core reason "a measure is not the same as its formula" inside iterators and calculated columns.
Concept
What problem do calculation groups solve?
Show Answer
They apply the same logic (YTD, PY, YoY %) to any measure, so you don't write one variant of every measure. **Why:** Ten base measures × five time variants would mean fifty measures. A calculation group with five items does it once.
Concept
What is a live connection to a published semantic model?
Show Answer
A report that has no model of its own and queries a semantic model already published in the service. **Why:** Many reports can share one certified model. You can add report-level measures, but not tables or Power Query steps, unless you turn it into a composite model.
What does it return?
Source has rows (East, 10), (East, 5), (West, 7) in columns Region and Sales. What does this return? ```m Table.Group(Source, {"Region"}, {{"Total", each List.Sum([Sales]), type number}}) ```
Show Answer
Two rows: East 15 and West 7. **Why:** Table.Group passes each group's rows to the function; [Sales] is that group's list of sales, which List.Sum adds.
Concept
What does the key influencers visual show?
Show Answer
The factors that most affect a metric (on the Key influencers tab) and combinations of factors, called segments (on the Top segments tab). **Why:** It answers "what drives this?", for example what makes customers give low ratings.
Concept
What is row context?
Show Answer
The "current row" that exists while DAX iterates a table, as in a calculated column or inside SUMX. **Why:** Row context lets you write Sales[Qty] * Sales[Price] for one row. It doesn't filter other tables by itself.
Concept
Your tenant's capacity is in India (outside the US and EU data boundary). Why might Copilot be switched off, and what turns it on?
Show Answer
For tenants or capacities outside the US or EU data boundary, Copilot is disabled by default. The admin must enable the setting that allows data sent to Azure OpenAI to be processed outside the tenant's geographic region. **Why:** It is a compliance choice for the organisation, so Microsoft leaves it off until an admin opts in.
Trick question
True or false: a visual calculation can be reused in other visuals like a measure.
Show Answer
False. **Why:** Visual calculations are stored on the visual that defines them. If several visuals need the logic, write a measure (or a DAX user-defined function) instead.
Interview question
Interview: explain ALL vs ALLSELECTED with an example.
Show Answer
With a Year slicer on 2025 and a product slicer on three products, ALL ( Product ) in a denominator gives every product's 2025 sales; ALLSELECTED ( Product ) gives the total of the three selected products. **Why:** The difference shows when users filter products. ALLSELECTED keeps percentages adding to 100% of what they selected.
Common mistake
Common mistake: scheduling refresh every 30 minutes on a model whose source only updates nightly. Why is it bad?
Show Answer
It wastes capacity and source resources and can interfere with other refreshes, with no fresher data. **Why:** Match the schedule to how often the source changes; one refresh after the nightly load is enough.
Concept
What does COALESCE ( [Sales], 0 ) do?
Show Answer
Returns [Sales], or 0 when [Sales] is blank. **Why:** COALESCE returns the first argument that isn't blank. It is shorter than IF ( ISBLANK ( ... ) ).
Interview question
Interview: how do you handle bad data you find in Power Query?
Show Answer
Profile it, find the cause with the data owner, fix what you can upstream, apply clear documented rules in Power Query, and keep checks (like row counts or an error table) so new problems show up. **Why:** Interviewers look for a process, not just "remove errors", because silent fixes hide problems.
Concept
When do data labels help, and when do they hurt?
Show Answer
They help on charts with few points where exact values matter; they hurt on dense charts where labels overlap. **Why:** Too many labels turn a chart into a table of numbers. Use tooltips for exact values on busy charts.
Trick question
Trick question: nobody has opened a report for two months. What happens to its scheduled refresh?
Show Answer
Power BI pauses it and emails the semantic model owner. **Why:** After two months without visits to any report or dashboard on the model, the service treats it as inactive. A subscription on the report keeps the refresh from being paused.
Concept
Where can you control whether users export data from visuals?
Show Answer
In the report settings (export data options) and the tenant settings the admin manages. **Why:** Export of underlying data can leak detail, so many organisations allow summarised exports only or none.
Trick question
Trick question: what does this return in any filter context? ```dax Test = VAR s = [Total Sales] RETURN CALCULATE ( s, ALL ( Product ) ) ```
Show Answer
The same value as [Total Sales] in the current context; ALL has no effect. **Why:** The variable was already evaluated before CALCULATE runs. CALCULATE can't change a value that is already computed; put the measure itself inside CALCULATE.
Concept
Write a "sales same period last year" measure.
Show Answer
`Sales PY = CALCULATE ( [Total Sales], SAMEPERIODLASTYEAR ( 'Date'[Date] ) )` **Why:** SAMEPERIODLASTYEAR shifts the dates in context back one year, so it works at day, month, quarter or year level.
What does it return?
What does this return? ```m Text.Upper(Text.Start("power query", 5)) ```
Show Answer
"POWER". **Why:** Text.Start takes the first five characters and Text.Upper makes them capitals.
Concept
What is the difference between "embed for your organisation" and "embed for your customers"?
Show Answer
For your organisation, users sign in with their own Power BI accounts (user owns data). For customers, your app authenticates with a service principal and users don't need Power BI licences (app owns data). **Why:** The second needs embedding capacity, such as a Fabric F SKU, and your app must enforce security itself (for example by passing RLS identities).
Concept
What is the Expand by field well in key influencers for?
Show Answer
It sets the level at which a measure or summarised field is analysed, such as per house ID, without treating that field as an influencer. **Why:** Measures are otherwise analysed at the level of the Explain by fields, which can be too summarised to find patterns.
Concept
What does COLLAPSE do in a visual calculation, for example DIVIDE([Sales], COLLAPSE([Sales], ROWS))?
Show Answer
It evaluates the expression at the parent level of the axis, so this returns each row's share of its parent. **Why:** In a matrix of Category > Product, each product is divided by its category total, giving "percent of parent" in one line.
Scenario
A partner company's managers need a dashboard of their orders. How can you share securely with external users?
Show Answer
Invite them as Microsoft Entra B2B guests and share through an app or item with row-level security for their company, if your tenant settings allow guest access. **Why:** Guests sign in with their own accounts and see only what RLS allows. Publish to web would expose the data publicly.
Fix the code
This RLS filter on the Region table should give the West manager the West region, but returns nothing. The column holds "West". Fix it. ```dax [Region] = "West " ```
Show Answer
`[Region] = "West"` **Why:** The trailing space makes the text different. Better still, use a security table so region names aren't typed into roles.
Trick question
Trick question: column profiling shows 0% errors. Can the column still contain errors?
Show Answer
Yes; by default profiling only looks at the first 1,000 rows. **Why:** Switch the status bar setting to "Column profiling based on entire data set" to check every row, which is slower.
Concept
What does turning off Enable load on a query do?
Show Answer
The query stays in Power Query for others to reference, but its result is not loaded into the model. **Why:** Staging and helper queries shouldn't appear as tables in the model; disabling load keeps the model clean and smaller.
Concept
What are the options when you create a sharing link to a report?
Show Answer
People in your organisation, people with existing access, or specific people; you can also choose whether they can share or build on the data. **Why:** Organisation-wide links are convenient but broad. Specific people is the controlled option for sensitive reports.
Concept
What is the difference between CALENDAR and CALENDARAUTO?
Show Answer
CALENDAR takes the start and end dates you give it. CALENDARAUTO scans the model's date columns and builds whole years around them. **Why:** CALENDARAUTO is convenient but can pick up odd dates such as birth dates or 1900 placeholders. CALENDAR keeps the range under your control.
Concept
What does marking a semantic model "discoverable" do?
Show Answer
It lets users without access find the model in the catalog and request access. **Why:** It helps people reuse an existing certified model instead of building another copy.
Common mistake
Common mistake: leaving chart titles as "Sum of SalesAmount by ProductCategory". What is better?
Show Answer
A plain title such as "Sales by category", and measures named the way business users talk. **Why:** Default titles come from field names. Clear names make reports easier to read and also help Copilot understand the model.
Concept
How can you check whether a step folds?
Show Answer
Right-click the step: if View Native Query is available it folds; the step folding indicators also show this. **Why:** Steps after the first non-folding step usually run locally, so keep foldable steps (filters, column selection) early.
Concept
What are quick measures?
Show Answer
Templates in Power BI Desktop that write DAX for common calculations, such as running totals or year-over-year change, from fields you pick. **Why:** They are a quick start and a way to learn patterns. Always read the generated DAX and rename the measure to something meaningful.
Want More Flashcards?
Unlock premium flashcards with in-depth content, advanced topics, and comprehensive study materials for your professional growth.