Microsoft PL-300 Practice Exam

Microsoft Power BI Data Analyst PL-300

The Microsoft Power BI Data Analyst PL-300 exam validates the skills to prepare, model, visualize and secure data with Microsoft Power BI. It is weighted across four domains: prepare the data at 25 to 30 percent, model the data at 25 to 30 percent, visualize and analyze the data at 25 to 30 percent, and manage and secure Power BI at 15 to 20 percent. Questions test Power Query, DAX measures and time intelligence, relationships, report design, Copilot, row-level security and workspace administration. This practice exam mirrors that scope with scenario-based single-answer and multiple-answer questions and drag-and-drop matching, each with a worked explanation.

Question bank updated : questions, answers, explanations and chapters.

Certification Overview

  • Exam name: PL-300
  • Vendor: Microsoft
  • Exam code: PL-300
  • Duration: 100 minutes
  • Total questions: about 50
  • Official passing score: 700 on a scale of 1 to 1,000 (source)
  • Our practice exam pass mark: 70%

Who Should Take This Exam?

Power BI Data Analyst, Business Intelligence Analyst, Data Analyst, Reporting Analyst, Business Analyst, Analytics Engineer, Report Developer, Finance Analyst

Prerequisites

No formal prerequisite. Microsoft expects candidates to be proficient in Power Query and Data Analysis Expressions (DAX) and to work with business stakeholders and data engineers.

Topics Covered

  • Prepare the data
  • Model the data
  • Visualize and analyze the data
  • Manage and secure Power BI

Question Types

  • Multiple Choice (Single Answer)
  • Multiple Choice (Multiple Answers)
  • Drag and Drop

PL-300 Practice Questions

Our question bank contains 657+ practice questions for this certification. Sample questions from each exam chapter. Expand a question to see the answer choices. With a subscription, you get unlimited practice exams with randomised questions from our full question bank.

Prepare the data

An analyst wants a report on Azure SQL Database data to hold a compressed in-memory copy so visuals respond without querying the database. Which connectivity mode meets this?
  • A. Import Correct answer
  • B. DirectQuery
  • C. Live connection
  • D. Streaming dataset

Option A is correct because Import mode loads a compressed copy of the data into the in-memory VertiPaq engine, so visuals respond without querying the source. DirectQuery and Live connection send queries at run time, and a streaming dataset is a push-based real-time feature, not a compressed copy of database data.

Several analysts must build new reports on a certified semantic model already published to a workspace, without creating another copy of the data. What should they do in Power BI Desktop?
  • A. Use the SQL Server connector against the model's workspace endpoint
  • B. Use the Dataflows connector and select the tables behind the model
  • C. Export the model tables to CSV from the service and import the files
  • D. Get data > Power BI semantic models, then select the model Correct answer

Option D is correct because Get data > Power BI semantic models connects reports to the published model as a shared source, so no second copy of the data is created. The SQL Server, Dataflows and CSV routes bypass the certified model and duplicate data or logic.

A developer builds a report on a development SQL Server and must repoint every query to the production server after publishing. The server name has to be editable in the Power BI service settings. What should be configured in Power Query?
  • A. Duplicate copies of each query with the server edited in the copy
  • B. A one-row query holding the server name, merged into each query
  • C. Change Source in Data source settings before each publish
  • D. A text parameter for the server name, used in each Source step Correct answer

Option D is correct because a text parameter for the server name, referenced in each Source step, can be edited in the semantic model settings in the Power BI service after publishing. Duplicate queries, a helper query or editing Data source settings in Desktop do not give a single editable service-side setting.

Sales analysts need dashboards that show orders within seconds of entry. The Orders fact table in Azure SQL Database holds about 900 million rows, too many to import. Which storage mode should the Orders table use?
  • A. Import, with scheduled refresh eight times a day
  • B. DirectQuery for the Orders table Correct answer
  • C. Import, with incremental refresh on OrderDate
  • D. Dual for the Orders table

Option B is correct because DirectQuery leaves the 900-million-row table in Azure SQL Database and queries it live, so dashboards reflect new orders within seconds. Import, even with incremental refresh, only updates on a schedule, and Dual still caches data in memory so it is not suited to a table too large to import.

A Location column holds values such as "Leeds, UK". Which two Power Query operations produce separate City and Country columns? (Choose two.)
  • A. Split Column by Delimiter using the comma Correct answer
  • B. Group By Location with Count Rows
  • C. Transpose the table and promote headers
  • D. Add Column From Examples with sample entries Correct answer
  • E. Unpivot Other Columns on Location

Options A and D are correct because Split Column by Delimiter on the comma separates "Leeds, UK" into two columns, and Column From Examples can infer the same split from sample entries. Group By, Transpose and Unpivot reshape rows or aggregate data and do not break one text value into City and Country.

Model the data

Time-intelligence functions such as TOTALYTD need a proper calendar table. Which action designates a table for this purpose?
  • A. Set Sort by column for the date column to the Year column
  • B. Set the table's storage mode to Dual
  • C. Enable Auto date/time in the Data Load options
  • D. Mark it as a date table by using a column of unique dates Correct answer

Option D is correct because marking a table as a date table, using a column of unique, contiguous dates, is what lets DAX time-intelligence functions such as TOTALYTD work reliably. Sort by column only changes display order, Dual storage mode affects query behavior rather than calendar semantics, and Auto date/time builds hidden tables instead of designating your own calendar.

A retail model contains a Sales table at transaction grain and a Targets table with one row per product category per month. Following star schema practice, what should the modeler do so that a Product Category slicer filters both tables?
  • A. Merge Targets into Sales in Power Query on the Category column
  • B. Create a many-to-many relationship between the two Category columns
  • C. Add a Category dimension and relate both tables to it one-to-many Correct answer
  • D. Set the Sales-to-Targets relationship to bidirectional filtering

Option C is correct because a shared Category dimension related one-to-many to both Sales and Targets lets a single slicer filter both tables, which is the standard star schema approach for facts at different grains. Merging Targets into Sales would duplicate target values across transactions, many-to-many relationships between fact-level columns are ambiguous, and bidirectional filtering between the facts does not solve the grain mismatch.

Sales holds OrderDate and ShipDate columns, and the model must keep a single Date table. Reports show sales by order date by default, and one measure must show sales by ship date. How should the relationships be configured?
  • A. Create a many-to-many relationship from Date to ShipDate
  • B. Activate both relationships and filter by ShipDate in the visual
  • C. Keep ShipDate inactive and call USERELATIONSHIP in the measure Correct answer
  • D. Duplicate the Date table and relate the copy to ShipDate

Option C is correct because the relationship on OrderDate stays active for default reporting, while the ShipDate relationship stays inactive and is activated only inside the measure with USERELATIONSHIP. Only one active relationship can exist between two tables, so activating both is not possible, a many-to-many relationship is unnecessary, and duplicating the Date table conflicts with the single-Date-table requirement.

Customer is a slowly changing dimension with several rows per CustomerID, each carrying its own validity dates and region. Reports must attribute every sale to the region the customer had on the order date. How should the modeler relate Customer to Sales?
  • A. Keep only the latest row per CustomerID in Customer and relate on CustomerID
  • B. Add a CustomerKey to Sales by matching OrderDate to the version's validity dates Correct answer
  • C. Relate on CustomerID with a many-to-many relationship and bidirectional filtering
  • D. Split Customer into current and historical tables and relate each on CustomerID

Option B is correct because a Type 2 slowly changing dimension needs a surrogate key on the fact table that points to the dimension row valid on the order date. Keeping only the latest row or relating on CustomerID loses or misattributes historical regions, and splitting the table or using many-to-many relationships does not assign each sale to the correct version.

An analyst adds a numeric range What-if parameter named Discount so report users can test price scenarios from a slider. Which two objects does Power BI Desktop add to the model? (Choose two.)
  • A. A calculated table that uses GENERATESERIES Correct answer
  • B. A relationship from the parameter table to Sales
  • C. A Power Query parameter evaluated at refresh time
  • D. A calculated column in the Sales table
  • E. A measure that returns the selected slider value Correct answer

Options A and E are correct because a numeric range What-if parameter makes Power BI Desktop create a calculated table built with GENERATESERIES to hold the slider values, plus a measure that returns the selected value (using SELECTEDVALUE). Option B is wrong because no relationship is created, option C describes a different feature (Power Query parameters), and option D is wrong because the Sales table is not modified.

Visualize and analyze the data

Which visual displays one aggregated number, such as total revenue, as a bare value with no axis, target or comparison?
  • A. Funnel chart
  • B. KPI
  • C. Gauge
  • D. Card Correct answer

Option D (Card) is correct because a card shows a single aggregated value with no axis, target or comparison. A KPI and a gauge both rely on a target or range, and a funnel chart shows stages, so none of them is a bare number.

A finance team wants one chart that starts from last year's revenue and shows each product category's increase or decrease on the way to this year's revenue. Which visual should the author add?
  • A. Waterfall chart Correct answer
  • B. Decomposition tree
  • C. Ribbon chart
  • D. Stacked column chart

Option A (Waterfall chart) is correct because it starts from an opening value and shows each category's positive or negative contribution on the way to the closing total. A decomposition tree breaks one measure down by dimensions, a ribbon chart shows rank changes, and a stacked column does not bridge start to end.

In a table of profit margin by store, cells below 10% must be red and all other cells green, with thresholds fixed by the business. What should the author configure?
  • A. A KPI visual with a target of 10%
  • B. Background color conditional formatting using the Gradient format style
  • C. A visual-level filter that keeps only stores below 10%
  • D. Background color conditional formatting using the Rules format style Correct answer

Option D is correct because the Rules format style lets you set fixed thresholds such as below 10% = red and otherwise green. Gradient shades on a continuous scale rather than at fixed cut-offs, a KPI visual does not format table cells, and a visual-level filter would remove stores instead of coloring them.

Brand guidelines specify exact hex colours and fonts for all company reports. The author wants to apply them to existing and new reports without reformatting each visual. What should the author do?
  • A. Create a JSON theme file and import it into each report with Browse for themes Correct answer
  • B. Save the report as a .pbit template and open it for each new report
  • C. Format each visual in the Format pane, then copy the visuals into the other reports
  • D. Pin the visuals to a dashboard and set the dashboard theme in the Power BI service

Option A is correct because a JSON theme file defines colors and fonts once and can be imported into any existing or new report through Browse for themes. A .pbit template only helps new reports, copying visuals is manual reformatting, and dashboard themes do not restyle report visuals.

A line chart shows daily website sessions. Which two Analytics pane features show the overall direction of the data and an estimate for the days ahead? (Choose two.)
  • A. Forecast Correct answer
  • B. Error bars
  • C. Symmetry shading
  • D. Constant line
  • E. Trend line Correct answer

Options A and E are correct because the Trend line in the Analytics pane shows the overall direction of the data, and Forecast projects the series forward for the days ahead. Error bars show uncertainty, symmetry shading compares a scatter chart's two axes, and a constant line is a fixed reference value, so none of those estimate direction or future values.

Manage and secure Power BI

Which Power BI Desktop option lets a model author test a security role's DAX filter by browsing the report as a member of that role?
  • A. Performance Analyzer
  • B. Manage roles
  • C. View as Correct answer
  • D. Preview data

Option C is correct because View as lets the author browse the report as if they were a member of a chosen role, validating the role's DAX filter. Manage roles is where roles and filters are defined, Performance Analyzer measures visual load times, and Preview data shows table contents without applying a role.

When an author defines a DAX table filter in a row-level security role, what must the expression return for each row?
  • A. A table of allowed keys
  • B. A TRUE or FALSE value Correct answer
  • C. A list of user names
  • D. A numeric score

Option B is correct because a row-level security table filter is a DAX expression evaluated for each row that must return TRUE or FALSE, and rows returning TRUE are visible to the role members. It does not return a table, a list of user names, or a numeric score.

Each of 80 sales reps must see only their own region's sales. A UserRegion table lists Email and Region, and region assignments change monthly. UserRegion is related to the Region dimension. Which design needs the least ongoing maintenance?
  • A. A separate app per region with a fixed report filter
  • B. One role filtering UserRegion[Email] = USERPRINCIPALNAME() Correct answer
  • C. A separate dataset per region, filtered in Power Query
  • D. One static role per region, with each rep added to the matching role

Option B is correct because a single dynamic role filtering the mapping table on USERPRINCIPALNAME() uses the signed-in user's email, so monthly region changes are made by editing data in the UserRegion table rather than by editing roles or members. Static roles per region, separate apps, or separate datasets all require ongoing manual administration as assignments change.

A modeler defines a role named Germany Sales in Power BI Desktop with the filter [Country] = "Germany" on Customer. Which two actions make the role apply to a named analyst who views the published report? (Choose two.)
  • A. Set the Customer relationship to filter both ways
  • B. Hide the Country column in Report view
  • C. Publish the semantic model to the Power BI service Correct answer
  • D. Add the analyst to the role in the service Correct answer
  • E. Give the analyst the Contributor workspace role

Options C and D are correct because a role defined in Desktop only takes effect once the semantic model is published to the service, where the analyst must be added as a member of the role. Filter direction (A), hiding the column (B) and the Contributor workspace role (E) do not assign the role; Contributors can in fact bypass row-level security.

Dynamic row-level security filters call USERNAME() in one role and USERPRINCIPALNAME() in another. Which three statements about these functions are correct? (Choose three.)
  • A. USERNAME is not allowed in row-level security filters
  • B. In Power BI Desktop, USERNAME returns the DOMAIN\user name Correct answer
  • C. In the Power BI service, USERNAME returns the same value as USERPRINCIPALNAME Correct answer
  • D. USERPRINCIPALNAME returns the sign-in name in user@domain form Correct answer
  • E. USERPRINCIPALNAME returns the Microsoft Entra object ID
  • F. USERNAME returns the user's display name

Options B, C and D are correct because in Power BI Desktop USERNAME returns DOMAIN\user, in the service it returns the user principal name just like USERPRINCIPALNAME, and USERPRINCIPALNAME returns the sign-in name in user@domain form. USERNAME is allowed in row-level security filters (A), and neither function returns the Entra object ID (E) or the display name (F).

Free Study Guide

Read the free Microsoft PL-300 study guide: every exam topic explained in plain English, with diagrams, exam tips and the mistakes to avoid.

More Microsoft Practice Exams

All Microsoft practice exams →

Practise with realistic mock exams to prepare for your Microsoft certification.