Microsoft

PL-300 Free Practice Questions

This is the free Microsoft PL-300 practice question bank — 180 of 356 total questions, each with a full explanation, free to read with no signup required. Updated 2026-04-24.

Every answer is verified against official Microsoft documentation — see our methodology.

Question 1

HOTSPOT - You have a Power BI report with the Edit relationship page open as shown in the following exhibit. Use the drop-down menus to select the answer choice that completes each statement based on the information presented in the graphic. NOTE: Each correct selection is worth one point.

Illustration for PL-300 question 1 Illustration for PL-300 question 1
Show Answer
Correct Answer: not be filtered a BLANK
Explanation:
The relationship is single-direction (1:*), so filters flow from Table1 to Table2 only; filtering Table2 does not affect Table1. When both tables are placed in a visual, unmatched rows (e.g., Code = SM in Table1) have no corresponding value in Table2, so the Code from Table2 shows BLANK.

Question 2

You plan to create a Power BI report that will be connected to multiple data sources. One of the data sources contains tax records. You need to ensure that other queries cannot access the tax record information. To what should you set Privacy Level for the data source?

A. None
B. Organizational
C. Private
D. Public
Show Answer
Correct Answer: C
Explanation:
Setting the Privacy Level to Private fully isolates the data source in Power Query. This prevents it from being combined with or accessed by other queries, avoiding data leakage (such as through query folding or merges) and protecting sensitive tax record information.

Question 3

HOTSPOT - You have a Power BI semantic model that contains the following table named Employees. An employee is considered active if the TermDate column for that employee contains no value. You need to create a DAX measure that will count the number of active employees. How should you complete the DAX expression? To answer, select the appropriate options in the answer area. NOTE: Each correct selection is worth one point.

Illustration for PL-300 question 3 Illustration for PL-300 question 3
Show Answer
Correct Answer: CALCULATE ISBLANK
Explanation:
CALCULATE changes the filter context of COUNTROWS to only include rows that meet a condition. ISBLANK('Employees'[TermDate]) filters the table to employees without a termination date, which defines active employees.

Question 4

You have a Power BI semantic model that has the tables and relationships shown in the following exhibit. Which type of dimension is represented by Dim Address?

A. Type 2 slowly changing dimension (SCD)
B. junk dimension
C. role-playing dimension
D. degenerate dimension
Show Answer
Correct Answer: C
Explanation:
Dim Address is connected to the same fact table multiple times with different relationships (e.g., active and inactive), meaning the same dimension plays different contextual roles such as home vs. mailing address. This is the defining characteristic of a role‑playing dimension, not a Type 2 SCD, junk, or degenerate dimension.

Question 5

HOTSPOT - You have a Power BI semantic model that contains the following tables. All the tables use the same data source. You need to reduce the number of limited relationships in the model by changing the storage mode of certain tables. The solution must NOT affect the latency of the data. Which storage mode should you select for the Customer and Geography tables? To answer, select the appropriate options in the answer area. NOTE: Each correct selection is worth one point.

Illustration for PL-300 question 5 Illustration for PL-300 question 5
Show Answer
Correct Answer: Customer: Dual Geography: DirectQuery
Explanation:
Customer relates to both DirectQuery (Sales) and Import (Survey Response) tables, so setting it to Dual removes limited relationships without adding latency. Geography only relates to Customer and does not directly interact with Import fact tables, so it can remain DirectQuery without causing limited relationships.

Question 6

You have a query in Power Query Editor that contains the following data. You need to transform the data to appear as shown in the following table. What should you do?

A. Split the Classes column into rows by using a delimiter.
B. Unpivot the Classes column.
C. Extract the text between delimiters in the Classes column.
D. Convert the Classes column into a list.
Show Answer
Correct Answer: A
Explanation:
The target result requires turning multiple class values stored in a single cell into separate rows. In Power Query, this is achieved by splitting the Classes column into rows using the appropriate delimiter, which normalizes the data. Unpivoting applies to multiple columns, extracting text does not create rows, and converting to a list does not produce the required tabular structure.

Question 7

HOTSPOT - You have a semantic model named Model1 that contains the following tables. There is an active relationship between SaleDate and Date. There is an inactive relationship between ShippingDate and Date. You need to create a new measure that will display the total amount of sales and support slicing by ShippingDate. How should you complete the DAX expression? To answer, select the appropriate options in the answer area. NOTE: Each correct selection is worth one point.

Illustration for PL-300 question 7 Illustration for PL-300 question 7
Show Answer
Correct Answer: CALCULATE USERELATIONSHIP
Explanation:
Use CALCULATE to modify filter context and USERELATIONSHIP to activate the inactive relationship between Sales[ShippingDate] and DateTime[Date], enabling slicing by ShippingDate while summing SalesAmount.

Question 8

You have a Power BI model that contains a table named Expenses. The table contains the following columns: • Date • Amount • Category • Expense ID • Employee ID Expenses are recorded by employees, and each expense has a unique expense ID. You need to create a DAX measure that will calculate the total amount of expenses. Which DAX expression should you use?

A. Sum(‘Expenses’[Amount])
B. Max(‘Expenses’[Amount])
C. Sum(‘Expenses’[Expense ID])
D. Count(‘Expenses’[Amount])
Show Answer
Correct Answer: A
Explanation:
To calculate the total amount of expenses, you must sum the numeric Amount column. SUM('Expenses'[Amount]) adds all expense values together and is the correct base measure. MAX returns only the highest single expense, SUM on Expense ID is meaningless because it is an identifier, and COUNT returns the number of rows rather than the total cost.

Question 9

You have a Power BI report named Report that contains the following tables. For the last three days, refresh in Power BI has failed, and you receive the following error message: “You have reached the maximum allowable memory allocation for your tier. Consider upgrading to a tier with more available memory.” You need to resolve the error and ensure that query response times are minimized for end users. What should you do?

A. Merge the Sales person and invoice tables based on the SalesPersonId column.
B. Change the invoice table to a DirectQuery table and read the data live from the source, retaining only the dimension tables as import tables.
C. Reduce the size of the invoice table by summarizing sales by Product, Sales person, Calendar, and Customer.
D. Change the invoice table to a composite table that contains historical data as a DirectQuery table and hot data as an import table, and then partition the table.
Show Answer
Correct Answer: D
Explanation:
The refresh failure indicates the imported fact table exceeds the memory capacity of the current Power BI tier. To both resolve the memory issue and keep query response times fast, the best approach is to use a composite (hybrid) model with incremental refresh. By keeping recent, frequently accessed (“hot”) data in Import mode and pushing older (“cold”) data to DirectQuery, memory consumption is reduced while end‑user performance for recent data remains optimal. Partitioning further minimizes refresh workload and memory pressure. The other options either increase memory usage, hurt query performance, or reduce analytical detail.

Question 10

You have a Power BI semantic model that contains two tables named DimCustomer and FactOrderDetails. The primary key of DimCustomer is CustomerID. FactOrderDetails contains a column named CustomerID that can be used to relate to DimCustomer. Multiple rows in FactOrderDetails possibly have the same CustomerID value. You need to create a relationship from FactOrderDetails to DimCustomer. The solution must optimize query performance. What should you create?

A. an active, single-direction, many-to-one relationship
B. an inactive, single-direction, one-to-many relationship
C. an active, single-direction, one-to-many relationship
D. an active, bi-directional, many-to-one relationship
Show Answer
Correct Answer: A
Explanation:
DimCustomer is a dimension table with a unique CustomerID (the one side), and FactOrderDetails is a fact table with potentially many rows per CustomerID (the many side). For optimal query performance in Power BI, the relationship should be active, single-directional (filtering from dimension to fact), and many-to-one from FactOrderDetails to DimCustomer. Bi-directional or inactive relationships add unnecessary complexity and can degrade performance.

$19

Get all 356 questions with detailed answers and explanations

  • Instant download HTML + PDF delivered the moment payment clears.
  • Secure Stripe checkout we never see or store your card details.
  • 7-day refund if files are defective see our refund policy.