Free PL-300 practice test

20 questions for the Microsoft Power BI Data Analyst (PL-300) exam, taken from our 255-question bank and spread across its 4domains by their weighting. No sign-up needed: pick an answer to check it, or open “Show answer & explanation” under any question.

What this test covers

Question 1 · Prepare the data

A developer is preparing a Power Query solution for incremental refresh on a [FactSales] table in Power BI Premium. She has defined the RangeStart and RangeEnd parameters. She now needs to ensure that the filter applied to the [SaleDate] column will fold to the SQL Server source. Which of the following actions would BREAK query folding for the incremental refresh filter? Select TWO.

Select 2 answers.

Show answer & explanation

Correct answers: D, E

  • D. Adding a custom M column using Date.ToText([SaleDate], "yyyy-MM-dd") before the date filter step
  • E. Applying a 'Remove Duplicates' step on an unrelated [OrderID] column before the date filter

Option D breaks folding because Date.ToText is a non-foldable M function that converts a date to text; once applied, all subsequent steps lose foldability. Option E breaks folding because Remove Duplicates is a transformation that SQL Server cannot natively represent as a pushdown operation, so it breaks the fold chain. Option B is correct syntax that typically folds. Option A is the canonical incremental refresh pattern and folds correctly. Option C (renaming a column) does fold in most SQL connectors because it translates to a column alias in the SELECT clause.

Question 2 · Prepare the data

A developer has a Power Query query connected to an on-premises SQL Server. She needs report recipients to be able to switch the data between two regional schemas (dbo.EMEA and dbo.APAC) without editing the query manually. She creates a Power Query parameter [Region] of type Text. Which approach correctly uses this parameter to dynamically switch schemas?

Show answer & explanation

Correct answer: C

  • C. Use the parameter as the Schema value in the Sql.Database or Sql.Databases navigator by referencing it in the table navigation step

The correct approach is to reference the [Region] parameter in the table navigation step (e.g., Source{[Schema=Region,Item="Sales"]}[Data]), which dynamically selects the correct schema. This also preserves query folding. Option A is wrong because native SQL string concatenation using the & operator in M does not fold to SQL and may produce errors; also, using Value.NativeQuery or similar would be needed for native SQL. Option D is wrong because a Filter Rows step only filters rows within a table — it cannot switch database schemas. Option B is wrong because the parameter changes the server name, not the schema, which would point to a completely different server rather than a different schema on the same server.

Question 3 · Prepare the data

A Power BI developer is building a composite model. The [FactSales] table is set to DirectQuery against Azure SQL Database, and the [DimDate] table is set to Import. The developer wants the [DimDate] table to be available for cross-source queries efficiently without always forcing a live query to the source. Which storage mode should the developer set for [DimDate] to enable it to serve both cached (Import) lookups and participate in DirectQuery queries against [FactSales]?

Show answer & explanation

Correct answer: B

  • B. Dual

Dual is correct because a table in Dual mode is cached like an Import table but can also be queried directly from the source when participating in a DirectQuery relationship. This allows [DimDate] to act as an Import table for most queries (fast, cached) and as a DirectQuery table when the engine determines it needs live source data alongside [FactSales]. Import alone would work for caching but would not allow the table to participate transparently in DirectQuery cross-source scenarios requiring source-side execution. DirectQuery would query [DimDate] live every time, negating the performance benefit of a small dimension table. Live connection is a connection mode for an entire model (e.g., Analysis Services), not a per-table storage mode setting.

Question 4 · Prepare the data

An organization wants all Power BI report developers to reuse a centrally maintained, IT-approved set of data preparation transformations without each developer having to reconnect and re-transform raw sources independently. The solution must support refresh in Power BI service and allow the output to be consumed in multiple .pbix files. What should the IT team create?

Show answer & explanation

Correct answer: D

  • D. A Power BI dataflow in Power BI service

A Power BI dataflow is correct: it allows IT to define and maintain M-based data preparation transformations centrally in Power BI service, refresh the output on a schedule, and expose the resulting entities as a reusable data source that multiple .pbix developers can connect to via the Power BI dataflows connector. A .pbit template is wrong: it packages a report structure but each developer still performs independent refreshes against raw sources; there is no shared, centrally refreshed transformation layer. A shared parameter file is wrong: Power Query parameters control values (e.g., server names) but do not encapsulate transformation logic or provide a shared refreshable output. A paginated report dataset is wrong: paginated reports use RDL datasets for rendering, not a reusable transformation layer for Power BI Desktop models.

Question 5 · Prepare the data

A developer is configuring incremental refresh for a Power BI semantic model connected to an Azure SQL Database. The developer defines RangeStart and RangeEnd parameters. Which TWO requirements must be met for incremental refresh to work correctly? (Select TWO.)

Select 2 answers.

Show answer & explanation

Correct answers: A, B

  • A. RangeStart and RangeEnd must be of data type Date/Time.
  • B. The parameters must be used in a filter step that Power Query can fold back to the data source.

RangeStart and RangeEnd must be Date/Time parameters — this is a hard requirement enforced by Power BI; using any other data type will cause the incremental refresh configuration to fail. The filter using these parameters must be query-foldable so that Power BI can pass the date range to the source system and retrieve only the relevant partition of data efficiently; if folding breaks, incremental refresh cannot partition data at the source. Option C is wrong — the policy is configured in Power BI Desktop and takes effect after publishing to the Power BI Service, not before publishing. Option D is wrong — incremental refresh is designed for Import mode tables (it would be redundant for DirectQuery, which always queries live). Option E is partially related but is not a standalone requirement separate from A; the parameter types (A) already enforce compatible date handling.

Question 6 · Prepare the data

A developer has two Power Query queries: [Orders] and [OrderDetails]. [Orders] contains one row per order with customer information, and [OrderDetails] contains one row per line item. The developer needs to produce a single table that has every column from [Orders] alongside the corresponding columns from [OrderDetails] for each line item, joined on [OrderID]. Which Power Query operation should the developer use?

Show answer & explanation

Correct answer: C

  • C. Merge Queries

Merge Queries is correct because it performs a join between two tables on one or more key columns (here [OrderID]), combining columns from both tables horizontally—equivalent to a SQL JOIN. Append Queries is wrong because it stacks rows from two tables vertically (union), requiring the same schema; it does not join on a key column. Group By is wrong because it aggregates rows within a single table; it does not combine two separate tables. Pivot Column is wrong because it rotates distinct row values into column headers within a single table; it does not join tables.

Question 7 · Model the data

You are building a Power BI model for a financial services firm. You need to create a measure that calculates the running total of revenue from the start of the fiscal year to the current date. The fiscal year starts on April 1. Your Date table has a Date column and is marked as a date table. Which DAX approach is MOST appropriate?

Show answer & explanation

Correct answer: D

  • D. Use TOTALYTD with the year-end date argument set to '3/31': Revenue YTD = TOTALYTD([Total Revenue], Date[Date], "3/31")

TOTALYTD accepts an optional year-end date argument (as a string in MM/DD format). For a fiscal year ending March 31, specifying '3/31' correctly calculates the year-to-date total from April 1 through the current date in context. Option A is wrong — DATESYTD without the year-end argument defaults to December 31, which would produce a calendar YTD, not a fiscal YTD starting April 1. Option C is wrong — hardcoding January 1 calculates a calendar YTD and does not respect the fiscal year boundary. Option B is wrong — SAMEPERIODLASTYEAR shifts dates back one year and is used for year-over-year comparisons, not YTD calculations.

Question 8 · Model the data

You are creating a Power BI report for a sales team. You have a Products table and a Sales table with a many-to-one relationship from Sales to Products. The cross-filter direction is set to Single (Products → Sales). A report user wants a visual that shows, for each product category, only the categories that have had at least one sale. When they place Category on the visual, all categories appear — including those with no sales. What change should you make?

Show answer & explanation

Correct answer: B

  • B. Add a measure that counts sales and use it as a visual-level filter to exclude categories with zero sales.

B is correct: adding a measure such as [Sales Count] = COUNTROWS(Sales) and applying a visual-level filter (keep rows where Sales Count > 0) is the safest, most controlled approach to show only categories with sales. It avoids the performance and ambiguity risks of bidirectional filtering. A is wrong: enabling bidirectional cross-filtering would allow the Sales table to filter the Products table, which would indeed hide categories with no sales — but bidirectional filtering can cause ambiguity, unexpected results in other visuals, and performance degradation; it is not the recommended approach for this scenario. C is wrong: creating an inactive relationship and activating it via USERELATIONSHIP affects measure calculations, not visual filtering of dimension rows. D is wrong: there is no 'mark as dimension table' setting in Power BI Desktop that affects cross-filter behavior or row visibility. E is wrong: RELATED is used in calculated columns to look up values across a relationship in row context; pulling Category from Sales would break the data model logic, as Category belongs in Products, not Sales.

Question 9 · Model the data

In a Power BI model, you have an active relationship between Sales[OrderDateKey] and Date[DateKey], and an inactive relationship between Sales[ShipDateKey] and Date[DateKey]. You need a measure that calculates total sales amount based on the ship date. Which DAX expression is correct?

Show answer & explanation

Correct answer: A

  • A. CALCULATE([Total Sales], USERELATIONSHIP(Sales[ShipDateKey], Date[DateKey]))

Correct: USERELATIONSHIP() inside CALCULATE activates an otherwise inactive relationship for the duration of that calculation, directing filter context through Sales[ShipDateKey] → Date[DateKey] instead of the active OrderDateKey relationship. Option B (CROSSFILTER) changes the cross-filter direction of a relationship but does not activate an inactive one. Option C (TREATAS) propagates a filter by treating a column as if it had a relationship to another column, but here the inactive relationship already exists, making USERELATIONSHIP the cleaner and intended solution. Option D (SUMX/RELATEDTABLE) doesn't address relationship activation at all.

Question 10 · Model the data

You are optimizing a Power BI Import model. VertiPaq Analyzer shows that the Sales table has a column called TransactionGUID (a unique GUID string for each of the 40 million rows) that is consuming 1.2 GB of memory. No measure, relationship, or report visual references this column. Which TWO actions would MOST effectively reduce the memory consumed by this column? Select TWO.

Select 2 answers.

Show answer & explanation

Correct answers: B, E

  • B. Sort the TransactionGUID column by another column with lower cardinality to improve compression.
  • E. Remove the TransactionGUID column in Power Query before the data is loaded into the model.

Correct (E): Removing the column entirely in Power Query is the most effective action — if the column is not needed, it should not be loaded into the model at all. This eliminates its memory consumption completely. Correct (B): VertiPaq uses run-length encoding (RLE) compression, which works best when consecutive values are identical or sorted. Sorting a high-cardinality column by a lower-cardinality column can group similar values together, improving RLE efficiency and reducing memory usage. | Wrong (A): GUIDs are unique strings and will have the same cardinality regardless of data type; converting to Whole Number is not valid for GUIDs and would cause errors or data loss. | Wrong (D): Aggregation tables help query performance but do not reduce the memory footprint of the detail column — the underlying column still exists in VertiPaq. | Wrong (C): Disabling summarization changes how the column behaves in visuals (preventing implicit aggregation) but has no effect on VertiPaq memory consumption — the column is still stored.

Question 11 · Model the data

You have a Power BI model with an Orders fact table and a Date dimension table. The Date table is marked as an official date table. You need a measure that computes the ratio of current-period sales to the previous full calendar quarter's sales. Which DAX time intelligence function is most appropriate to retrieve the previous quarter's date range?

Show answer & explanation

Correct answer: D

  • D. PREVIOUSQUARTER(Date[Date])

Option D is correct: PREVIOUSQUARTER returns a table of dates for the entire previous calendar quarter relative to the last date in the current filter context. This is the most direct and semantically correct function for retrieving the prior full quarter. Option A is incorrect — DATEADD shifts dates by a specified interval but returns the same number of days offset rather than a full quarter boundary; it does not align to calendar quarter starts/ends. Option B is incorrect — PARALLELPERIOD also shifts by a full quarter but returns the full quarter that is N quarters away from the current selection; while similar, PREVIOUSQUARTER is specifically designed for this use case and handles partial-period selections more predictably. Option C is incorrect — SAMEPERIODLASTYEAR shifts the date range back exactly one year, not one quarter.

Question 12 · Visualize and analyze the data

A Power BI developer is building a report for a retail company. She wants to add a visual that allows users to type natural language questions like 'total sales by region last quarter' and receive instant visual answers. Which visual type should she add to the report canvas in Power BI Desktop?

Show answer & explanation

Correct answer: A

  • A. Q&A visual

The Q&A visual allows users to type natural language questions and receive dynamically generated visual answers based on the data model. Smart Narrative generates automated text summaries but does not accept user-typed questions. Key Influencers analyzes factors that drive a specific metric but does not support free-text queries. Decomposition Tree is used to drill into hierarchical breakdowns of a measure but is not a natural-language query interface.

Question 13 · Visualize and analyze the data

A report author wants to let executive stakeholders quickly switch between viewing 'Revenue', 'Profit', and 'Units Sold' on the same bar chart without using slicers that filter the data. The measures already exist in the model. Which technique achieves this most efficiently?

Show answer & explanation

Correct answer: A

  • A. Use a Field parameter to create a dynamic measure selector that drives the chart's Values field

A Field parameter (introduced in Power BI) creates a parameter table that allows users to select which measure (or field) to display in a visual, dynamically changing what is plotted. This is the most efficient, purpose-built approach. Using bookmarks with three hidden visuals works but is cumbersome to maintain and scales poorly. Adding all three measures as grouped bars displays all values simultaneously rather than switching between them. A What-if parameter is for numeric value inputs (e.g., scenarios), not for selecting between existing model measures.

Question 14 · Visualize and analyze the data

A senior Power BI developer is building a complex sales report. She wants to use the Decomposition Tree visual to let users analyze total sales and manually choose which dimension to expand at each level. Which Decomposition Tree feature supports this behavior?

Show answer & explanation

Correct answer: B

  • B. Adding dimensions to the 'Explain by' field well and leaving the split type as 'Choose' so users select the next dimension

In the Decomposition Tree, fields added to the 'Explain by' well can be set to expand using AI splits (High value / Low value) or left as user-chosen splits. When the split type is 'Choose' (manual), a '+' button appears at each node and users select which dimension to expand next — supporting interactive, user-directed exploration. 'High value' AI splits automatically pick the best dimension, removing user choice. There is no 'Axis' field well or 'User-driven drill' toggle in the Decomposition Tree — that language comes from other visuals. 'Low value' AI splits automatically highlight the smallest contributors, also removing user choice.

Question 15 · Visualize and analyze the data

A data analyst is designing a Power BI report for a logistics company. She wants end users to be able to click a specific shipment row in a table visual and be taken to a detail page that shows all metrics for that individual shipment, with the shipment ID automatically passed as context. Which feature should she configure?

Show answer & explanation

Correct answer: B

  • B. A drillthrough page with the Shipment ID field added to the drillthrough well

Drillthrough (B) is designed for exactly this scenario: a target page is configured with a drillthrough field (Shipment ID), and right-clicking a value in a source visual passes that value as context to the detail page automatically. Drill down (A) navigates through a hierarchy within the same visual (e.g., Year → Quarter → Month) and does not navigate to a separate report page. Bookmarks (C) capture a static state of a page and do not dynamically pass row-level context values. Page navigation buttons (D) jump to a page without passing any data context to filter it.

Question 16 · Visualize and analyze the data

A Power BI developer is working on an executive summary report page. She wants to add a visual that automatically generates a written, sentence-based summary of the key trends and outliers in a revenue line chart, updating dynamically as filters are applied. Which visual should she use?

Show answer & explanation

Correct answer: C

  • C. Smart narrative visual

The Smart narrative visual (C) auto-generates dynamic text summaries that describe key trends, outliers, and statistics in the data; it updates automatically when report filters change. The Q&A visual (A) responds to user-typed natural language questions rather than generating narrative summaries automatically. Key Influencers (B) identifies statistical drivers of a metric but does not produce written sentence summaries. Decomposition tree (D) provides an interactive breakdown of a measure across dimensions but does not generate narrative text.

Question 17 · Manage and secure Power BI

An enterprise at Relecloud has configured RLS in a Power BI semantic model. The security team wants to validate that a specific user ('ana@relecloud.com') sees only data for the 'West' region as intended. Ana has a Viewer role in the workspace. Which THREE steps correctly describe the process to test Ana's RLS experience in the Power BI service? (Select THREE.)

Select 3 answers.

Show answer & explanation

Correct answers: A, E, F

  • A. Confirm that Ana's email is listed as a member of the appropriate RLS role in the semantic model Security settings.
  • E. Navigate to the semantic model in the workspace, select 'More options (…)' > 'Security', then use the 'Test as role' feature and enter ana@relecloud.com.
  • F. Verify that the filtered data shown in the 'Test as role' view matches only West region records.

The correct three-step process is: (1) Access the semantic model's Security settings via 'More options > Security' in the workspace — this is the correct service-side entry point for RLS testing. (2) In the RLS test interface, enter Ana's UPN to simulate her view and verify the data returned matches only West region records. (3) Confirm that Ana's UPN is actually a member of the correct RLS role, since the test will only work correctly if her membership is properly configured. Option D describes Power BI Desktop's 'View as' feature, which is for design-time testing and cannot test with a specific user's UPN in the service. Option B conflates two steps inaccurately — you select the role AND enter the user; entering only the user (via 'Test as role') in the service will impersonate them and automatically apply their assigned roles. Option C is incorrect and unnecessary; you do not need to change Ana's workspace role to test RLS — in fact, testing RLS is done by the semantic model owner/admin, not by Ana herself.

Question 18 · Manage and secure Power BI

Contoso is migrating from Power BI Pro workspaces to Microsoft Fabric capacity (F8). The migration team identifies three requirements: (1) users must be able to access published apps without a Pro license; (2) semantic models larger than 1 GB must be supported; (3) deployment pipelines must be available. Which of these requirements are met by moving to Fabric capacity? (Select THREE.)

Select 3 answers.

Show answer & explanation

Correct answers: A, B, C

  • A. Users can access published apps using only a free Power BI license when the workspace is on Fabric capacity.
  • B. Semantic models larger than 1 GB are supported on Fabric capacity.
  • C. Deployment pipelines are available on Fabric capacity.

Fabric capacity workspaces (like Premium capacity) allow free-license users to consume published apps (Option A is correct). Semantic models well beyond 1 GB are supported—up to the capacity's memory limits (Option B is correct). Deployment pipelines are a Premium/Fabric capacity feature and are available on Fabric capacity (Option C is correct). Option D is incorrect—free users can consume content but cannot edit or publish reports; they still need at least a Pro or PPU license to author content. Option E, while the refresh limit is indeed increased on Fabric/Premium capacity (from 8 to 48 refreshes per day), this is a true benefit but the question asks which of the three stated requirements are met, and this was not one of them—however, all three correct answers (A, B, C) map directly to the three stated requirements. Option F is incorrect—on-premises data gateways are still required to connect to on-premises data sources regardless of capacity type.

Question 19 · Manage and secure Power BI

A business intelligence manager wants to understand which downstream reports and dashboards are using a critical semantic model before making schema changes. The manager also needs to see if any dataflows feed into the semantic model. Which Power BI service feature should the manager use?

Show answer & explanation

Correct answer: B

  • B. Lineage view in the workspace

Lineage view in the Power BI service provides a visual end-to-end map of data flow from data sources → dataflows → semantic models → reports → dashboards within a workspace, allowing the manager to see all upstream and downstream dependencies. Usage metrics report shows who is viewing content and how frequently — it does not show data dependencies or lineage. The Workspace monitoring workbook (Admin portal) provides audit log and activity data across the tenant but does not show artifact-level lineage. Impact analysis (also accessible from the semantic model's context menu) shows downstream dependents of a specific artifact and is a valid partial answer, but lineage view shows both upstream (dataflows) AND downstream dependencies in a single visual, making it the more complete answer for the full requirement described.

Question 20 · Manage and secure Power BI

A company publishes a Power BI app from a workspace and wants different groups of users to see different sets of reports within the same app. The Finance team should see financial reports, while the HR team should only see HR reports. Both teams share the same underlying semantic model. What is the correct approach to achieve this within a single app?

Show answer & explanation

Correct answer: D

  • D. Configure multiple audiences within the app, assigning specific reports to the Finance audience and different reports to the HR audience.

Power BI apps support multiple audiences, allowing the app publisher to create distinct navigation experiences for different user groups within the same app. Each audience sees only the reports and dashboards assigned to it. Option D is correct. Option B (two separate apps) works but is unnecessarily complex and doesn't leverage the single-app, multi-audience capability. Option A (RLS only) would restrict data within a report but doesn't hide entire reports from an audience—users would still see all reports in the app navigation. Option C (workspace Viewer role) bypasses the app entirely and grants direct workspace access, which is a different permission model and doesn't control which reports each group sees.

Pick an answer on each question to check it. 20 questions in this test.

235 more PL-300 questions

Sign up free to start practising, or subscribe (from $4.97/mo) for the full 255-question bank, flashcards and timed mock exams.

Microsoft Power BI Data Analyst course overview and study guides →