Free PL-300 Practice Exam: Power BI Data Analyst
Try 50 free PL-300 practice questions with explained answers, realistic scenarios, and a topic review worksheet. Continue with interactive IT Mastery practice.
Practise with 50 original PL-300 questions from the current IT Mastery bank. Practise Power Query transformations, semantic models, DAX, report decisions, and access controls using the data and assumptions supplied in each question.
These are independent IT Mastery practice questions, not official Microsoft questions, copied live-exam content, or exam dumps.
Start Question 1 · Review your attempt
How to use this free exam
- Record your answer before opening its explanation. This set contains 50 single-answer questions.
- For a timed attempt, set your own 100-minute timer. This page does not run a timer, record answers, or calculate a score.
- Award one point per correct question, for a total out of 50. Mark correct guesses for review too.
- Read the explanation and identify the evidence that rules out the strongest competing answer.
Wide tables scroll horizontally. Code blocks offer Wrap lines and Copy code. Where a diagram appears, use Open full-size diagram or its Text description if you need more space.
Microsoft currently allows 100 minutes for PL-300 and may include interactive components. It does not guarantee a fixed question count or item-type mix. Our 50-question set is an editorial practice format. Official exam details .
Practice-set coverage
| Domain | Official range | Questions in this set |
|---|---|---|
| Prepare the Data | 25–30% | 14 |
| Model the Data | 25–30% | 14 |
| Visualize and Analyze the Data | 25–30% | 14 |
| Manage and Secure Power BI | 15–20% | 8 |
Practice questions
Questions 1-25
Question 1
Topic: Prepare Data
A Sales fact table has one row per sale and relates many-to-one to Product. The Product dimension has unique keys 101 and 102. Two fact rows reference unknown product keys.
| SaleID | ProductKey | Amount |
|---|---|---|
| S1 | 101 | 60 |
| S2 | 102 | 100 |
| S3 | 999 | 40 |
| S4 | 998 | 50 |
The reporting policy requires all four sales and their original amounts to remain. Unmatched product keys must appear under a governed Unknown product member with reserved key 0. Which preparation meets the policy while preserving the relationship grain?
Options:
A. Add one ProductKey 0 row per unmatched sale to Product; map unmatched Sales keys to 0.
B. Add ProductKey 0 once to Product; map only unmatched Sales product keys to 0.
C. Add ProductKey 0 once to Product; map every Sales product key to 0.
D. Add ProductKey 0 once to Product; remove Sales rows whose original keys are unmatched.
Best answer: B
Explanation: An explicit Unknown dimension member provides a valid relationship target for unmatched fact keys. Mapping only the unmatched keys 999 and 998 to 0 retains the four sale rows and total amount 250. Product keys 101 and 102 keep their original classifications. The dimension must have exactly one row for reserved key 0 so it remains the unique side of the relationship.
- Removing unmatched sales drops S3 and S4 and loses 90 of reported sales.
- One Unknown row per unmatched sale duplicates reserved key 0 for the two unmatched sales.
- Mapping every key to Unknown destroys the valid classifications for S1 and S2.
Question 2
Topic: Model Data
An active one-to-many relationship filters Sales from Customers by CustomerID. A card is filtered to Customers[Segment] = "Retail". All amounts are USD.
| CustomerID | Segment |
|---|---|
| A | Retail |
| B | Retail |
| C | Wholesale |
| SaleID | CustomerID | Amount |
|---|---|---|
| 1 | A | 100 |
| 2 | A | 50 |
| 3 | B | 300 |
| 4 | C | 150 |
The card uses this measure:
Average Customer Revenue =
AVERAGEX(
Customers,
CALCULATE(SUM(Sales[Amount]))
)
What value does the card display?
Options:
A. $225
B. $200
C. $150
D. $450
Best answer: A
Explanation: AVERAGEX iterates the customer rows available in the current filter context, so only customers A and B are evaluated. For each row, CALCULATE performs context transition: the current customer row becomes filter context and filters the related sales rows. Customer A therefore produces $150, and customer B produces $300. AVERAGEX averages these two scalar results: \((150 + 300) / 2 = 225\).
The calculation averages customer-level totals, not individual sales or the unfiltered customer population.
- $450 is the combined Retail revenue, not the average of the two customer-level results.
- $200 averages totals for all three customers and incorrectly ignores the Retail filter.
- $150 averages the three individual Retail sales rather than the totals produced per customer.
Question 3
Topic: Visualize and Analyze
A report has Overview and Detail pages with a synced Region slicer. Before updating a bookmark, the author opens the Detail page and makes an instruction panel visible.
When users activate the bookmark, it must:
- Navigate to the Detail page.
- Restore the instruction panel’s visibility.
- Preserve current slicer and report-filter selections.
Which bookmark configuration meets these requirements?
Options:
A. Data on; Display on; Current page on
B. Data off; Display on; Current page on
C. Data off; Display on; Current page off
D. Data off; Display off; Current page on
Best answer: B
Explanation: Bookmark properties control separate parts of the saved report state. Display must be on to restore the instruction panel’s visibility. Current page must be on so activating the bookmark navigates to the saved Detail page. Data must be off because the bookmark should not restore its saved filters, slicers, sorting, or drill state; the user’s current Region and report-filter selections should remain in effect.
Enabling Data would overwrite the filter state that the requirement says to preserve.
- Data on restores saved slicer and filter states instead of preserving the user’s current selections.
- Display off does not restore the saved visibility of the instruction panel.
- Current page off applies the bookmark state without navigating to the Detail page.
Question 4
Topic: Manage and Secure
A Power BI semantic model must restrict each Viewer to sales for assigned regions. In the Power BI service, USERPRINCIPALNAME() returns jordan@contoso.com for Jordan.
User-to-region mapping:
| UserUPN | RegionKey |
|---|---|
| jordan@contoso.com | East |
| jordan@contoso.com | West |
| priya@contoso.com | Central |
Scroll sideways if needed. Open full-size diagram in a new tab
Text description
UserAccess has an active many-to-one relationship with Region. Its ordinary cross-filter direction is Both, while bidirectional security filtering is off. Region has an active one-to-many relationship to Sales, with ordinary filtering from Region to Sales.
Which role filter and relationship configuration should be used?
Options:
A. Filter
UserAccess[UserUPN] = USERPRINCIPALNAME()and leave bidirectional security filtering disabled on UserAccess-Region.B. Filter
UserAccess[UserUPN] = USEROBJECTID()and enable bidirectional security filtering on UserAccess-Region.C. Filter
UserAccess[UserUPN] = USERPRINCIPALNAME()and enable bidirectional security filtering on Region-Sales.D. Filter
UserAccess[UserUPN] = USERPRINCIPALNAME()and enable bidirectional security filtering on UserAccess-Region.
Best answer: D
Explanation: Dynamic RLS first filters the mapping table by the signed-in identity. Jordan’s UPN matches two UserAccess rows, but those rows must then restrict Region. Although the UserAccess-Region relationship has ordinary cross-filter direction set to Both, security filters do not automatically propagate in both directions. Enabling the relationship’s separate bidirectional security-filter setting allows the RLS filter to reach Region. The active Region-to-Sales relationship then propagates the region filter to sales rows.
The essential distinction is between ordinary cross-filter direction and security-filter propagation.
- Leaving bidirectional security disabled prevents the filtered mapping rows from restricting
Region, despite ordinary cross-filtering being Both. USEROBJECTID()returns an identity value that does not match the UPN values stored in the mapping table.- Changing security propagation on Region-Sales does not bridge the filtered mapping table to
Region.
Question 5
Topic: Prepare Data
A company stores sales data in an on-premises SQL Server database. A shared semantic model in the Power BI service must query the source when users interact with report visuals instead of waiting for scheduled refresh. The database can support the interactive query workload.
Which connection configuration should the analyst use?
Options:
A. Use the SQL Server connector in DirectQuery mode with a standard on-premises data gateway.
B. Use the SQL Server connector in Import mode with an on-premises data gateway in personal mode.
C. Use the SQL Server connector in DirectQuery mode with an on-premises data gateway in personal mode.
D. Use the SQL Server connector in Import mode with a standard on-premises data gateway.
Best answer: A
Explanation: The SQL Server connector matches the on-premises source, and DirectQuery sends queries to that source as users interact with visuals rather than relying on imported data from the last semantic model refresh. Because the semantic model runs in the Power BI service and the database is on premises, a standard on-premises data gateway provides the required shared service-to-source connection.
Import mode would provide a cached copy that changes only when the semantic model refreshes. Personal gateway mode is intended for individual Import-refresh scenarios, not shared DirectQuery operation. Import with a personal gateway still depends on importing data during refresh and cannot meet the interactive source-query requirement.
- Import with a standard gateway queries the cached model between refreshes.
- DirectQuery with a personal gateway uses a gateway mode that does not support DirectQuery.
- Import with a personal gateway also queries a cached model and does not meet the required shared DirectQuery configuration.
Question 6
Topic: Model Data
An Import semantic model has active one-to-many relationships from Date[Date] and Account[AccountID] to a balance snapshot table. The measure [Balance Amount] is SUM('Balance Snapshot'[Balance]).
| Date | AccountID | Balance |
|---|---|---|
| March 28, 2026 | A | 130 |
| March 29, 2026 | B | 210 |
| March 31, 2026 | A | 125 |
A matrix is filtered to March 2026. It must use each account’s last available balance during the month and display a total of 335. Which measure meets this requirement?
Options:
A.
Period End Balance = SUMX( VALUES('Account'[AccountID]), CALCULATE( LASTNONBLANKVALUE('Date'[Date], [Balance Amount]) ) )B.
Period End Balance = SUMX( VALUES('Account'[AccountID]), CALCULATE( [Balance Amount], LASTDATE('Date'[Date]) ) )C.
Period End Balance = SUMX( VALUES('Account'[AccountID]), CALCULATE( FIRSTNONBLANKVALUE('Date'[Date], [Balance Amount]) ) )D.
Period End Balance = MAXX( VALUES('Account'[AccountID]), CALCULATE( LASTNONBLANKVALUE('Date'[Date], [Balance Amount]) ) )
Best answer: A
Explanation: Period-end balances are semi-additive: they can be summed across accounts, but not across dates. SUMX iterates the visible accounts, and CALCULATE converts each account’s row context into filter context. Within that context, LASTNONBLANKVALUE finds the final date having a balance for that specific account. Account A contributes 125 from March 31, while account B contributes 210 from March 29, producing 335.
Using the final calendar date for every account would omit accounts whose latest snapshot occurred earlier.
- Using
LASTDATEevaluates March 31 for both accounts, so account B contributes no balance and the total is 125. - Using
FIRSTNONBLANKVALUEreturns each account’s earliest March balance, producing 340 rather than the period-end total. - Using
MAXXfinds the largest account-level ending balance, 210, rather than summing both account balances.
Question 7
Topic: Visualize and Analyze
A Power BI line chart shows 24 monthly demand observations through December 2026. The chart uses a continuous month axis, one demand series, and no missing periods. An analyst configures a three-month forecast with a 95% confidence interval.
Forecast result for February 2027:
| Point forecast | Lower bound | Upper bound |
|---|---|---|
| 520 | 470 | 570 |
Which statement correctly interprets the forecast?
Options:
A. The horizon is January-March; February has a point forecast of 520 and a confidence band from 470 to 570.
B. The horizon is January-March; the February interval describes 95% of historical demand values.
C. The horizon is January-March; February demand is guaranteed to remain between 470 and 570.
D. The horizon is December-February; the final observed month counts toward the three-month forecast.
Best answer: A
Explanation: A forecast horizon begins after the final observed period. Because the actual series ends in December 2026, a three-month horizon covers January, February, and March 2027. For February, 520 is the central point forecast, while 470 and 570 are the lower and upper bounds of the configured 95% confidence interval. The interval communicates model uncertainty around the forecast; it does not summarize historical demand and does not guarantee that the eventual observation will fall inside the band.
The continuous monthly axis and single complete time series are suitable for applying the Power BI forecast.
- Interpreting the bounds as historical coverage confuses forecast uncertainty with the distribution of past observations.
- Counting December in the horizon incorrectly includes the final actual period rather than starting after it.
- Treating the confidence interval as a guarantee overstates what the statistical forecast can establish.
Question 8
Topic: Manage and Secure
A published semantic model contains these RLS roles and orders:
| Role | Filter |
|---|---|
| EastSales | Sales[Region] = "East" |
| WestSales | Sales[Region] = "West" |
| Order | Region |
|---|---|
| 101 | East |
| 102 | West |
| 103 | Central |
Jordan is a workspace Viewer with Build permission and belongs to both the East Analysts and West Analysts Microsoft Entra security groups. Single-group members must see only their assigned region, while Jordan must see both regions. Individual role assignments are not permitted.
Which implementation and verification result meets the requirements?
Options:
A. Assign each group to its matching role; grant Contributor access and verify Jordan sees orders 101 and 102.
B. Assign each group to its matching role; retain Viewer access and verify Jordan sees zero visible orders.
C. Assign both groups to both roles; retain Viewer access and verify Jordan sees orders 101 and 102.
D. Assign each group to its matching role; retain Viewer access and verify Jordan sees orders 101 and 102.
Best answer: D
Explanation: Microsoft Entra security groups can be assigned to RLS roles on a published semantic model. Because Jordan belongs to both groups, Jordan receives the permitted rows from both roles. Multiple RLS role memberships combine through union, not intersection, so East and West orders are visible while the Central order remains filtered out.
RLS applies to workspace Viewers, including Viewers who have Build permission. Testing Jordan’s effective identity in the Power BI service should therefore show orders 101 and 102. Contributor access would bypass RLS and would not validate the intended restriction.
- Expecting zero rows incorrectly treats multiple RLS roles as intersecting filters rather than a union of permitted rows.
- Assigning both groups to both roles would expose both regions to every single-group member.
- Granting Contributor access bypasses RLS, so Jordan’s normal access would also include the Central order.
Question 9
Topic: Prepare Data
A Power BI Import semantic model uses an on-premises SQL Server through an online standard gateway.
- The server and database locations are unchanged.
- The SQL login password was rotated.
- The gateway connection’s credential test now fails with an authentication error.
Which action should restore scheduled refresh?
Options:
A. Update the SQL credentials stored in the standard gateway connection, then test refresh.
B. Update the SQL credentials in Power BI Desktop, then republish the semantic model.
C. Update the Windows account running the gateway service, then restart the gateway.
D. Recreate the scheduled refresh configuration while retaining the existing gateway connection.
Best answer: A
Explanation: For an on-premises source reached through a standard gateway, scheduled refresh uses the credentials stored in the gateway connection. The gateway is online and the source location has not changed, so neither connectivity nor source mapping is the problem. The failed credential test following the SQL password rotation identifies the stored SQL credentials as the cause. Updating those credentials and testing the connection restores the authentication path used by the Power BI service.
Desktop credentials apply to refreshes performed in Power BI Desktop, not scheduled refreshes routed through the gateway.
- Updating Desktop credentials affects the analyst’s local connection rather than the gateway connection used by scheduled refresh.
- Changing the gateway service account does not update the separate SQL login identified by the authentication failure.
- Recreating the refresh schedule retains the invalid gateway credentials, so authentication will continue to fail.
Question 10
Topic: Model Data
A semantic model currently has the date relationships shown.
Scroll sideways if needed. Open full-size diagram in a new tab
Text description
One Date table has an active one-to-many single-direction relationship to Sales through OrderDateKey and an inactive one-to-many single-direction relationship through ShipDateKey.
A report page must allow users to select Order Year and Ship Year independently. Every sales measure must automatically honor both selections without DAX that changes relationship state.
Which model design should the analyst implement?
Options:
A. Use one Date dimension in two Year slicers, isolating each slicer’s visual interactions.
B. Use one Date dimension, making both date relationships active and bidirectional for simultaneous filtering.
C. Use one Date dimension, activating the Ship Date relationship in each measure with USERELATIONSHIP.
D. Use separate Order Date and Ship Date dimensions, each actively filtering Sales through its matching key.
Best answer: D
Explanation: Role-playing dimensions provide separate filter contexts for different business meanings of the same type of data. An Order Date dimension actively filters Sales[OrderDateKey], while a Ship Date dimension actively filters Sales[ShipDateKey]. Users can therefore select different years, and the resulting fact rows must satisfy both filters. Because both relationships are active, ordinary measures automatically receive both filters.
USERELATIONSHIP temporarily activates an existing inactive relationship for a specific expression. It does not provide automatic relationship behavior across every measure or make two slicers from one Date dimension independent. Separate active role-playing dimensions are therefore appropriate when both roles must filter simultaneously and independently.
- Activating Ship Date with
USERELATIONSHIPrequires relationship logic in each applicable measure, contrary to the automatic-filtering requirement. - Making both relationships active creates ambiguous filtering paths; bidirectional filtering does not establish independent date roles.
- Editing slicer interactions controls which visuals receive filters, not independent role-based relationships to different fact keys.
Question 11
Topic: Visualize and Analyze
A decomposition tree analyzes [Net Sales] using Region, Product Category, Customer Segment, and Channel. An analyst manually creates the path Region > North, which has net sales of $4.80 million, and then selects the High value AI split with Analysis type: Absolute. The candidates below are the highest-valued branches for the remaining fields.
Each candidate’s North value includes the current Region > North filter.
| Candidate branch | North net sales | All-region net sales | North YoY growth |
|---|---|---|---|
| Product Category > Bikes | $2.70M | $4.10M | 8% |
| Customer Segment > Enterprise | $2.55M | $5.80M | 21% |
| Channel > Direct | $2.40M | $6.20M | 13% |
Which resulting path and interpretation are supported?
Options:
A.
North > Channel > Direct; the highest net sales across the complete modelB.
North > Customer Segment > Enterprise; the strongest growth within the North contextC.
North > Product Category > Bikes; an association within the North contextD.
North > Product Category > Bikes; the established cause of North’s aggregate sales
Best answer: C
Explanation: A decomposition-tree path creates a nested filter context. Because the analyst selected the AI-assisted High value split at the North node, Power BI evaluates the remaining Explain by fields using [Net Sales] within North. Bikes produces $2.70 million, exceeding Enterprise at $2.55 million and Direct at $2.40 million, so Product Category and Bikes form the next branch.
The AI split does not optimize year-over-year growth or ignore the existing path to compare all-region totals. It also identifies an associated contribution to the aggregate, not a causal relationship. Causation requires evidence beyond a decomposition-tree result.
- Enterprise has the highest growth rate, but the analyzed value used by the AI split is net sales.
- Direct leads across all regions, but the current North path filters the AI evaluation.
- The Bikes result describes an association and contribution, not proof that product category caused North’s sales.
Question 12
Topic: Prepare Data
A Power Query table contains repeated order snapshots. LoadRowID is unique.
| OrderID | UpdatedAt | LoadRowID |
|---|---|---|
| 1001 | 2026-04-01 09:00 | 17 |
| 1001 | 2026-04-03 14:00 | 22 |
| 1002 | 2026-04-02 11:00 | 25 |
| 1002 | 2026-04-02 11:00 | 26 |
| 1003 | 2026-04-04 08:00 | 31 |
| 1003 | 2026-04-05 08:00 | 30 |
The output must contain one row per OrderID, retaining the greatest UpdatedAt and then the greatest LoadRowID for ties. Which Power Query approach guarantees the required result?
Options:
A. Group by
OrderIDandUpdatedAt; sort each group byLoadRowIDdescending, then retain its first row.B. Group by
OrderID; sort each group byLoadRowIDand thenUpdatedAtdescending, then retain its first row.C. Sort the entire table by both tie-break columns descending, then apply
Table.DistincttoOrderID.D. Group by
OrderID; sort each group by both tie-break columns descending, then retain its first row.
Best answer: D
Explanation: Duplicate removal must use the intended business grain and a deterministic retention rule. Grouping by OrderID creates one candidate set per order. Within each group, sorting first by UpdatedAt descending and then by unique LoadRowID descending establishes a complete order, so retaining the first row produces load IDs 22, 26, and 30.
A whole-table sort followed by Table.Distinct does not guarantee which duplicate survives. The grouping keys and sort-column precedence must therefore directly reflect the business rule.
- Sort then distinct fails because
Table.Distinctdoes not guarantee preservation of the first row from a preceding sort. - Overly detailed grain can retain multiple rows for one order when snapshots have different update times.
- Reversed precedence incorrectly retains load ID 31 for order 1003 because the load identifier is considered before update time.
Question 13
Topic: Model Data
An Import semantic model uses classic date-column time intelligence. The required measure must compare sales by order date.
Sales PY =
CALCULATE(
[Sales],
SAMEPERIODLASTYEAR('Calendar'[Date])
)
| Field | Profile |
|---|---|
| Calendar[Date] | Date; unique, nonblank, daily from 2023-01-01 through 2025-12-31 |
| Calendar[FiscalYear] | Whole number; repeated |
| Sales[OrderDate] | Date; values within Calendar range |
| Sales[ShipDate] | Date; values within Calendar range |
No relationships are currently configured. Which configuration should the analyst use?
Options:
A. Mark Calendar using Date; create an active one-to-many, single-direction relationship to Sales[ShipDate].
B. Mark Calendar using Date; create an inactive one-to-many relationship to Sales[OrderDate].
C. Mark Calendar using FiscalYear; create an active one-to-many, single-direction relationship to Sales[OrderDate].
D. Mark Calendar using Date; create an active one-to-many, single-direction relationship to Sales[OrderDate].
Best answer: D
Explanation: Calendar[Date] has the unique, nonblank, continuous dates required for a conventional marked date table. An active single-direction relationship to Sales[OrderDate] makes the shown measure evaluate the preceding year for order dates. FiscalYear is not a unique date column, ShipDate is the wrong business date, and an inactive OrderDate relationship would need explicit activation that the shown measure does not provide.
- FiscalYear is repeated and cannot be the unique date column used to mark a date table.
- An active ShipDate relationship applies the requested date context to the wrong business date.
- An inactive OrderDate relationship is not activated by the shown measure, so it does not apply the required order-date filter.
Question 14
Topic: Visualize and Analyze
A logistics analyst creates a Power BI line chart with Month on the x-axis and [MeanDays] on the y-axis. Approved measures return bootstrap 95% confidence interval endpoints.
| Month | MeanDays | Lower95 | Upper95 |
|---|---|---|---|
| January | 6.2 | 5.4 | 7.5 |
| February | 7.1 | 6.3 | 8.6 |
| March | 5.9 | 5.2 | 6.8 |
[MinDays] and [MaxDays], which return observed extremes, are also available. Error bars use By field with the relationship to the measure set to Absolute. The analyst must display the approved intervals exactly and explain whether overlap determines statistical significance. Which approach meets both requirements?
Options:
A. Set bounds to
[Lower95]and[Upper95]; state that overlap establishes no significant difference.B. Set bounds to
[MinDays]and[MaxDays]; state that significance requires a separate comparison.C. Set bounds to
[Lower95]and[Upper95]; state that significance requires a separate comparison.D. Set bounds to the mean-to-interval distances; state that significance requires a separate comparison.
Best answer: C
Explanation: In Absolute mode, field-based error bars require the actual lower and upper endpoint values. For January, the endpoints are 5.4 and 7.5; the distances from the mean are 0.8 and 1.3, which are not endpoint values. Observed minima and maxima represent the spread of individual observations rather than uncertainty in the estimated mean.
A 95% confidence interval communicates uncertainty according to the approved estimation method. Overlap between separate monthly confidence intervals is not itself a formal test of the difference between monthly means. An appropriate statistical comparison is needed to assess significance. Relative mode would instead accept distances, but it is not the configuration in this question.
- Observed extremes represent the range of shipment values, not the approved confidence interval for the estimated mean.
- Interval distances are offsets from the mean, whereas the bound fields require endpoint values.
- Overlapping intervals do not by themselves establish that the monthly means lack a statistically significant difference.
Question 15
Topic: Manage and Secure
A RegionalSales semantic model uses dynamic row-level security (RLS). Taylor is assigned to its RLS role and maps to the West region.
Taylor must view workspace reports and build new reports from the semantic model while remaining restricted to West data. Which permission assignment meets these requirements?
Options:
A. Workspace Viewer with Build permission on the semantic model
B. Workspace Member with Build permission on the semantic model
C. Workspace Contributor with Build permission on the semantic model
D. Workspace Admin with Build permission on the semantic model
Best answer: A
Explanation: RLS enforcement depends on the user’s effective role in the workspace containing the semantic model. Viewers remain subject to RLS, including Viewers who have Build permission. Build enables reuse of the semantic model for creating reports, but it does not bypass RLS or elevate the workspace role.
Admin, Member, and Contributor roles are intended for content management and are not constrained by RLS. Taylor therefore needs Viewer access for consuming workspace content and Build permission for creating reports while the assigned RLS role limits visible rows to the West region.
- Contributor access permits content editing, so RLS does not restrict Taylor while using that workspace role.
- Member access grants elevated workspace privileges that are not constrained by RLS.
- Admin access provides full workspace management privileges and is not constrained by RLS.
Question 16
Topic: Prepare Data
In Power Query, an analyst starts from the Orders query and must add ReturnReason. Every order row must remain, a reason must match the specific product within an order, and return records without an order must not be added.
| OrderID | ProductID | Quantity |
|---|---|---|
| 1001 | P10 | 2 |
| 1001 | P20 | 1 |
| 1002 | P10 | 3 |
| 1003 | P30 | 1 |
| OrderID | ProductID | ReturnReason |
|---|---|---|
| 1001 | P20 | Damaged |
| 1002 | P10 | Wrong item |
| 1004 | P40 | Defective |
Which merge configuration should the analyst use?
Options:
A. Inner join on
OrderIDandProductIDB. Left outer join on
OrderIDonlyC. Left outer join on
OrderIDandProductIDD. Full outer join on
OrderIDandProductID
Best answer: C
Explanation: A left outer join retains every row from the first query, which is Orders, and adds matching data from Returns. Matching on both OrderID and ProductID is necessary because an order can contain multiple products. The resulting orders for 1001/P10 and 1003/P30 receive null return reasons, while 1001/P20 and 1002/P10 receive their corresponding reasons. The unmatched return for 1004/P40 is excluded. Using only OrderID would merge a product-level return with other products in the same order.
- An inner join removes orders that have no matching return record.
- A full outer join adds the unmatched return for order 1004, violating the required output.
- Matching only
OrderIDcan associate the P20 return with both products in order 1001.
Question 17
Topic: Model Data
A Power BI Import semantic model contains Sales at one row per invoice line. Calculated columns use Standard Expression Context.
Gross margin percentage must equal total margin divided by total revenue in each filter context, respond to slicers, and be reusable in cards, matrices, and tooltips.
| Line | Revenue | Cost |
|---|---|---|
| 1 | 100 | 50 |
| 2 | 300 | 240 |
Which DAX implementation meets these requirements and returns 27.5% for the rows shown?
Options:
A. Create a measure:
Gross Margin % = AVERAGEX(Sales, DIVIDE(Sales[Revenue] - Sales[Cost], Sales[Revenue])).B. Create a Standard calculated column using
DIVIDE(SUM(Sales[Revenue]) - SUM(Sales[Cost]), SUM(Sales[Revenue]))and summarize it by average.C. Create a Standard calculated column using
DIVIDE(Sales[Revenue] - Sales[Cost], Sales[Revenue])and summarize it by average.D. Create a measure:
Gross Margin % = DIVIDE(SUM(Sales[Revenue]) - SUM(Sales[Cost]), SUM(Sales[Revenue])).
Best answer: D
Explanation: A measure is appropriate because the required percentage must be recalculated from aggregated revenue and cost in every query filter context. For the displayed rows, total margin is (100 - 50) + (300 - 240) = 110, and total revenue is 400, producing 27.5%. The same measure automatically recalculates when slicers or visual groupings change.
A Standard calculated column is materialized during Import model processing. Its stored row values can be filtered, but its expression is not reevaluated for each report filter context. Averaging row percentages would also produce 35%, an unweighted result rather than the required aggregate ratio.
- The
AVERAGEXmeasure averages 50% and 20%, producing 35% instead of the aggregate margin percentage. - Averaging the row-level calculated column has the same unweighted-percentage problem and returns 35%.
- The aggregate calculated column stores a refresh-time result in each row rather than recomputing the ratio for each report context.
Question 18
Topic: Visualize and Analyze
An analyst creates a group from WaitMinutes with Bin type: Size and Bin size: 10. The resulting bins are labeled 0, 10, and 20.
| Record | WaitMinutes |
|---|---|
| A | 0 |
| B | 9.9 |
| C | 10 |
| D | 14 |
| E | 19.9 |
| F | 20 |
Which records should appear in the bin labeled 10?
Options:
A. Records A, B, and C
B. Records C, D, E, and F
C. Records C, D, and E
D. Records D, E, and F
Best answer: C
Explanation: For a numeric bin size of 10, each bin label represents its inclusive lower boundary. The bin labeled 10 therefore represents the interval \(10 \le x < 20\). Records C, D, and E fall in that interval. Record B remains in the bin labeled 0, while record F belongs to the bin labeled 20.
A value exactly on a boundary enters the bin beginning at that boundary, not the preceding bin.
- Including A and B treats 10 as the upper boundary instead of the lower boundary.
- Including F incorrectly treats the upper boundary of 20 as inclusive.
- Excluding C and including F reverses the interval’s boundary inclusivity.
Question 19
Topic: Prepare Data
A Power Query imports a folder inventory with this source step:
Source = Folder.Files("C:\Data\Monthly")
The folder location must be changeable through Manage Parameters. The parameter must accept only text values, and the query must continue returning the file inventory table. Which implementation meets these requirements?
Options:
A. Create Text
pFolderPath; useFolder.Files(pFolderPath).B. Create Any
pFolderPath; useFolder.Files(pFolderPath).C. Create Text
pFolderPath; useFile.Contents(pFolderPath).D. Create Text
pFolderPath; useFolder.Files("pFolderPath").
Best answer: A
Explanation: A Power Query parameter is a scalar value with a declared data type. Setting pFolderPath to Text restricts it to the type expected for a folder path. In M, the parameter name is an identifier, so referencing it without quotation marks passes its current value to Folder.Files. This preserves the source step’s table output while allowing the folder location to be changed centrally. Using File.Contents would instead return the binary contents of one file, changing the output structure.
- Any data type does not enforce the requirement that the parameter accept only text values.
- Quoted parameter name passes the literal text
pFolderPath, not the parameter’s current value. - File contents function returns a binary for one file rather than a folder inventory table.
Question 20
Topic: Model Data
A visual filters Sales[Color] to Red and Blue. No other filters apply.
| Color | Amount |
|---|---|
| Red | $100 |
| Blue | $150 |
| Green | $200 |
The model contains these measures:
Total Sales = SUM(Sales[Amount])
Replacement =
CALCULATE(
[Total Sales],
Sales[Color] IN { "Blue", "Green" }
)
Intersection =
CALCULATE(
[Total Sales],
KEEPFILTERS(Sales[Color] IN { "Blue", "Green" })
)
What values do the two measures return in the visual?
Options:
A. Replacement returns $350; Intersection returns $150.
B. Replacement returns $350; Intersection returns $350.
C. Replacement returns $150; Intersection returns $350.
D. Replacement returns $150; Intersection returns $150.
Best answer: A
Explanation: A CALCULATE filter normally replaces an existing filter on the same column. Therefore, Replacement changes the permitted colors from Red and Blue to Blue and Green, totaling $150 + $200 = $350.
KEEPFILTERS changes this behavior to intersection. The existing set {Red, Blue} intersects with the new set {Blue, Green}, leaving only Blue. Consequently, Intersection returns $150. The deciding factor is whether the new same-column filter replaces or intersects with the current filter context.
- Reversing the values incorrectly assigns intersection behavior to ordinary
CALCULATEand replacement behavior toKEEPFILTERS. - Returning $150 for both incorrectly treats every same-column filter as an intersection.
- Returning $350 for both incorrectly assumes
KEEPFILTERShas no effect on filter replacement.
Question 21
Topic: Visualize and Analyze
A retail analyst asks Copilot to summarize a semantic model and suggest initial analyses. Copilot reports sales, returns, product mix, customer geography, promotions, and fulfillment as available subjects.
The analyst checks the model metadata:
| Available dimensions | Available measures |
|---|---|
| Date: Month, Fiscal Quarter | Net Sales |
| Product: Category | Return Rate |
| Customer: Region | Gross Margin % |
Return Rate is defined as returned order lines divided by sold order lines. The model contains no promotion, salesperson, delivery-date, or fulfillment fields.
Which analytical starting point is supported without extending the semantic model?
Options:
A. Trend Net Sales and Return Rate by month and product category.
B. Track on-time fulfillment by month and customer region.
C. Compare Gross Margin % by promotion campaign and customer region.
D. Analyze Return Rate by salesperson and product category.
Best answer: A
Explanation: Copilot can summarize a semantic model and propose useful analytical directions, but its output must be grounded in the model’s actual metadata and business definitions. Monthly Net Sales and Return Rate by product category uses only listed dimensions and measures, and the Return Rate definition supports the proposed interpretation.
Promotion analysis requires a campaign attribute, salesperson analysis requires a salesperson dimension, and on-time fulfillment requires delivery or fulfillment data. Copilot suggestions involving those subjects should be deferred until the semantic model is extended and validated. The key practice is to treat generated starting points as proposals rather than authoritative descriptions of model capabilities.
- Promotion effectiveness cannot be segmented because the semantic model has no campaign attribute.
- Salesperson-level returns cannot be analyzed because no salesperson dimension is available.
- On-time fulfillment cannot be calculated because delivery and fulfillment fields are absent.
Question 22
Topic: Manage and Secure
A Power BI semantic model and report have the sensitivity label Confidential. Casey has the workspace Viewer role, Build permission on the semantic model, and dynamic RLS membership for the West region.
Casey can open the report, create a new report from the semantic model, and see only West rows. A supported Excel export carries the Confidential label.
Which interpretation best explains these results?
Options:
A. The label classifies and protects supported content; Viewer and Build govern access and reuse, while Build bypasses RLS.
B. The label classifies supported content; Viewer and Build limit visible rows, while RLS protects exported files.
C. The label classifies and protects supported content; Viewer and Build govern access and reuse, while RLS limits rows.
D. The label authorizes access to protected content; Viewer and Build govern reuse, while RLS limits rows.
Best answer: C
Explanation: Sensitivity labels classify content and can protect it in supported downstream contexts, such as an exported Excel file. They do not grant or revoke access to Power BI items. Casey can open the report because of the Viewer role and can reuse the semantic model because of Build permission. Dynamic RLS separately filters the rows returned for Casey’s signed-in identity.
Build permission does not bypass RLS. A Viewer remains subject to RLS when viewing an existing report or querying the semantic model through a newly created report. Each mechanism therefore controls a different security dimension: classification, item capability, or row visibility.
- Treating the label as access authorization confuses information protection with the permissions that allow Casey to open the report.
- Assuming Build bypasses RLS ignores that Viewers with Build remain constrained by their effective RLS roles.
- Assigning row filtering to Viewer and Build reverses responsibilities because permissions grant capabilities, while RLS filters data.
Question 23
Topic: Prepare Data
A support team is adding an Action custom column in Power Query. HoursOpen is a whole number, and the source columns contain no nulls.
- Closed cases require
No action, regardless of other values. - Otherwise, cases are escalated when priority is Critical or hours open is at least 24.
- All other cases require
Monitor.
| Status | Priority | HoursOpen | Action |
|---|---|---|---|
| Closed | Critical | 30 | No action |
| Open | Normal | 30 | Escalate |
| Open | Critical | 2 | Escalate |
| Open | Normal | 2 | Monitor |
Which expression should be entered in the Custom Column formula box?
Options:
A.
if [Priority] = "Critical" or [HoursOpen] >= 24 then "Escalate" else if [Status] = "Closed" then "No action" else "Monitor"B.
if [Status] = "Closed" then "No action" else if [Priority] = "Critical" or [HoursOpen] >= 24 then "Escalate" else "Monitor"C.
if [Status] = "Closed" then "No action" else if [Priority] = "Critical" and [HoursOpen] >= 24 then "Escalate" else "Monitor"D.
if [Status] = "Closed" then "No action" else if [Priority] = "Critical" or [HoursOpen] = 24 then "Escalate" else "Monitor"
Best answer: B
Explanation: Power Query M evaluates an if ... else if expression from left to right and returns the result for the first true condition. Because closed status overrides priority and age, that condition must be evaluated first. For cases that remain, the escalation test uses or: either Critical priority or at least 24 hours open is sufficient. The comparison must use >= 24 so values above the threshold, such as 30 hours, are included.
Placing the escalation test first would incorrectly escalate the closed Critical case, while using and would require both escalation conditions.
- Escalation first classifies the closed Critical case as
Escalatebefore its status can apply the override. - AND logic fails to escalate cases that satisfy only one of the two escalation conditions.
- Exact equality fails to escalate a Normal-priority case open for more than 24 hours.
Question 24
Topic: Model Data
A model has explicit measures [Revenue] and [Units], formatted as currency and whole numbers. A YoY % calculation item uses:
VAR CurrentValue = SELECTEDMEASURE()
VAR PriorValue =
CALCULATE(
SELECTEDMEASURE(),
SAMEPERIODLASTYEAR('Date'[Date])
)
VAR Ratio = DIVIDE(CurrentValue - PriorValue, PriorValue)
RETURN Ratio
The result must display as a percentage and remain numeric for conditional formatting. Which implementation meets these requirements?
Options:
A. Return
Ratio; inherit the selected measure’s original format string.B. Return
Ratio; set the calculation item’s format string expression to"0.0%".C. Return
FORMAT(Ratio, "0.0%"); inherit the selected measure’s format string.D. Return
Ratio * 100; set the calculation item’s format string to"0.0".
Best answer: B
Explanation: A calculation item’s value expression determines its numeric result, while its format string expression controls presentation. If Ratio equals 0.12, the 0.0% format displays 12.0% while preserving 0.12 as a number. This allows numeric conditional formatting and further calculations to work correctly.
Using FORMAT converts the result to text. Inheriting the selected measure’s format would display the ratio as currency or a whole number. Multiplying by 100 could look correct with a numeric format, but it changes the ratio from 0.12 to 12, altering its numeric meaning.
- Text conversion:
FORMATreturns text, so numeric conditional-formatting rules cannot evaluate the result as required. - Inherited format:
SELECTEDMEASUREFORMATSTRING()would retain currency or whole-number formatting instead of displaying a percentage. - Manual scaling: Multiplying by 100 changes the underlying ratio even if the displayed value resembles a percentage.
Question 25
Topic: Visualize and Analyze
A DirectQuery report page remains open on wall displays. The source changes continuously, and all visuals must requery every 10 minutes even when values are unchanged.
- The current shared workspace has a 30-minute minimum fixed interval.
- An available Fabric capacity has automatic page refresh enabled with a 5-minute minimum.
Which configuration meets the requirement?
Options:
A. Assign the workspace to the capacity and set a 10-minute fixed interval.
B. Assign the workspace to the capacity and check for changes every 10 minutes.
C. Assign the workspace to the capacity and schedule model refresh every 10 minutes.
D. Keep the shared workspace and set a 10-minute fixed interval.
Best answer: A
Explanation: Fixed-interval automatic page refresh periodically requeries visuals on an active DirectQuery page. The requested 10-minute interval is below the shared workspace’s effective 30-minute minimum but above the Fabric capacity’s 5-minute minimum, so the workspace must use that capacity.
Change detection checks a designated measure and refreshes visuals only when the measure changes, which does not satisfy a requirement to requery regardless of changes. Scheduled semantic model refresh is also distinct from report-page requery and does not force an open DirectQuery page to rerun its visual queries.
- Shared workspace cannot run fixed-interval page refresh more frequently than its stated 30-minute minimum.
- Change detection does not refresh all visuals when the monitored measure remains unchanged.
- Model refresh does not provide the required recurring requery of an open DirectQuery report page.
Questions 26-50
Question 26
Topic: Prepare Data
An Orders source remains reachable, but SalesAmount was renamed to NetSales. The required output still includes Revenue with the original sales values.
Current source fields: OrderID, NetSales, Region
First error: Selected Columns
Expression.Error: The column 'SalesAmount' wasn't found.
let
#"Selected Columns" = Table.SelectColumns(Source,
{"OrderID", "SalesAmount", "Region"}),
#"Changed Type" = Table.TransformColumnTypes(#"Selected Columns",
{{"SalesAmount", Currency.Type}}),
#"Renamed Columns" = Table.RenameColumns(#"Changed Type",
{{"SalesAmount", "Revenue"}})
in
#"Renamed Columns"
Source is an existing staging query.
Which modification repairs the query while preserving the intended output?
Options:
A. Replace
SalesAmountwithNetSalesonly inSelected Columns, leaving later steps unchanged.B. Replace
SalesAmountwithNetSalesin all three affected steps, keeping the final nameRevenue.C. Remove
SalesAmountfrom all three affected steps, keeping only the remaining output fields.D. Add
MissingField.UseNulltoSelected Columns, leaving the field references unchanged.
Best answer: B
Explanation: The first failing step identifies a broken field reference rather than a connectivity or authentication problem. Because the source now supplies the same business data under NetSales, every downstream step that still expects SalesAmount must reference NetSales. The final rename should then map NetSales to the required output name, Revenue.
Changing only the first reference merely moves the failure to the type-conversion step. Creating a null placeholder avoids the initial error but discards the actual sales values.
- Updating only
Selected ColumnsleavesChanged Typesearching for the missingSalesAmountfield. - Using
MissingField.UseNullproduces null revenue values instead of retaining the values fromNetSales. - Removing the field references eliminates the required
Revenuecolumn from the output.
Question 27
Topic: Model Data
A semantic model has a marked Date table with an active relationship to Sales[OrderDate]. Visuals use the explicit measures [Net Sales] and [Units Sold].
An analyst creates a Time Comparison calculation group with these items:
Current = SELECTEDMEASURE()
Prior Year =
CALCULATE(
SELECTEDMEASURE(),
SAMEPERIODLASTYEAR('Date'[Date])
)
The YoY % item must calculate (Current - Prior Year) / Prior Year for either measure. Which DAX expression should the analyst use?
Options:
A.
VAR PY = CALCULATE(SELECTEDMEASURE(), SAMEPERIODLASTYEAR('Date'[Date])) RETURN DIVIDE(PY - SELECTEDMEASURE(), PY)B.
VAR PY = CALCULATE([Net Sales], SAMEPERIODLASTYEAR('Date'[Date])) RETURN DIVIDE([Net Sales] - PY, PY)C.
VAR PY = CALCULATE(SELECTEDMEASURE(), SAMEPERIODLASTYEAR('Date'[Date])) RETURN DIVIDE(SELECTEDMEASURE() - PY, SELECTEDMEASURE())D.
VAR PY = CALCULATE(SELECTEDMEASURE(), SAMEPERIODLASTYEAR('Date'[Date])) RETURN DIVIDE(SELECTEDMEASURE() - PY, PY)
Best answer: D
Explanation: Calculation items use SELECTEDMEASURE() as a placeholder for the explicit measure currently being evaluated. CALCULATE changes its date filter context to the same period in the prior year, producing the comparison baseline. The required year-over-year percentage is then the current-minus-prior change divided by that prior-year value. DIVIDE safely handles a zero or blank denominator.
Hard-coding a measure would prevent the calculation item from transforming other explicit measures, defeating the calculation group’s reuse purpose.
- Using the current value as the denominator calculates change relative to the current period, not the required prior-year baseline.
- Hard-coding
[Net Sales]prevents the item from transforming[Units Sold]. - Subtracting current from prior year reverses the sign of every increase or decrease.
Question 28
Topic: Visualize and Analyze
A report has Summary and Trends pages. Each contains a visual with Product[Category] on the axis and Geography[Region] in the legend, plus a Date[Year] slicer.
Users must drill through from a data point to a Details page that:
- Retains the selected category and region
- Does not retain the year filter
- Returns to whichever source page initiated drillthrough
Which configuration should the analyst apply to the Details page?
Options:
A. Add Category only; disable Keep all filters; configure a Back action.
B. Add Category and Region; disable Keep all filters; configure a Back action.
C. Add Category and Region; enable Keep all filters; configure a Back action.
D. Add Category and Region; disable Keep all filters; navigate to Summary.
Best answer: B
Explanation: Drillthrough fields determine the context explicitly passed to the destination page. Adding both Category and Region preserves the selected data point’s two dimensions. Disabling Keep all filters prevents the separate Year slicer filter from being carried to Details.
A button with the Back action returns users to the page from which they initiated drillthrough. By contrast, page navigation targets a fixed report page and therefore cannot reliably return users to either Summary or Trends.
- Enabling Keep all filters also carries the Year slicer context, contrary to the requirement.
- Adding only Category omits Region when other filters are not carried.
- Navigating to Summary always opens that fixed page, even when drillthrough began on Trends.
Question 29
Topic: Manage and Secure
An Import semantic model reads a warehouse through an on-premises data gateway. Users report that today’s rows are missing.
Observed state:
| Event | Time | Status |
|---|---|---|
| Scheduled model refresh | 8:00 AM | Succeeded |
| Warehouse load | 8:10 AM | Completed |
| OneDrive file synchronization | 8:30 AM | Succeeded; layout-only PBIX change |
| Report visual refresh | 8:45 AM | Completed; today’s rows absent |
Which action should display today’s rows now and prevent the same timing issue?
Options:
A. Synchronize the OneDrive file now; schedule future syncs after warehouse loads.
B. Refresh the PBIX locally and synchronize it; retain the 8:00 AM schedule.
C. Refresh report visuals now; then enable automatic page refresh.
D. Refresh the semantic model now; schedule future refreshes after warehouse loads.
Best answer: D
Explanation: In Import mode, source rows become available when the semantic model refreshes. The 8:00 AM refresh captured the warehouse before its 8:10 AM load completed. OneDrive synchronization transferred the saved PBIX changes, but the file contained only a layout change and no newly imported warehouse rows. Refreshing report visuals reruns queries against the existing imported data; it does not retrieve rows from the warehouse.
Run a semantic-model refresh now, then schedule future refreshes after the warehouse load completes. A local PBIX refresh could update the current snapshot, but retaining the earlier service schedule would allow the problem to recur.
- OneDrive synchronization cannot obtain new warehouse rows when the saved PBIX contains only a layout change.
- Visual refresh and automatic page refresh query the current model rather than importing source data; automatic page refresh is also unsupported for Import models.
- A local refresh could supply current rows, but retaining the 8:00 AM schedule preserves the recurring timing problem.
Question 30
Topic: Prepare Data
A Power Query query starts with a SQL native query configured with [EnableFolding = true]. Testing confirms that row filtering and column selection fold before a custom NormalizeName function, but no steps fold after that function.
The required result must:
- Keep orders dated January 1, 2026 or later.
- Keep
OrderID,CustomerName,OrderDate, andAmount. - Apply
NormalizeNameonly toCustomerName; the function does not affect rows.
Which transformation sequence minimizes source retrieval while preserving the required result?
Options:
A. Normalize
CustomerName, filter rows, then select required columns.B. Select required columns, normalize
CustomerName, then filter rows.C. Filter rows, normalize
CustomerName, then select required columns.D. Filter rows, select required columns, then normalize
CustomerName.
Best answer: D
Explanation: Query folding allows supported Power Query transformations to execute at the source. Here, the native query explicitly supports downstream folding, so the date filter and column selection should occur before NormalizeName. SQL then returns only qualifying rows and required columns. Once the custom function creates a folding barrier, later transformations execute locally and cannot reduce the data already retrieved.
The filter and selection do not depend on the normalized name, so moving them earlier preserves the required result. The key principle is to place supported, retrieval-reducing operations before the first nonfolding transformation.
- Filtering before normalization reduces rows, but selecting columns afterward still retrieves the unnecessary source columns.
- Selecting columns before normalization reduces width, but filtering afterward still retrieves historical rows.
- Normalizing first prevents both the filter and column selection from reducing source retrieval.
Question 31
Topic: Model Data
An Import semantic model has an active one-to-many relationship from Product[ProductKey] to Sales[ProductKey]. An analyst adds a standard calculated column named Sales[LineAmount].
| ProductKey | UnitPrice |
|---|---|
| 10 | 12.50 |
| 20 | 8.00 |
| SaleID | ProductKey | Quantity | Required result |
|---|---|---|---|
| S1 | 10 | 3 | 37.50 |
| S2 | 20 | 5 | 40.00 |
Which DAX expression should the analyst use?
Options:
A.
Sales[Quantity] * SUM(Product[UnitPrice])B.
Sales[Quantity] * Product[UnitPrice]C.
Sales[Quantity] * RELATED(Product[UnitPrice])D.
SUM(Sales[Quantity]) * RELATED(Product[UnitPrice])
Best answer: C
Explanation: A calculated column is evaluated once for each row, creating row context over Sales. Therefore, Sales[Quantity] returns the quantity from the current sales row. RELATED follows the active many-to-one relationship from that row to the matching Product row and returns its single unit price. Multiplying these values produces 3 × 12.50 = 37.50 and 5 × 8.00 = 40.00.
A naked aggregation such as SUM evaluates the entire referenced column under the available filter context; it does not automatically limit itself to the current row. A direct reference to a column in another table also does not use the relationship to obtain a scalar value. RELATED is the appropriate row-context lookup for the one-side value.
- Aggregating
Sales[Quantity]uses the column total rather than the current row’s quantity. - Summing
Product[UnitPrice]combines prices from multiple product rows instead of retrieving the matching price. - Referencing
Product[UnitPrice]directly does not resolve the related product row as a scalar value.
Question 32
Topic: Visualize and Analyze
A sales director provides this request:
Create an executive page with actual Revenue and Gross Margin % cards, a monthly Revenue trend, and a Region slicer. Use governed KPI definitions.
Copilot eligibility and access requirements are met.
| Semantic model | Model content | Coverage |
|---|---|---|
Sales Executive | Governed Revenue and Gross Margin % measures | 36 months; Month and Region |
Sales Detail | Raw SalesAmount and CostAmount columns | 36 months; OrderDate and Region |
Finance Performance | Governed Revenue and Gross Margin % measures | 36 months; Fiscal Month and Legal Entity |
Regional Snapshot | Governed Revenue and Gross Margin % measures | Current month; Region |
Which action best grounds the Copilot-created page in the business request?
Options:
A. Create the report from
Finance Performanceand ask Copilot to build the requested page.B. Create the report from
Sales Executiveand ask Copilot to build the requested page.C. Create the report from
Regional Snapshotand ask Copilot to build the requested page.D. Create the report from
Sales Detailand ask Copilot to build the requested page.
Best answer: B
Explanation: Copilot creates report pages from the fields, measures, relationships, and metadata available in the selected semantic model. The business request requires governed Revenue and Gross Margin % measures, multiple months of data for the trend, and a Region field for the slicer. Sales Executive contains all three elements, so Copilot can ground the generated visuals in the approved definitions and requested analytical dimensions. The analyst should still verify the generated page against the business request.
Sales Detailhas sufficient history and geography but lacks the governed measures required for the KPIs.Finance Performancehas governed measures and history but cannot provide the requested Region slicer.Regional Snapshothas governed measures and Region but lacks the historical data needed for a monthly trend.
Question 33
Topic: Manage and Secure
A workspace has the following items:
| Item | Type | Dependency |
|---|---|---|
| Sales Core | Import semantic model | SQL source |
| Executive Sales | Report | Sales Core |
| Regional Sales | Report | Sales Core |
An analyst changes only visuals in Executive Sales.pbix. The file uses a live connection to Sales Core and has no local semantic model. The analyst has Contributor access to the workspace and Build permission for Sales Core.
The existing Executive Sales item must be updated without changing Sales Core or creating another workspace item. What should the analyst do?
Options:
A. Publish the import-model PBIX and replace Sales Core before replacing Executive Sales.
B. Add a local model to the PBIX and replace both Executive Sales and Sales Core.
C. Publish the thin-report PBIX and replace the existing Executive Sales report.
D. Rename the thin-report PBIX, publish a new report, and then remove Executive Sales.
Best answer: C
Explanation: A thin report contains a report definition that connects to an existing semantic model rather than embedding its own model. Publishing this PBIX with the existing report name allows the analyst to replace Executive Sales while retaining its connection to Sales Core. Because the changes affect only visuals, Sales Core does not need to be republished or replaced. This also avoids affecting Regional Sales, which depends on the same shared semantic model.
Creating a differently named report would create a new workspace item, while publishing a local or imported model could unnecessarily replace the shared semantic model and affect its dependent reports.
- Replacing Sales Core is unnecessary and could affect every report that depends on that semantic model.
- Publishing under another name creates a separate report instead of updating the existing workspace item.
- Adding a local model changes the deployment scope and risks replacing the shared semantic model.
Question 34
Topic: Prepare Data
A Power Query source contains summarized ledger entries:
| Account | Metric | Amount | EntryCount |
|---|---|---|---|
| A | Revenue | 120 | 1 |
| A | Revenue | 80 | 1 |
| A | Cost | 70 | 1 |
| A | Cost | 30 | 1 |
| B | Revenue | 90 | 1 |
| B | Cost | 40 | 1 |
The required output is:
| Account | Cost | Revenue |
|---|---|---|
| A | 100 | 200 |
| B | 40 | 90 |
Which transformation configuration produces the required output?
Options:
A. Retain
Account,Metric, andAmount; pivotMetricusingAmountwith Maximum.B. Retain
Account,Metric, andEntryCount; pivotMetricusingEntryCountwith Sum.C. Retain
Account,Metric, andAmount; pivotMetricusingAmountwith Sum.D. Retain
Account,Metric, andAmount; pivotAccountusingAmountwith Sum.
Best answer: C
Explanation: A pivot turns the unique values of the pivot column into new columns, while the values column supplies the cell values. Here, Metric must create the Cost and Revenue columns, and Amount provides their numeric contents. Because account A has multiple rows for each metric, Sum must aggregate those duplicate combinations: Revenue is 120 + 80 = 200, and Cost is 70 + 30 = 100. Removing EntryCount keeps the output schema limited to the required columns. Its constant value does not itself split accounts into additional groups.
The pivot column, values column, and aggregation must all match the required output grain and measure.
- Maximum would return 120 for A’s Revenue and 70 for A’s Cost rather than their totals.
- Summing
EntryCountwould calculate record counts instead of monetary amounts. - Pivoting
Accountwould create A and B columns at the metric grain, reversing the required layout.
Question 35
Topic: Model Data
A date dimension has one row per date. Reports currently sort month names alphabetically.
| CalendarYear | MonthName | MonthNumber | Date |
|---|---|---|---|
| 2025 | Jan | 1 | 2025-01-01 |
| 2025 | Jan | 1 | 2025-01-02 |
| 2025 | Feb | 2 | 2025-02-01 |
| 2026 | Jan | 1 | 2026-01-01 |
Users must navigate from year to month to date, with months shown chronologically. Which model configuration should the analyst apply?
Options:
A. Sort MonthName by MonthNumber; create MonthName > CalendarYear > Date.
B. Sort MonthNumber by MonthName; create CalendarYear > MonthName > Date.
C. Sort MonthName by Date; create CalendarYear > MonthName > Date.
D. Sort MonthName by MonthNumber; create CalendarYear > MonthName > Date.
Best answer: D
Explanation: The Sort by column property controls the order of displayed labels. Each distinct MonthName has one corresponding MonthNumber, so Power BI can consistently order Jan through Dec. The Date column cannot sort MonthName because a month name corresponds to many dates at the table’s daily grain.
Hierarchy level order independently controls navigation. Placing CalendarYear above MonthName and Date lets users drill from each year into its months and then individual dates. A month-first hierarchy would not match the required navigation sequence.
- Sorting
MonthNumberchanges that column’s ordering property, not the displayed order ofMonthName. - Sorting by
Datefails because each month name maps to multiple date values. - Starting with
MonthNamereverses the required year-to-month navigation sequence.
Question 36
Topic: Visualize and Analyze
A Power BI bar chart shows sales by region. Year and product slicers change the visual’s filter context.
Screen readers must announce the visual’s purpose and current leading region, and the description must update with slicer selections.
The model includes [Region Alt Text], which returns:
| Filter state | Measure result |
|---|---|
| 2025, All Products | Sales by region. West leads with $2.4M. |
| 2025, Bikes | Sales by region. North leads with $920K. |
What should the analyst configure?
Options:
A. Set the visual title’s conditional value to
[Region Alt Text].B. Set Alt text’s conditional value to
[Sales].C. Paste
[Region Alt Text]’s current result into Alt text.D. Set Alt text’s conditional value to
[Region Alt Text].
Best answer: D
Explanation: Dynamic alternative text can use conditional formatting based on a DAX measure. The measure is evaluated in the visual’s current filter context, so its description changes when users select a different year or product. Here, [Region Alt Text] communicates both the visual’s purpose and its current analytical content: which region leads and by how much.
Static alternative text remains unchanged as filters alter the data. A dynamic title may help sighted users, but it does not replace meaningful text in the visual’s Alt text property. A numeric sales measure alone also lacks the context needed to explain the visual.
- Pasting the current result creates static alternative text that becomes inaccurate when slicer selections change.
- Applying the measure to the title does not populate the visual’s dedicated alternative-text description.
- Using
[Sales]alone supplies a changing value but omits the visual’s purpose and leading region.
Question 37
Topic: Prepare Data
Power Query imports these CSV columns as Text. Power BI Desktop uses the English (United States) locale.
| CustomerCode | OrderDate | Amount |
|---|---|---|
| 00127 | 03.04.2026 | 1.234,50 |
| 01004 | 18.04.2026 | 25,00 |
The source contract defines CustomerCode as an identifier, OrderDate as dd.MM.yyyy, and Amount with German numeric separators. Which type and locale configuration preserves these meanings?
Options:
A. Keep CustomerCode as Text; convert OrderDate using English and Amount using German.
B. Keep CustomerCode as Text; convert OrderDate and Amount using German (Germany).
C. Convert CustomerCode to Whole Number; convert OrderDate and Amount using German.
D. Keep CustomerCode as Text; convert OrderDate using German and Amount using English.
Best answer: B
Explanation: Power Query uses the selected locale when converting text into locale-sensitive data types. Converting OrderDate to Date with German (Germany) interprets 03.04.2026 as April 3, 2026. Converting Amount to Decimal Number with the same locale recognizes the period as the thousands separator and the comma as the decimal separator. CustomerCode must remain Text because it is an identifier and its leading zeros carry meaning.
The source format, rather than the Power BI Desktop locale, should determine the locale used during conversion.
- Using English for the date can misinterpret an ambiguous day-month value and cannot parse values such as
18.04.2026correctly. - Using English for the amount does not correctly interpret the source’s German thousands and decimal separators.
- Converting the identifier to Whole Number removes its meaningful leading zeros.
Question 38
Topic: Model Data
A Power BI matrix must show year-over-year percentage change for each month. Each row filters one calendar month from a contiguous, marked Date table with an active relationship to Sales[OrderDate].
Sales YoY % =
VAR ComparisonSales =
CALCULATE(
[Sales Amount],
<date filter>
)
RETURN
DIVIDE([Sales Amount] - ComparisonSales, ComparisonSales)
Which expression should replace <date filter> to compare each month with the same calendar month in the prior year?
Options:
A.
DATESYTD(DATEADD('Date'[Date], -1, YEAR))B.
SAMEPERIODLASTYEAR('Date'[Date])C.
PREVIOUSYEAR('Date'[Date])D.
DATEADD('Date'[Date], -1, MONTH)
Best answer: B
Explanation: The filter supplied to CALCULATE must transform the current month’s date set into the corresponding date set one year earlier. SAMEPERIODLASTYEAR performs this shift using the valid context from the contiguous Date table. The active relationship then propagates the shifted filter to Sales, and DIVIDE calculates the percentage change relative to that prior-year month.
Functions that return the entire previous year, the previous month, or prior-year dates accumulated from the start of the year do not preserve the required month-to-month equivalence.
PREVIOUSYEARreturns the entire preceding calendar year rather than the corresponding month.- Shifting by one month produces a month-over-month comparison instead of a year-over-year comparison.
- Applying
DATESYTDexpands the shifted context into prior-year year-to-date dates rather than one equivalent month.
Question 39
Topic: Visualize and Analyze
A retail analyst reviews monthly product returns. A store warrants investigation when it has at least 200 orders and its return rate exceeds its category peer median by at least 3.0 percentage points.
| Store | Orders | Returns | Peer median |
|---|---|---|---|
| Aspen | 500 | 39 | 5.2% |
| Birch | 180 | 18 | 6.0% |
| Cedar | 400 | 36 | 5.5% |
| Dogwood | 250 | 18 | 4.5% |
Which store warrants investigation?
Options:
A. Investigate the Cedar store.
B. Investigate the Dogwood store.
C. Investigate the Aspen store.
D. Investigate the Birch store.
Best answer: A
Explanation: The investigation rule requires both sufficient order volume and a return-rate difference of at least 3.0 percentage points. Cedar’s return rate is 36 divided by 400, or 9.0%. Compared with its 5.5% peer median, the difference is 3.5 percentage points, and its 400 orders exceed the minimum volume. Birch has a larger difference but insufficient volume. Aspen and Dogwood have enough orders, but their differences are only 2.6 and 2.7 percentage points. A high raw rate or adequate volume alone does not satisfy the combined threshold.
- Aspen meets the volume requirement, but its return rate exceeds the peer median by only 2.6 percentage points.
- Birch exceeds the rate-difference threshold, but its 180 orders are below the required minimum.
- Dogwood meets the volume requirement, but its return rate exceeds the peer median by only 2.7 percentage points.
Question 40
Topic: Manage and Secure
A Power BI app has Executive and Regional audiences. The workspace now contains these changes, but the app has not been updated:
| Workspace content | Published app | Intended audience |
|---|---|---|
| Operations report v2 | Version 1 | Both audiences |
| Staffing report v1 | Not included | Regional only |
Which sequence should the analyst use to publish and verify the intended experience?
Options:
A. Set audience visibility, preview each audience, then wait for workspace changes to propagate to the published app.
B. Include Staffing in the app content, set audience visibility, select Update app, then verify each audience’s published reports.
C. Select Update app, set audience visibility, then preview each audience without updating the app again.
D. Grant direct report permissions to the audience groups, select Update app, then inspect content from the workspace.
Best answer: B
Explanation: A published Power BI app does not automatically inherit later workspace changes. The analyst must include Staffing in the app content and configure which content is visible to each audience and then select Update app to publish the new app version. Previewing the Executive and Regional audiences confirms that Operations v2 appears for both and Staffing appears only for Regional users.
Changes made to audience visibility after selecting Update app remain unpublished until another update. Direct report permissions provide a separate access path and do not configure or verify the audience-specific app experience.
- Waiting for propagation fails because workspace changes do not automatically update an already published app.
- Configuring visibility after the update leaves those audience settings unpublished until the app is updated again.
- Direct permissions do not configure audience-specific app navigation or verify the content delivered through the app.
Question 41
Topic: Prepare Data
A Power Query import returns one row per order with two independent nested lists. There is no positional relationship between lines and payments.
| OrderID | Lines | Payments |
|---|---|---|
| O-17 | L1, L2 | P1, P2, P3 |
| O-18 | L3 | P4 |
The model requires separate Orders, OrderLines, and OrderPayments tables. Each child row must retain its OrderID, with no duplicated child records. Which flattening strategy should you use?
Options:
A. Retain Orders as parent; zip child lists by position, then expand paired records with OrderID.
B. Retain Orders as parent; expand child lists separately, then merge child queries on OrderID.
C. Retain Orders as parent; reference it once, expanding both child lists sequentially with OrderID.
D. Retain Orders as parent; reference it twice, expanding one child list per query with OrderID.
Best answer: D
Explanation: Independent nested collections should be flattened into separate child queries. Keep one parent row per OrderID, then create references for OrderLines and OrderPayments. Each reference retains OrderID and expands only its relevant list. For O-17, this produces two line rows and three payment rows.
Expanding both lists sequentially in one table would instead produce \(2 \times 3 = 6\) rows for O-17, repeating each line for every payment. Separate child tables preserve each collection’s natural grain and support one-to-many relationships back to Orders.
- Expanding both lists sequentially creates a Cartesian product, producing six combined rows for O-17.
- Zipping by position invents one-to-one pairings between independent collections and introduces unmatched pairs when list lengths differ.
- Merging the expanded children on OrderID recreates the many-to-many multiplication between lines and payments.
Question 42
Topic: Model Data
A semantic model has a Sales table with one row per order line. Quantity and UnitPrice are stored numeric columns; adding a stored line-amount column is not allowed.
| OrderLine | Quantity | UnitPrice |
|---|---|---|
| 1 | 2 | $10 |
| 2 | 3 | $5 |
| 3 | 1 | $20 |
Which DAX expression should define [Sales Amount] so it returns $55 for these rows and remains correct under other report filters?
Options:
A.
SUMX(Sales, Sales[Quantity] * Sales[UnitPrice])B.
SUM(Sales[Quantity]) * SUM(Sales[UnitPrice])C.
SUM(Sales[Quantity]) * AVERAGE(Sales[UnitPrice])D.
SUM(Sales[Quantity] * Sales[UnitPrice])
Best answer: A
Explanation: SUM aggregates the values of one stored numeric column. When the value to aggregate must first be calculated separately for every row, an iterator such as SUMX is required. Here, SUMX evaluates the multiplication within each order-line row and then aggregates the results: $20 + $15 + $20 = $55. The iterator operates over the rows visible in the current filter context, so report filters continue to affect the result correctly.
Multiplying separately aggregated columns does not preserve the order-line pairings between quantity and unit price.
- Multiplying the two column sums produces $210 because it combines totals rather than corresponding row values.
- Multiplying total quantity by average price produces $70 and does not calculate each order line independently.
- Passing a multiplication expression to
SUMis invalid becauseSUMrequires a direct column reference.
Question 43
Topic: Visualize and Analyze
A matrix uses Product as rows. All three measures are available in the visual matrix, although Discount Amount is hidden from the rendered visual.
| Product | Gross Sales | Discount Amount | Net Sales |
|---|---|---|---|
| Alpha | 120,000 | 6,000 | 114,000 |
| Beta | 80,000 | 8,000 | 72,000 |
The analyst must create a visual calculation named Discount Rate, defined as discount divided by gross sales. The expected results are 5% for Alpha and 10% for Beta. Which expression should the analyst use?
Options:
A.
Discount Rate = DIVIDE([Gross Sales], [Net Sales])B.
Discount Rate = DIVIDE([Discount Amount], [Net Sales])C.
Discount Rate = DIVIDE([Net Sales], [Gross Sales])D.
Discount Rate = DIVIDE([Discount Amount], [Gross Sales])
Best answer: D
Explanation: Visual calculations operate on the aggregated fields available in the visual matrix. A field can remain available to a visual calculation even when it is hidden from the rendered visual. Here, the required calculation uses Discount Amount as the numerator and Gross Sales as the denominator: Alpha produces 6,000 / 120,000 = 5%, while Beta produces 8,000 / 80,000 = 10%. Using net sales as the denominator would calculate discount relative to revenue after discount rather than the stated gross-sales basis.
- Dividing discount by net sales produces approximately 5.26% and 11.11%, which uses the wrong denominator.
- Dividing net sales by gross sales calculates the retained-sales percentage, producing 95% and 90%.
- Dividing gross sales by net sales calculates a ratio above 100%, not the discount rate.
Question 44
Topic: Prepare Data
A OneLake Delta table had 10,000 rows at version 120. At 09:00, version 121 committed 250 additional rows. The SQL analytics endpoint has synchronized version 121, and a direct COUNT query there confirms 10,250 rows. No further writes or query-result caches are involved.
| Semantic model | State at query time |
|---|---|
| Import | Last refreshed from version 120 |
| Direct Lake on OneLake | Framed at version 120; automatic updates disabled |
| DirectQuery | Connected to the current SQL analytics endpoint |
At 09:05, each model receives the same row-count query. Which result and query behavior should the analyst expect?
Options:
A. Import: 10,000 from its copy; Direct Lake: 10,250 through DirectQuery fallback; DirectQuery: 10,250 from a source request.
B. Import: 10,000 from its copy; Direct Lake: 10,000 from its frame; DirectQuery: 10,250 from a source request.
C. Import: 10,000 from its copy; Direct Lake: 10,250 from the latest Delta version; DirectQuery: 10,250 from a source request.
D. Import: 10,250 after a source check; Direct Lake: 10,000 from its frame; DirectQuery: 10,250 from a source request.
Best answer: B
Explanation: Import stores data captured during the last semantic-model refresh, so it remains at 10,000 rows. Direct Lake uses its established frame to identify the Delta snapshot available to the model. Because automatic updates are disabled and no later framing occurred, it also returns 10,000 rows while reading required columns from OneLake into memory. DirectQuery sends the query to the current SQL analytics endpoint, which can see version 121 and returns 10,250 rows.
Direct Lake on OneLake does not use DirectQuery fallback. Framing updates its source snapshot without performing a conventional Import refresh.
- Reading the latest Delta version ignores the stated frame and disabled automatic updates.
- An Import query does not automatically check the source for rows added after its last refresh.
- DirectQuery fallback is not available for Direct Lake on OneLake.
Question 45
Topic: Model Data
A Power BI semantic model has the relationships shown below. All relationships use single-direction filtering.
Scroll sideways if needed. Open full-size diagram in a new tab
Text description
Geography has an active one-to-many relationship that filters Customer, and Customer has an active one-to-many relationship that filters Sales. Geography also has an inactive one-to-many relationship to Sales through billing geography.
The report filters Geography[GeographyName] to West and evaluates Sales Amount = SUM(Sales[Amount]). No expression activates an inactive relationship.
| Sale | Customer geography | Billing geography | Amount |
|---|---|---|---|
| 1 | West | East | $100 |
| 2 | East | West | $200 |
| 3 | West | West | $300 |
What value does the measure return?
Options:
A. $600
B. $500
C. $400
D. $300
Best answer: C
Explanation: Filters propagate only through active relationships and in their configured direction. The West filter travels from Geography to Customer and then from Customer to Sales. Consequently, it selects the two sales whose customers belong to West: $100 and $300.
The direct relationship from Geography to Sales[BillingGeographyKey] is inactive, so billing geography does not affect the measure unless DAX explicitly activates that relationship. The active directed path therefore determines which rows are summed.
- Billing path only: $500 uses the inactive billing-geography relationship to select the $200 and $300 rows.
- Intersect both paths: $300 assumes the active customer path and inactive billing path both filter Sales.
- No propagation: $600 ignores the active path from Geography through Customer to Sales.
Question 46
Topic: Visualize and Analyze
A marketing analyst has one row per campaign and must show whether higher advertising spend is associated with higher revenue. The visual must also reveal campaign impression volume and channel-based clusters. Campaigns have no meaningful sequence.
Which visual configuration should the analyst use?
Options:
A. Use a line chart with Campaign on X, Spend and Revenue on Y, and Channel as small multiples.
B. Use a clustered column chart with Campaign on X, Spend and Revenue on Y, and Channel as small multiples.
C. Use a scatter chart with one point per Campaign: Spend on X, Revenue on Y, Impressions as Size, and Channel as Legend.
D. Use a key influencers visual with Revenue in Analyze and Spend, Impressions, Channel, and Campaign in Explain by.
Best answer: C
Explanation: A scatter chart communicates the relationship between two continuous variables by positioning each campaign according to Spend and Revenue. The pattern of points reveals positive, negative, or weak association and makes outliers visible. Adding Impressions to Size turns each point into a proportional bubble, while Channel in Legend reveals clusters by marketing channel.
Column charts emphasize comparisons between categories, and line charts emphasize trends across an ordered axis. A key influencers visual identifies factors associated with an outcome but does not directly display the campaign-level relationship between two measures.
Place Campaign in the point-grouping field (Values, called Details in older interfaces); otherwise aggregated measures can collapse campaigns into channel-level points.
- Clustered columns compare separate values by campaign rather than showing each campaign at the intersection of Spend and Revenue.
- Line chart implies an ordered progression even though campaigns have no meaningful sequence.
- Key influencers ranks explanatory factors rather than directly displaying the bivariate pattern and impression-sized campaign points.
Question 47
Topic: Manage and Secure
A workspace admin must revoke Maya’s access to Quarterly Margin while preserving her access to Inventory Status. These are her only access paths:
| Permission | Scope | Source |
|---|---|---|
| Viewer | All workspace items | Workspace role |
| Read | Quarterly Margin | Direct share |
| Read | Inventory Status | Direct share |
Which action meets the requirement?
Options:
A. Remove Quarterly Margin direct access; retain the Viewer assignment and Inventory Status direct access.
B. Remove the Viewer assignment; retain both report-level direct access grants.
C. Remove Quarterly Margin direct access and the Viewer assignment; retain Inventory Status direct access.
D. Remove both report-level direct access grants; retain the Viewer assignment.
Best answer: C
Explanation: Effective item access includes every applicable permission path. Maya can open Quarterly Margin through both its direct Read permission and the workspace Viewer role, which provides access to all workspace items. Revoking only one path leaves the other effective. Removing the Viewer assignment eliminates inherited access to workspace items, and removing the Quarterly Margin direct share eliminates its remaining access path. The Inventory Status direct share can remain, preserving access to that report after the workspace role is removed.
The key is to revoke every path to the restricted item while retaining a separate path to the required item.
- Removing only the Quarterly Margin share leaves access inherited from the Viewer role.
- Removing only the Viewer role leaves the Quarterly Margin direct share effective.
- Removing both direct shares still leaves access to both reports through the Viewer role.
Question 48
Topic: Prepare Data
A customer snapshot must contain one row per usable CustomerID, retaining the most recently updated row. Records with unusable IDs cannot be matched. Profiling uses the entire 50,000-row data set, all LastUpdated values are valid, and each duplicated ID has one latest timestamp.
CustomerID profile | Count |
|---|---|
| Valid rows | 49,500 |
| Error rows | 200 |
| Empty rows | 300 |
| Distinct valid IDs | 48,700 |
| Valid IDs occurring once | 48,100 |
Which Power Query preparation plan best satisfies the requirement?
Options:
A. Replace error and empty IDs with one shared placeholder, then retain the latest row per ID
B. Exclude error and empty IDs, then retain the latest row per ID
C. Exclude error and empty IDs, then retain only IDs occurring once
D. Exclude error and empty IDs, then retain the earliest row per ID
Best answer: B
Explanation: Column quality identifies the 500 rows with unusable keys, while column distribution shows that valid keys are not unique: 49,500 valid rows contain only 48,700 distinct IDs. Therefore, preparation must address both issues. Error and empty IDs should be excluded because they cannot be matched, and duplicated valid IDs should be consolidated using LastUpdated. Retaining the maximum timestamp produces one current record for each usable customer key.
Unique-value statistics identify values occurring exactly once; they do not imply that other valid values should be discarded. Duplicate records must instead be resolved according to the stated business rule.
- Replacing unusable IDs with one value would combine unrelated customer records under a shared key.
- Retaining only IDs occurring once would discard customers that have multiple valid source records.
- Retaining the earliest row would produce one row per ID but violate the requirement to preserve the latest update.
Question 49
Topic: Model Data
An Import semantic model contains 75 million Sales rows. A page filters Sales[OrderTotal] to 500-1,500. The measure must retain that filter and include only orders with totals >=1,000.
Sales Amount = SUM(Sales[SalesAmount])
High Value Sales =
CALCULATE(
[Sales Amount],
FILTER(Sales, Sales[OrderTotal] >= 1000)
)
The result matches the validated value of $1.7 million. Performance Analyzer reports 4,820 ms for the DAX query and 90 ms for visual display.
Which revision best preserves the result while addressing the performance issue?
Options:
A. Use
CALCULATE([Sales Amount], REMOVEFILTERS(Sales[OrderTotal])).B. Use
CALCULATE([Sales Amount], Sales[OrderTotal] >= 1000).C. Use
CALCULATE([Sales Amount], KEEPFILTERS(Sales[OrderTotal] >= 1000)).D. Use
CALCULATE([Sales Amount], FILTER(ALL(Sales[OrderTotal]), Sales[OrderTotal] >= 1000)).
Best answer: C
Explanation: The desired OrderTotal range is the intersection of the existing 500–1,500 selection with the measure condition of at least 1,000. KEEPFILTERS preserves that intersection while a simple Boolean column filter avoids an unnecessary whole-table FILTER expression. This follows Import-model optimization guidance; measure the actual execution improvement rather than treating syntax alone as a timing guarantee. The other expressions change the filter semantics.
- A Boolean filter without KEEPFILTERS replaces the existing filter on OrderTotal instead of preserving its upper bound.
- FILTER over ALL(OrderTotal) also discards the existing OrderTotal selection.
- REMOVEFILTERS(OrderTotal) removes both the required intersection and its upper bound.
Question 50
Topic: Visualize and Analyze
A sales report contains Summary, Trends, and Product Detail pages. Configure each filter to affect exactly the required analytical population.
| Requirement | Intended population |
|---|---|
| Region = North America | Every report page |
| Fiscal Year = 2026 | All visuals on Summary only |
| Order Status is not Returned | Margin by Channel visual only |
| ProductID | Product selected when opening Product Detail by drillthrough |
Which filter-scope configuration meets all requirements?
Options:
A. Region: report; Fiscal Year: page; Order Status: visual; ProductID: drillthrough
B. Region: report; Fiscal Year: page; Order Status: drillthrough; ProductID: visual
C. Region: page; Fiscal Year: report; Order Status: visual; ProductID: drillthrough
D. Region: report; Fiscal Year: visual; Order Status: page; ProductID: drillthrough
Best answer: A
Explanation: Filter scope determines which report elements receive a filter context. A report-level filter affects every page, while a page-level filter affects all visuals on one page. A visual-level filter applies only to its assigned visual. A drillthrough field carries the selected value from a source visual to the target page. Therefore, Region belongs at report scope, Fiscal Year at Summary page scope, Order Status at the Margin by Channel visual scope, and ProductID in the Product Detail drillthrough configuration.
The scope should match the intended population without filtering additional pages or visuals.
- Swapping Region and Fiscal Year makes geography page-specific while applying the year across the entire report.
- Swapping Fiscal Year and Order Status limits the year to one visual while excluding returns from every Summary visual.
- Using ProductID as a visual filter does not carry the selected product into the Product Detail drillthrough page.
Review your attempt
The questions are mixed across domains. Use each question’s topic label to record your result.
| Topic label | Correct | Missed or guessed question numbers |
|---|---|---|
| Prepare Data | ___ / 14 | ___ |
| Model Data | ___ / 14 | ___ |
| Visualize and Analyze | ___ / 14 | ___ |
| Manage and Secure | ___ / 8 | ___ |
Your raw total is a practice result. It does not convert to Microsoft’s scaled score or predict a pass. An immediate repeat may measure answer memory more than understanding.
Use the blueprint to locate a gap, the study plan to choose focused practice, and official resources to check an unfamiliar rule or behavior. Return to a mixed attempt after you can explain a fresh example.
If a question seems incorrect or unclear, email support@masteryexamprep.com with this page’s URL, the question number, and the detail you want us to review.
Continue in the web app
Use IT Mastery for interactive PL-300 practice with mixed sets, timed mocks, topic drills, explanations, and progress tracking.