Courseiva

Microsoft Power BI Data Analyst PL-300 (PL-300) — Questions 1–75

524 questions total · 7pages · All types, answers revealed

Page 1 of 7

Page 2
1
MCQhard

You are designing a Power BI solution for a retail company. The data includes point-of-sale transactions with columns: TransactionID, StoreID, ProductID, Quantity, SalesAmount, TransactionDate. The company wants to analyze sales by hour of day. What is the best way to prepare the time dimension?

A.Add a calculated column extracting hour from TransactionDate in the fact table
B.Create a date dimension only and ignore time
C.Use DAX measures to extract hour on the fly
D.Create a separate Time dimension table with a one-to-many relationship to the fact table
AnswerD

Creating a separate Time dimension table with a TimeKey (for example, an integer 0–86399 representing seconds since midnight) and attributes such as hour, half-hour slot, and time band, then relating it to the fact table via a one-to-many relationship, gives every measure a consistent, reusable way to slice and drill by time of day. This follows star-schema best practice: the dimension stores the descriptive time attributes, the fact only stores the key, and users can navigate from hour to minute or across time periods without custom DAX. It fully supports the retail requirement of analyzing sales by hour while integrating cleanly with the date dimension.

Why this answer

Creating a separate Time dimension table with a one-to-many relationship to the fact table follows the star schema best practice for Power BI. This approach allows efficient filtering and grouping by hour without bloating the fact table with calculated columns, and it supports time-based analysis across multiple fact tables if needed. The Time dimension can include columns like Hour, HourBucket, or PeriodOfDay, enabling intuitive slicers and drill-downs.

Exam trap

The trap here is that candidates often think extracting the hour via a calculated column (Option A) is simpler and sufficient, but they overlook the performance and scalability benefits of a proper star schema with a separate Time dimension, which is a core concept tested in PL-300.

How to eliminate wrong answers

Option A is wrong because adding a calculated column to the fact table to extract hour increases storage and processing overhead, and it violates star schema principles by mixing dimensions into the fact table. Option B is wrong because ignoring time entirely fails to meet the requirement to analyze sales by hour of day, as a date-only dimension cannot support hourly granularity. Option C is wrong because using DAX measures to extract hour on the fly is inefficient for repeated calculations in visuals, can degrade performance with large datasets, and prevents the use of time-based hierarchies or slicers.

2
MCQeasy

You have a Power BI dataset that uses Import mode and refreshes daily. The source data includes a column 'LastModifiedDate'. You want to reduce the amount of data loaded during each refresh by only loading rows that have changed since the last refresh. Which feature should you configure?

A.Enable query folding in Power Query.
B.Use the 'Reduce data' option in Power Query Editor.
C.Change the storage mode to DirectQuery.
D.Configure incremental refresh on the table using the 'LastModifiedDate' column.
AnswerD

Incremental refresh creates named date/time range partitions on a table and, during refresh, loads only new or modified partitions (e.g., the last N days) rather than the entire table. By using a 'LastModifiedDate' column, the refresh engine can detect which rows have changed and only refresh those historical partitions, dramatically reducing refresh time and data transfer. This requires using a Refresh Policy in Power Query (e.g., RangeStart and RangeEnd parameters) and the table must have a date/time column that records when each row was last modified.

Why this answer

Incremental refresh in Power BI allows you to filter data by a date/time column (such as 'LastModifiedDate') so that only rows that have changed since the last refresh are loaded. This reduces refresh time and data volume while still using Import mode. The feature requires a date/time column and a properly configured policy in the Power Query Editor.

Exam trap

The trap here is that candidates often confuse incremental refresh with query folding or 'Reduce data' options, not realizing that incremental refresh is the only feature designed to load only changed rows in Import mode while keeping the dataset in Import mode.

How to eliminate wrong answers

Option A is wrong because query folding pushes transformations back to the source database, but it does not selectively load only changed rows; it still processes the entire dataset. Option B is wrong because 'Reduce data' is not a built-in Power Query Editor feature; the correct option for reducing loaded data is incremental refresh. Option C is wrong because changing storage mode to DirectQuery avoids importing data entirely, but the question specifies Import mode and wants to reduce data loaded during refresh, not switch to a live query mode.

3
Multi-Selecteasy

A Power BI administrator wants to allow users to create dashboards and reports, but prevent them from sharing content outside the organization. Which two settings should be configured in the Power BI admin portal? (Choose two.)

Select 2 answers
A.Disable 'Create workspaces' in the tenant settings.
B.Disable 'Export data' in the tenant settings.
C.Disable 'Featured tables' in the tenant settings.
D.Disable 'Share content with external users' in the tenant settings.
E.Disable 'Publish to web' in the tenant settings.
AnswersD, E

The correct approach is to disable 'Share content with external users' in the tenant settings, because this switch directly governs whether users can share dashboards and reports with external email addresses. When turned off, the Share dialog rejects external recipients entirely, blocking both direct sharing and app access via external users. This is the primary tenant-level control for preventing outside access to dashboards without disabling internal collaboration.

Why this answer

Option D is correct because disabling 'Share content with external users' in the Power BI admin portal tenant settings blocks users from sharing dashboards and reports with recipients outside the organization, directly satisfying the requirement to prevent external sharing. Option E is correct because disabling 'Publish to web' prevents users from publishing reports to public websites, which is another channel for exposing content outside the organization. Option A is incorrect because disabling 'Create workspaces' would prevent users from creating workspaces, conflicting with the goal of allowing them to create dashboards and reports.

Option B is incorrect because disabling 'Export data' restricts exporting underlying data rather than sharing dashboards and reports externally. Option C is incorrect because 'Featured tables' relates to promoting tables in Excel's data types gallery and has no bearing on external sharing.

4
MCQeasy

A company has a fact table with sales data and multiple dimension tables. They want to create a measure that calculates the total sales amount for the current year, but the measure returns incorrect results when used in a visual with a date hierarchy. What is the most likely cause?

A.The date table is not marked as a date table in Power BI.
B.The fact table is not in a star schema; it is snowflaked.
C.The relationship between the date table and the fact table is inactive.
D.The relationship between the date table and the fact table is set to bidirectional cross-filtering.
AnswerC

If the relationship between the date table and the fact table is inactive, the date table's columns will not automatically filter the fact table because an inactive relationship is ignored during normal filter propagation. A visual that uses a date hierarchy from the date table will still display dates, but the measure values will be evaluated without that date context—often showing the grand total or a blend of all dates—so the results appear correct in shape but are numerically wrong. The only way to apply the filter is to explicitly activate the relationship in DAX using USERELATIONSHIP, which the user has evidently not done.

Why this answer

If the relationship between the date table and the fact table is inactive, measures that rely on time intelligence functions (like TOTALYTD, SAMEPERIODLASTYEAR, or a simple SUM with date filtering) will not automatically propagate filters from the date hierarchy to the fact table. In Power BI, only one active relationship can exist between two tables; inactive relationships require explicit activation via USERELATIONSHIP in DAX. Without that, the measure ignores the date filter and returns incorrect or blank results.

Exam trap

The trap here is that candidates often assume any relationship between tables will automatically filter, but Power BI requires exactly one active relationship per pair of tables, and inactive relationships are ignored unless explicitly activated in DAX.

How to eliminate wrong answers

Option A is wrong because marking a table as a date table is not required for basic time intelligence; it only enables automatic date hierarchy creation and certain time intelligence functions to work correctly, but it does not cause incorrect results in a visual with a date hierarchy if the relationship is active. Option B is wrong because a snowflake schema does not inherently break time intelligence; it may affect performance or model complexity, but it does not cause a measure to return incorrect results due to filter propagation. Option D is wrong because bidirectional cross-filtering would actually strengthen filter propagation, not cause incorrect results; it might lead to ambiguity or unexpected filtering, but it would not cause the measure to ignore the date filter entirely.

5
Multi-Selectmedium

Which TWO DAX functions can be used to create a calculated table in Power BI?

Select 2 answers
A.SELECTEDVALUE
B.FILTER
C.CALCULATE
D.SUMMARIZECOLUMNS
E.SUMX
AnswersB, D

FILTER returns a table that contains only the rows from its first argument that satisfy the Boolean condition provided as the second argument. This table-returning behavior makes it a valid DAX function for creating a calculated table, such as a filtered subset of a fact or dimension table. For example, FILTER('Sales', 'Sales'[Amount] > 1000) yields a table that can be stored as a calculated table.

Why this answer

FILTER (B) is correct because it is a table-returning DAX function that produces a filtered table, which can be used as the expression of a calculated table (e.g., a table defined as FILTER(Sales, Sales[Amount] > 1000)). SUMMARIZECOLUMNS (D) is also correct because it returns a table grouped by specified columns with aggregated values, making it a valid expression for creating a calculated table. Both functions return table values, which is the requirement for a calculated table's definition.

SELECTEDVALUE (A) returns a scalar value from a single-column context, not a table, so it cannot define a calculated table. CALCULATE (C) modifies filter context and returns a scalar value, not a table, so it is invalid here. SUMX (E) is an iterator that returns a scalar aggregate, not a table, so it also cannot create a calculated table.

6
Multi-Selectmedium

You are transforming a table that contains a 'Date' column in text format (e.g., '2026-01-15'). You need to create separate columns for Year, Month, and Day. Which THREE Power Query transformations can you use? (Choose three.)

Select 3 answers
A.Unpivot the Date column.
B.Split Column by Delimiter using '-' as the delimiter.
C.Use the Date.Year, Date.Month, Date.Day functions in a custom column.
D.Merge the Date column with itself.
E.Use the Extract feature to extract first 4 characters for Year, then subsequent characters.
AnswersB, C, E

Using Split Column by Delimiter with '-' assumes the Date column contains text values such as '2025-04-09'. In the Power Query editor, select the column, choose Split Column > By Delimiter, specify '-' as the custom delimiter, and split 'Each occurrence of the delimiter' to create three separate columns. After splitting, you should rename those columns to Year, Month, and Day and change their data types to Whole Number or Text as appropriate. This is a direct and effective method when the format is consistently ISO-like.

Why this answer

Option B is correct because the text dates use a consistent '-' delimiter, so Split Column by Delimiter with '-' produces three separate columns that can be renamed Year, Month, and Day. Option C is correct because a custom column can call Date.Year, Date.Month, and Date.Day (after converting the text to a date type with Date.FromText or a type change) to derive each component reliably. Option E is correct because the Extract feature can pull fixed character ranges from the text, e.g., the first 4 characters for Year and subsequent characters for Month and Day, which works for the ISO-style 'yyyy-MM-dd' format.

Option A is not appropriate because Unpivot rotates columns into attribute-value rows rather than creating separate Year, Month, and Day columns. Option D is not appropriate because merging a column with itself is a join operation that does not split or extract date parts.

Exam trap

Microsoft often tests the distinction between splitting a column by delimiter versus using date functions, where candidates may incorrectly choose Unpivot (Option A) thinking it 'unpacks' data, but it actually normalizes columns into rows.

7
MCQhard

Refer to the exhibit. You are reviewing a Power Query script. The script fails with a 'DataSource.Error: Microsoft SQL: Login failed for user' error. Which step should you check first?

A.The column name in #"Removed Columns".
B.The data type transformation in #"Changed Type".
C.The filter condition in #"Filtered Rows".
D.The credentials used in the Source step.
AnswerD

The credentials used in the Source step are the root cause: the 'Login failed' error indicates the authentication attempt to the underlying data source was rejected. In Power Query, each data source stores its own credentials, and during refresh the engine retrieves them and passes them to the provider; if they are wrong, expired, or lack the required permissions, the connection fails immediately. This error surfaces before any subsequent query steps execute, so correcting or re-entering the credentials in the data source settings is the appropriate resolution.

Why this answer

The error 'DataSource.Error: Microsoft SQL: Login failed for user' indicates an authentication failure when connecting to the SQL Server database. This occurs at the Source step, where Power Query first attempts to establish a connection using the provided credentials. Checking and correcting the credentials in the Source step is the logical first step because no subsequent data transformations (like removing columns, changing types, or filtering rows) can execute if the initial data source connection fails.

Exam trap

The trap here is that candidates may focus on data transformation steps (like removing columns or changing types) because they appear later in the query, but the error originates at the very first step—the Source step—where authentication is validated before any data is retrieved.

How to eliminate wrong answers

Option A is wrong because the 'Removed Columns' step operates on columns that already exist in the data; a login failure prevents any data from being loaded, so column removal is irrelevant. Option B is wrong because 'Changed Type' transforms data types after data is successfully loaded; it cannot cause a connection-level authentication error. Option C is wrong because 'Filtered Rows' applies row-level filtering on existing data; it has no effect on the database connection or authentication process.

8
MCQeasy

You are a Power BI report creator for a non-profit organization. You have a semantic model with a 'Donations' fact table (columns: 'DonationID', 'DonorID', 'Date', 'Amount', 'CampaignID') and a 'Donors' dimension table (columns: 'DonorID', 'DonorName', 'City', 'DonorType' (Individual/Corporate)). You need to create a report page that shows a scatter chart with 'Total Donation Amount' on the X-axis and 'Number of Donations' on the Y-axis, with each point representing a donor type. You also want to add a trend line to show the correlation. When you create the scatter chart, only one point appears (for all donors combined), instead of separate points for Individual and Corporate. What is the most likely cause?

A.The relationship between Donations and Donors is inactive.
B.The DonorType field is placed in the 'Values' well instead of the 'Legend' well.
C.The measures are incorrectly defined; they should use SUM and COUNT respectively.
D.The scatter chart does not support multiple categories; you need to use a small multiples chart.
AnswerB

The Values well in a scatter chart is reserved for numeric measures for the X and Y axes. Dropping DonorType there causes Power BI to treat it as an aggregated value (or a nonsensical measure) rather than as a categorical series selector. To get separate points for each donor type, DonorType must be placed in the Legend well, which creates a distinct series for each category. This misplacement is the exact reason the scatter shows a single cluster instead of separated groups.

Why this answer

The correct option is B: the DonorType field must be placed in the Legend well so the scatter chart splits into one point per donor type (Individual and Corporate). In Power BI, the Legend well is what creates separate series/points by category, while the Values well holds the numeric measures (Total Donation Amount and Number of Donations). With DonorType in Values, the chart aggregates everything into a single point, which matches the symptom described.

Option A is wrong because an inactive relationship would affect filtering/aggregation, not the number of scatter points, and the model already relates Donations to Donors via DonorID. Option C is wrong because SUM and COUNT are appropriate for total amount and donation count, and incorrect aggregation would not by itself collapse categories. Option D is wrong because scatter charts do support multiple categories via the Legend well; small multiples are not required.

9
MCQmedium

You are a data analyst for a retail company. You have a Power BI semantic model that imports data from an on-premises SQL Server database using an on-premises data gateway. The dataset contains a table named Products with a column named Category. You need to ensure that when users open a report, they only see data for the categories they are authorized to view. You have a table named UserCategories that maps user principal names (UPNs) to categories. What should you do?

A.Create a role in the semantic model, add a DAX filter on the Products table using LOOKUPVALUE to match the Category to the UserCategories table based on USERPRINCIPALNAME().
B.Use Power BI Desktop to create a calculated table that filters Products based on the current user, and then hide the original Products table.
C.Implement row-level security in the on-premises SQL Server database by creating a security policy and mapping users to categories.
D.Create a role in the semantic model and add a static DAX filter on the Products table for each category, such as [Category] = "Electronics".
AnswerA

Creating a role with a DAX filter that uses USERPRINCIPALNAME() and LOOKUPVALUE allows dynamic row-level security. The filter compares the category of each row to the categories assigned to the current user in the UserCategories table, ensuring users only see authorized data.

Why this answer

Row-level security in Power BI is implemented by creating roles and defining DAX filter expressions on tables. To dynamically restrict data per user, the filter should use USERPRINCIPALNAME() to identify the current user and LOOKUPVALUE to retrieve the categories assigned to that user from the UserCategories table. This ensures each user sees only their authorized categories.

Exam trap

The trap here is confusing static role filters with dynamic row-level security, or attempting to enforce security at the data source instead of within the Power BI semantic model.

10
MCQhard

Your organization uses Power BI and has implemented Microsoft Defender for Cloud Apps (formerly Microsoft Cloud App Security). A user reports that they are unable to export data from a Power BI report. The Power BI tenant settings allow export. What could be the cause?

A.The 'Export to Excel' setting is disabled in the Power BI admin portal.
B.A sensitivity label with high classification is applied to the report, automatically blocking export.
C.The user is an external guest user.
D.A Microsoft Defender for Cloud Apps session policy is blocking the export based on the user's risk level or the report's sensitivity.
AnswerD

Microsoft Defender for Cloud Apps session policies use Conditional Access App Control to intercept Power BI sessions in real time. An admin can create a policy that triggers the 'block download' action when a session meets conditions such as a high-risk sign-in or a report containing a specified sensitivity label. This occurs at the proxy layer, so it neither disables the Export button in the UI nor depends on the user being a guest—explaining why the export is blocked for this specific scenario.

Why this answer

The correct answer is D: a Microsoft Defender for Cloud Apps session policy is blocking the export based on the user's risk level or the report's sensitivity. Because Defender for Cloud Apps can proxy Power BI sessions via Conditional Access App Control, its session policies can inspect and block actions like export even when the Power BI tenant setting allows export. Option A is wrong because the scenario states the tenant settings already allow export.

Option B is wrong because sensitivity labels alone do not automatically block export; protection is enforced through encryption/permissions, not a blanket export block. Option C is wrong because being an external guest user does not by itself prevent exporting data.

11
MCQhard

A Power BI administrator needs to ensure that reports containing sensitive financial data are only accessible to users who have completed mandatory training and are using compliant devices. The organization uses Microsoft Entra ID and Microsoft Intune. Which feature should the administrator configure?

A.Deploy Microsoft Purview to scan the reports and enforce access policies
B.Use row-level security (RLS) to filter data based on user training status
C.Create a Conditional Access policy that requires device compliance and a specific group membership for training completion
D.Apply sensitivity labels to the reports and require MFA
AnswerC

Conditional Access is an Azure AD feature that evaluates signals such as group membership, device compliance (via Intune), and risk before issuing a token for cloud apps like Power BI. By creating a policy that requires the user to belong to a group representing training completion and that their device be marked as compliant, the administrator can block access to all Power BI reports at the authentication layer. This is the correct approach because it combines identity and device context in a single, centrally managed policy, which works across web and mobile clients.

Why this answer

The correct option is C: a Conditional Access policy that requires device compliance and a specific group membership for training completion. Conditional Access in Microsoft Entra ID can enforce both device compliance (via Intune) and group membership as access controls, so only users in the trained group on compliant devices can reach the Power BI reports. Option A is wrong because Microsoft Purview scans and classifies data but does not enforce training-based access at sign-in.

Option B is wrong because row-level security filters rows within a dataset, not user training status or device compliance. Option D is wrong because sensitivity labels and MFA do not verify training completion or device compliance.

12
Multi-Selectmedium

You are preparing a Power BI semantic model for a retail chain. The model contains a Products dimension and a Sales fact table. Management wants to analyze sales by product category and also by product subcategory, which is stored in a separate Subcategory table that relates to Products. You need to decide which relationship and modeling choices let filters flow from Subcategory through Products to Sales. (Choose two.)

Select 2 answers
A.Ensure the Products table has a unique value for the subcategory key on the one side of the relationship.
B.Set the relationship between Subcategory and Products to bidirectional cross-filtering to guarantee filters reach Sales.
C.Mark the Subcategory table as a date table so it participates in time intelligence.
D.Create a one-to-many relationship from Subcategory to Products on the subcategory key, with single-direction filtering from Subcategory to Products.
E.Hide the subcategory key columns in both tables so users interact only with the descriptive names.
AnswersA, D

A one-to-many relationship requires the one side to contain unique values; if the products table's subcategory key repeated, the relationship could not be created as one-to-many and would either fail or become many-to-many. Uniqueness on the one side guarantees correct filter propagation from Subcategory to Products and onward to Sales.

Why this answer

Filter propagation through a snowflaked dimension depends on a correctly defined one-to-many relationship with unique values on the one side and single-direction filtering along the hierarchy. Hiding keys, forcing bidirectional filtering, or marking an unrelated table as a date table does not enable the required filter flow and can introduce ambiguity or validation errors.

Exam trap

The trap here is assuming bidirectional cross-filtering is needed to push filters through a snowflake, when single-direction relationships along the hierarchy already propagate them.

13
Multi-Selecthard

Which THREE actions in Power Query Editor can improve the performance of data refresh? (Select three.)

Select 3 answers
A.Sort data in ascending order to improve compression.
B.Merge queries before filtering.
C.Remove columns that are not used in the report.
D.Disable the 'Enable load' option for intermediate tables that are not needed in the model.
E.Filter rows as early as possible in the query.
AnswersC, D, E

Removing columns that are not used in the report reduces the data volume that must be evaluated, compressed, and stored in the VertiPaq engine, directly shrinking the model size and refresh duration. Every column, even an unused one, requires space for its dictionary and encoded segments, so eliminating irrelevant columns cuts memory overhead and can speed up query performance by reducing the number of column segments to scan. This practice also simplifies the query editor view and prevents accidental inclusion of sensitive or duplicate data in the model.

Why this answer

Option C is correct because removing unused columns reduces the volume of data that Power Query must read, transform, and load into the model, lowering memory and refresh cost. Option D is correct because disabling 'Enable load' on intermediate queries prevents those staging tables from being materialized into the data model, so refresh avoids loading data that no report consumes. Option E is correct because applying filters as early as possible (ideally at the source or in the first steps) reduces the number of rows flowing through subsequent transformation steps, which is the most effective way to speed up refresh.

Option A is not correct because sorting rows does not improve refresh performance in Power Query; compression benefits in the VertiPaq engine come from column cardinality and encoding, not from row order. Option B is not correct because merging queries before filtering typically increases the work done on larger, unfiltered datasets; filtering first reduces the rows that must be joined.

Exam trap

The trap here is that candidates often think sorting improves compression (a common misconception from database indexing), but in Power BI, compression is handled by the VertiPaq engine and is not influenced by the order of data in Power Query.

14
MCQeasy

You have a Power BI report that uses a calculated column to categorize sales as 'High', 'Medium', or 'Low'. You notice the column is not being refreshed when the underlying data changes. What is the most likely reason?

A.The column is defined as a measure instead of a calculated column.
B.Calculated columns are only refreshed when the dataset is refreshed.
C.The DAX syntax for the calculated column is incorrect.
D.The calculated column uses a function that does not support dynamic updates.
AnswerB

Calculated columns are computed during dataset processing and stored in the model, so they only recalculate when the dataset refreshes. Because the stem describes values not updating as underlying data changes, this explains the behaviour: the column reflects the last refresh, not live source edits.

Why this answer

The correct answer is B: calculated columns are only refreshed when the dataset is refreshed. In Power BI, a calculated column is computed during dataset processing and its values are stored in the model, so it will not reflect underlying data changes until the dataset is refreshed (or the column is recalculated during that refresh). Option A does not fit because a measure is not stored row-by-row and would not appear as a column that simply fails to refresh.

Option C does not fit because incorrect DAX syntax would typically produce an error or blank values, not a stale column. Option D does not fit because calculated columns do not dynamically update regardless of the functions used; the refresh behavior is inherent to how calculated columns are processed.

15
Multi-Selecthard

You are developing a Power BI semantic model that uses a large fact table from Azure Synapse Analytics. You need to optimize the model for performance. Which THREE actions should you take?

Select 3 answers
A.Disable auto-date/time feature for the model.
B.Use integer surrogate keys instead of string keys for dimensions.
C.Combine the fact table with dimension tables into a single wide table.
D.Create calculated columns in the fact table instead of in Power Query.
E.Remove unnecessary columns from the fact table.
AnswersA, B, E

Disabling the auto-date/time feature prevents Power BI from generating hidden date tables for every date column in the model. These hidden tables add significant memory and storage overhead, especially when you have many date columns. By turning the feature off, you reduce the model's size and refresh time, and you can instead create a single explicit date table if you need date logic.

Why this answer

Option A is correct because disabling the Auto date/time feature prevents Power BI from creating hidden date tables for every date column, which reduces model size and memory consumption and speeds up processing and refresh. Option B is correct because integer surrogate keys compress far better in the VertiPaq engine than string keys, lowering memory usage and improving join and relationship performance. Option E is correct because removing unnecessary columns from the fact table reduces the model's memory footprint and improves compression and query performance.

Option C is not appropriate because combining the fact table with dimensions into a single wide table denormalizes the star schema, increases storage and redundancy, and typically degrades performance rather than optimizing it. Option D is not appropriate because calculated columns are computed at refresh time and consume memory, whereas transformations in Power Query are performed during load and are generally preferred for performance.

Exam trap

The trap here is that candidates often think combining tables into a wide table simplifies the model, but this actually degrades performance by breaking star schema design principles, which are critical for efficient query processing in Power BI.

16
Multi-Selectmedium

You are creating a Power BI report from a SQL Server database that contains a table Orders with columns: OrderDate, CustomerID, ProductID, Quantity, UnitPrice. You need to build a star schema. Which THREE tables should you create? (Choose three.)

Select 3 answers
A.OrderDetails table with line items.
B.Date dimension table with date attributes.
C.Product dimension table with product attributes.
D.Customer dimension table with customer attributes.
E.Sales fact table with measures.
AnswersB, C, D

A Date dimension table is essential for time intelligence in Power BI, as it provides a contiguous set of dates with attributes like year, quarter, month, and week. By marking it as the date table, DAX functions such as TOTALYTD and SAMEPERIODLASTYEAR can perform time-based calculations correctly. Without a dedicated Date dimension, filtering by fiscal periods or comparing periods across years becomes unreliable, especially if the fact table has gaps in dates.

Why this answer

In a star schema, dimension tables contain descriptive attributes (e.g., dates, products, customers) and are connected to a central fact table. For the Orders table, a Date dimension (B) is essential for time-based analysis, a Product dimension (C) provides product details, and a Customer dimension (D) stores customer attributes. These three dimensions normalize the data and enable efficient slicing and dicing in Power BI.

Exam trap

The trap here is that candidates often confuse dimension tables with fact tables or think that line-item details (Option A) should be a separate dimension, when in fact they belong in the fact table to maintain a star schema's simplicity and performance.

17
MCQeasy

You have a Power BI dataset that uses data from Microsoft Excel files stored in SharePoint Online. Users report that the data is not refreshing as scheduled. You verify that the gateway is installed and running. What is the most likely cause of the refresh failure?

A.The gateway is not running.
B.The gateway does not support SharePoint Online data sources.
C.The gateway is not configured to use the on-premises data source type.
D.The data source credentials are not provided in the gateway.
AnswerD

This is the correct diagnosis: the gateway is running, but the SharePoint Online data source lacks stored credentials in the gateway's data source management settings. Without those credentials, the gateway cannot authenticate to SharePoint Online during a scheduled refresh, resulting in a failure. You need to add the data source and fill in the appropriate authentication method (e.g., OAuth2) to resolve it.

Why this answer

Even when the gateway is installed and running, it must have valid data source credentials configured for the SharePoint Online Excel files. Without these credentials, the gateway cannot authenticate to SharePoint Online to retrieve the data, causing the scheduled refresh to fail. The gateway uses the stored credentials to connect to the data source during each refresh cycle.

Exam trap

The trap here is that candidates assume a running gateway automatically handles all data sources, but the gateway requires explicit credential configuration for each data source, including cloud-based ones like SharePoint Online.

How to eliminate wrong answers

Option A is wrong because the question explicitly states that the gateway is installed and running, so this cannot be the cause. Option B is wrong because the on-premises data gateway fully supports SharePoint Online as a data source when configured correctly, as it can connect to cloud services via the gateway's cloud-to-on-premises bridging. Option C is wrong because SharePoint Online is a cloud-based data source, not an on-premises data source type; the gateway handles cloud data sources like SharePoint Online through its standard cloud connector configuration, not through an on-premises data source type.

18
MCQhard

You have a Power BI dataset with a fact table and multiple dimension tables. You need to ensure that when a user filters by a dimension, the filter propagates correctly to the fact table. What type of relationship should you use?

A.Many-to-one from fact to dimension.
B.One-to-many from dimension to fact.
C.One-to-one between dimension and fact.
D.Many-to-many between dimension and fact.
AnswerB

In a well-designed star schema, each dimension table contains unique key values (one row per member) and each fact table contains many transactional rows referencing those members. By setting the relationship as one-to-many from dimension to fact, you ensure that filters applied to dimension attributes propagate naturally down to the fact rows. This is the correct cardinality for a classic star schema, enabling fast, intuitive filtering and aggregations.

Why this answer

The correct option is B: One-to-many from dimension to fact. In a star schema, the dimension table holds unique key values (the "one" side) and the fact table has many rows per key (the "many" side), so a one-to-many relationship from dimension to fact lets filter context propagate from the dimension down to the fact table correctly. Option A describes the same relationship from the opposite direction, which is not how Power BI models it, and it would also be a many-to-one from fact to dimension rather than the required propagation direction.

Option C (one-to-one) is wrong because a fact table typically has multiple rows per dimension key, and option D (many-to-many) is unnecessary and would introduce ambiguous filter propagation unless a bridge table is involved.

19
MCQmedium

Your Power BI model includes a calculated column that concatenates first and last name. Users report that the column shows blank for some rows. The data source has no nulls. What is the most likely cause?

A.Data type mismatch between the two columns
B.The columns are from different tables without a relationship
C.The relationship between tables is set to single direction
D.One of the columns contains only spaces
AnswerD

If one column contains only spaces (for example, a person's last name field holding `" "`), the concatenated result is a string composed entirely of whitespace. Because DAX does not automatically trim leading or trailing spaces in concatenation, the resulting column looks empty in visuals and may be treated as blank by later functions, even though it is not a true BLANK. This explains why the calculated column appears blank while actually holding a space-only value.

Why this answer

If a source column contains only spaces (or empty strings that appear as spaces), concatenating it with another column can produce a result that appears blank or contains only spaces. Power BI's concatenation does not trim whitespace, so the resulting column may display as blank in visuals.

Exam trap

PL-300 often tests the misconception that blank results in calculated columns are due to data type or relationship issues, when the actual cause is often whitespace or empty strings in the source data that are not visually obvious.

How to eliminate wrong answers

Option A is wrong because a data type mismatch would typically cause an error or coercion, not a blank result; Power BI would either convert types or show an error, not silently blank the column. Option B is wrong because calculated columns operate within a single table; if the columns are from different tables, the DAX would need RELATED, but the question states the column concatenates first and last name, implying they are in the same table or accessible. Option C is wrong because relationship direction affects filter propagation, not the concatenation of two columns within a row; it would not cause blanks in a calculated column.

20
Multi-Selecteasy

Which TWO of the following are valid ways to create a calculated table in Power BI? (Select two.)

Select 2 answers
A.Using the CALENDAR function to generate a date table.
B.Using DAX expressions like SUMMARIZE or ADDCOLUMNS.
C.Using the 'New Table' button under the 'Modeling' tab and writing a Power Query expression.
D.Using M language in Power Query Editor.
E.By right-clicking a table in the Fields pane and selecting 'New calculated table'.
AnswersA, B

CALENDAR is a DAX table function returning a single-column date table, and calculated tables are built from DAX table expressions. This satisfies the stem's requirement for a valid calculated-table creation method, commonly used to generate a date dimension.

Why this answer

Option A is correct because the CALENDAR function is a DAX table-returning function that generates a contiguous date table, and calculated tables are created with DAX table expressions. Option B is correct because DAX table functions such as SUMMARIZE and ADDCOLUMNS return tables and are commonly used in the DAX formula bar to build calculated tables. Option C is incorrect because the 'New Table' button under the Modeling tab expects a DAX table expression, not a Power Query expression.

Option D is incorrect because M language in Power Query Editor creates queries/imported tables, not calculated tables. Option E is incorrect because there is no such right-click 'New calculated table' command in the Fields pane.

21
MCQeasy

You are a data analyst for a manufacturing company. You have a Power BI semantic model with a table named Production that includes a column ProductionDate of data type Date/Time. You need to create a calculated column that returns the year from ProductionDate. Which DAX function should you use?

A.YEAR(Production[ProductionDate])
B.FORMAT(Production[ProductionDate], "YYYY")
C.DATEVALUE(Production[ProductionDate])
D.EXTRACT(YEAR FROM Production[ProductionDate])
AnswerA

The YEAR function extracts the year from a date column and returns an integer. It is the correct function for this requirement. It works on a column reference and can be used in a calculated column. This is a straightforward and efficient way to get the year component from a date.

Why this answer

The YEAR function is the correct DAX function to extract the year from a date column. It returns an integer and is efficient. The other options either return text, convert text to date, or are not valid DAX functions.

Using YEAR is the standard approach for creating a year calculated column.

Exam trap

The trap here is using FORMAT to extract the year, which returns a text string and can cause sorting issues.

22
MCQeasy

A Power BI report includes a bar chart showing total sales by product category. The report designer wants to add a trend line to the chart to show the overall sales trend over time. Which type of visual should be used instead?

A.Stacked bar chart
B.Line chart
C.Scatter chart
D.Pie chart
AnswerB

A line chart encodes data points along a continuous time axis and connects them with straight lines, allowing the eye to perceive direction, rate of change, and periodicity. Because the x-axis is continuous and time-ordered, Power BI can compute and overlay a trend line using linear regression, moving average, or other built-in analytics in the Analytics pane. It is the default and recommended visual for time-series trend analysis because it preserves the sequential structure of the data.

Why this answer

A line chart is the correct visual to show a trend over time because it plots data points connected by straight lines, making it easy to see the overall direction and pattern of total sales across a continuous time axis. Bar charts, including stacked variants, are designed for comparing discrete categories, not for displaying continuous trends.

Exam trap

The trap here is that candidates may think a bar chart with a trend line added via the analytics pane is acceptable, but the question asks which visual should be used instead, implying the bar chart is not the optimal choice for showing a trend over time.

How to eliminate wrong answers

Option A is wrong because a stacked bar chart is used to show the composition of a total across categories over time or groups, not to display a single trend line for total sales. Option C is wrong because a scatter chart is used to show the relationship between two numerical variables, not to display a single metric's trend over time. Option D is wrong because a pie chart shows proportions of a whole at a single point in time and cannot represent trends over time.

23
MCQhard

You are reviewing the deployment configuration for a Power BI dataset. The exhibit shows a JSON snippet of the dataset settings. You need to ensure that data is refreshed twice a day at 6:00 AM and 6:00 PM UTC. However, the refresh fails at both scheduled times. What is the most likely cause?

A.The data source uses Integrated Security (SSPI) which is not supported for scheduled refresh.
B.The refresh schedule uses UTC but the data source is in a different time zone.
C.The dataset has DirectQuery enabled, which prevents Import mode refresh.
D.The gateway ID is incorrect.
AnswerA

Integrated Security (SSPI) depends on the interactive user's Windows token to authenticate to the data source. In the Power BI service, scheduled refresh runs under a non-interactive service account, so there is no Windows identity to pass through. The service requires explicit stored credentials (e.g., SQL Server authentication or OAuth) for scheduled refresh, not SSPI. Because the data source is configured for SSPI, the refresh fails at the credential validation step.

Why this answer

Scheduled refresh in Power BI requires a gateway to connect to on-premises data sources, and when the data source uses Integrated Security (SSPI), the gateway cannot delegate credentials for scheduled refresh. SSPI relies on the user's interactive Windows authentication context, which is not available during unattended scheduled refresh operations. This causes the refresh to fail at both scheduled times.

Exam trap

The trap here is that candidates often assume time zone mismatches or DirectQuery settings cause refresh failures, but the real issue is that Integrated Security (SSPI) requires interactive user context and is not supported for unattended scheduled refresh without proper delegation configuration.

How to eliminate wrong answers

Option B is wrong because time zone differences do not cause refresh failures; the refresh schedule simply runs at the specified UTC times regardless of the data source's time zone. Option C is wrong because DirectQuery does not prevent Import mode refresh; a dataset can have both DirectQuery and Import partitions, and scheduled refresh applies only to Import mode tables. Option D is wrong because an incorrect gateway ID would cause a connection error at the time of refresh, but the question states the refresh fails at both scheduled times, which is consistent with a credential delegation issue rather than a gateway misconfiguration.

24
MCQmedium

You have a Power BI dataset that includes a 'Sales' table and a 'Calendar' table. You need to create a measure that calculates the running total of sales over the last 12 months, ending on the last date in the current filter context. Which DAX function should you use?

A.DATEADD
B.PREVIOUSMONTH
C.DATESBETWEEN
D.DATESINPERIOD
AnswerD

DATESINPERIOD is correct because it directly returns the complete set of dates from an anchor date (typically the last date in the current visual filter) back across a specified number of intervals, such as -3 MONTH. This single function can be placed inside a CALCULATE filter to sum sales for the trailing three months, with the date range boundary handled automatically. Unlike the other options, it does not require manual date arithmetic (DATESBETWEEN), does not merely shift an existing set (DATEADD), and is not limited to one period (PREVIOUSMONTH).

Why this answer

DATESINPERIOD is the correct choice because it returns a table of dates spanning a specified number of intervals (e.g., -12 MONTH) ending on a given date, which is exactly what a rolling 12-month running total requires when combined with CALCULATE and SUM. In this scenario, you would write something like CALCULATE(SUM(Sales[Amount]), DATESINPERIOD('Calendar'[Date], MAX('Calendar'[Date]), -12, MONTH)), where MAX returns the last date in the current filter context. DATEADD shifts a date range by an interval but does not by itself produce a continuous 12-month window ending on the last date.

PREVIOUSMONTH only returns the single prior month, not a 12-month span. DATESBETWEEN requires explicit start and end dates and does not automatically anchor to the last date in context with a rolling interval.

25
Multi-Selectmedium

You are importing data from a SQL Server database. The source table has a column 'ModifiedDate' of type datetime2. In Power Query, you want to ensure that only rows modified within the last 7 days are loaded. Which THREE steps should you take?

Select 3 answers
A.Load all rows and then use a DAX filter in the data model.
B.Use a parameter for the date range and reference it in the filter.
C.Split the column into date and time and then filter on the date part.
D.In Power Query, add a filter step using a custom column or the filter row feature.
E.Use a native SQL query with a WHERE clause to filter at the source.
AnswersB, D, E

A Power Query parameter, such as a date range or a scalar date value, can be referenced directly in the filter row step of a query. This makes the filter dynamic and easy to update without editing M code, and when the source is a SQL database, the filter step often folds into the generated SQL statement, reducing the amount of data imported. Parameterizing the date also supports scheduled refresh scenarios, where the filter value can be changed via the API or in the service, and it avoids hard-coded values scattered across steps.

Why this answer

Using a parameter for the date range and referencing it in the filter allows for dynamic, maintainable filtering in Power Query. This approach leverages Power Query's M language to apply a filter step that can be easily updated without modifying the query logic, ensuring only rows from the last 7 days are loaded during data refresh.

Exam trap

The trap here is that candidates often think splitting a datetime column is necessary for date-based filtering, but Power Query's native filter on datetime2 works correctly and is more efficient, while loading all rows and using DAX is a common anti-pattern that wastes resources.

26
MCQmedium

You have a Power BI semantic model that uses DirectQuery to an Azure Synapse Analytics dedicated SQL pool. The model is used by a real-time dashboard. Users report that the dashboard is slow. You need to improve query performance without changing the source system. Which action should you take?

A.Create aggregations on the fact table
B.Reduce the number of visuals on the dashboard and apply page-level filters
C.Enable dual storage mode for all tables
D.Disable the 'Reduce queries' option in Power BI Desktop
AnswerB

Reducing the number of visuals on a DirectQuery dashboard directly reduces the number of separate DAX queries that Power BI sends to the underlying data source, because each visual in DirectQuery mode issues its own live query when rendered. Applying page-level filters constrains the rowset returned for all visuals on that page, which lowers the data volume and speeds up each query. Together these actions are a simple, immediate way to lower query load without changing the data model.

Why this answer

Reducing the number of visuals and applying page-level filters directly reduces the number of queries sent to the Azure Synapse Analytics dedicated SQL pool via DirectQuery. Since the source system cannot be changed, the only way to improve performance is to minimize the query load from the dashboard. Page-level filters ensure that only relevant data is queried, and fewer visuals mean fewer separate queries, which collectively reduces latency.

Exam trap

The trap here is that candidates often assume performance improvements must come from data modeling changes (like aggregations or storage modes), but the question explicitly forbids changing the source system, so the only viable approach is to reduce the query load from the client side.

How to eliminate wrong answers

Option A is wrong because creating aggregations on the fact table would require modifying the source system (the Azure Synapse Analytics dedicated SQL pool), which is explicitly prohibited by the question. Option C is wrong because enabling dual storage mode for all tables would force some tables to import data into memory, which changes the storage mode and violates the constraint of not changing the source system; moreover, dual storage mode can increase complexity and may not improve performance for DirectQuery models. Option D is wrong because disabling the 'Reduce queries' option in Power BI Desktop would actually increase the number of queries sent to the source, worsening performance; this option is designed to reduce query redundancy, so disabling it is counterproductive.

27
MCQhard

Refer to the exhibit. You have a DAX measure that calculates customer lifetime value (CLV) as total revenue divided by distinct customer count. When you use this measure in a visual with Product category, you notice that the CLV values are higher than expected. What is the most likely reason?

A.The measure does not filter out returns
B.The measure counts customers per category, but customers who buy multiple categories are counted in each category, reducing the denominator
C.The measure should use COUNTROWS instead of DISTINCTCOUNT
D.The measure is dividing by zero for categories with no customers
AnswerB

The denominator uses DISTINCTCOUNT of customers within each category's filter context. A customer buying three categories is counted once per category, inflating the numerator's revenue while the denominator stays low, so CLV per category exceeds the true customer-level value.

Why this answer

The CLV measure is defined as total revenue divided by distinct customer count. When this measure is used in a visual with Product category, the context filters both the revenue and the customer count to that category. The DISTINCTCOUNT(CustomerID) returns the number of customers who purchased at least one product in that category.

If a customer buys multiple categories, they are counted in each category's distinct count. This makes the denominator per category smaller than the total distinct customer base, leading to a higher CLV value than expected. Option A is incorrect because returns would reduce revenue, not cause higher CLV.

Option C is incorrect because using COUNTROWS would count transaction rows, not distinct customers, making the denominator larger and CLV smaller. Option D is incorrect because DIVIDE handles division by zero, and the scenario does not involve zero customers.

28
MCQeasy

You are connecting to an Azure SQL Database from Power BI Desktop. The database contains a view that returns thousands of rows. You only need the last 100 rows for analysis. What is the most efficient way to reduce the data loaded?

A.Write a native SQL query with a WHERE clause to limit rows
B.Use DirectQuery mode and add a filter in the report
C.Import all rows and then remove rows in Power Query
D.Use the 'Keep Top Rows' transformation in Power Query after applying a sort
AnswerD

Applying a sort step followed by Keep Top Rows in Power Query is the optimal approach because the M engine can fold these transformations into a single SELECT TOP (N) ORDER BY statement on Azure SQL. This ensures that only the top N rows are fetched from the database, drastically reducing data transfer and load time. Additionally, the transformation remains declarative and reusable, and it aligns with best practices for source-side filtering in Power BI.

Why this answer

It uses Power Query's 'Keep Top Rows' transformation after sorting the view by the desired order (e.g., descending on a date column). This approach pushes the sort and row-limiting logic to the source database via query folding, ensuring only the last 100 rows are transferred over the network, which is the most efficient method for reducing data loaded.

Exam trap

The trap here is that candidates may think a native SQL query (Option A) is always the most efficient, but they overlook that Power Query's query folding can achieve the same result with better integration and maintainability, while a poorly written SQL query without proper sorting would not correctly retrieve the 'last' rows.

How to eliminate wrong answers

Option A is wrong because writing a native SQL query with a WHERE clause to limit rows does not guarantee you get the 'last' 100 rows unless you also specify an ORDER BY clause; a WHERE clause alone cannot select the last rows without a deterministic sort order, and it may require complex subqueries that are less efficient than query folding. Option B is wrong because DirectQuery mode does not reduce the data loaded into Power BI; it sends queries to the database on demand, but the filter is applied at query time, not during data loading, and it does not minimize the initial data transfer for the view—it still requires the database to process the full view before applying the filter. Option C is wrong because importing all rows and then removing rows in Power Query is inefficient; it transfers the entire dataset (thousands of rows) over the network and into memory, defeating the purpose of reducing data loaded.

29
MCQhard

You have a Power BI semantic model that uses Import mode with a SQL Server data source. The refresh takes over two hours. You need to reduce the refresh time while keeping data up-to-date. What is the best strategy?

A.Switch the data source to DirectQuery mode.
B.Remove unnecessary columns and rows from the query.
C.Configure incremental refresh policy on the fact table.
D.Reduce the scheduled refresh frequency to once a day.
AnswerC

Configuring incremental refresh on the fact table is the correct approach because it partitions data by date using RangeStart and RangeEnd parameters, so only new and updated rows are loaded during each scheduled refresh. This dramatically cuts the data processed per refresh cycle, especially for a fact table accumulating transactional data over time. It requires at least one date column and enables the 'refresh policy' capability in Power BI to manage historical and current partitions separately.

Why this answer

Incremental refresh policy allows you to refresh only the most recent data (e.g., last 5 days) while keeping historical partitions unchanged, drastically reducing the amount of data loaded during each refresh. This is the most effective way to reduce refresh time in Import mode while maintaining data freshness, as it avoids re-querying the entire fact table from SQL Server.

Exam trap

The trap here is that candidates often confuse reducing refresh frequency (Option D) with reducing refresh time, or they think DirectQuery (Option A) is a universal performance fix, when in fact it shifts the performance burden to query time and sacrifices Import mode capabilities.

How to eliminate wrong answers

Option A is wrong because switching to DirectQuery mode would eliminate the import process but would introduce query-time performance issues and remove the ability to use many Power BI features (e.g., time intelligence, calculated tables); it does not reduce refresh time but changes the data access model entirely. Option B is wrong because removing unnecessary columns and rows is a general optimization that can help, but it does not address the core issue of a large fact table that takes over two hours to refresh; the primary bottleneck is the volume of historical data, not just extraneous fields. Option D is wrong because reducing scheduled refresh frequency to once a day would not reduce the refresh time itself; it only makes the data less current, which contradicts the requirement to keep data up-to-date.

30
MCQhard

You are designing a Power BI report for executives. The dataset contains sales data with a many-to-many relationship between 'Sales' and 'Product' tables via a 'ProductSales' bridge table. Users complain that some measures return incorrect totals when using multiple related fields. What is the most likely cause?

A.The many-to-many relationship is causing ambiguity in measure evaluation
B.Data type mismatches between key columns
C.The cross-filter direction is set to single instead of both
D.Row-level security (RLS) is filtering out some rows
AnswerA

A many-to-many relationship (for example, via a bridge table) does not provide a unique path for filter propagation between the two tables. When a measure evaluates a total, the storage engine must apply filters to both sides of the relationship, but because multiple rows can match on either side, the filter context becomes ambiguous and the engine may include duplicate or omitted rows. As a result, the detail rows for each record can appear correct, but the aggregated total becomes inflated or deflated because the same underlying row is counted multiple times or not at all. This ambiguity is a known limitation of many-to-many model relationships and directly explains incorrect totals.

Why this answer

The correct answer is A: the many-to-many relationship is causing ambiguity in measure evaluation. In a bridge-table (ProductSales) many-to-many model, a single fact row can be reached through multiple product paths, so measures like SUM over Sales can be double-counted or misallocated when users slice by multiple related fields, producing incorrect totals. This is a classic DAX/modeling ambiguity that requires resolving the relationship (e.g., proper bridge filtering or distinct-count logic) rather than a simple setting change.

Option B is unlikely because key data type mismatches would typically block relationship creation or cause blanks, not selective wrong totals. Option C is not the root cause, since single vs. both cross-filter direction affects filter propagation but does not by itself create the many-to-many double-counting ambiguity. Option D is unrelated, as RLS would consistently hide rows for restricted users, not produce incorrect aggregate totals for executives with full access.

31
MCQmedium

You are a Power BI administrator. A user reports that their scheduled data refresh fails with error 'The data source credentials are no longer valid.' The dataset uses a SQL Server database with Windows authentication. What should you do first to resolve the issue?

A.Reinstall the on-premises data gateway on the server.
B.Reassign the dataset to a different Premium capacity.
C.Modify the dataset to use 'Impersonate the authenticated user' for data sources.
D.Ask the user to update the data source credentials in the Power BI service dataset settings.
AnswerD

The error indicates stored credentials expired or were changed, so refreshing them in the dataset settings restores authentication. Because the source uses Windows authentication, the user must re-enter valid credentials in the Power BI service, directly resolving the refresh failure before investigating gateways or permissions.

Why this answer

The first step is to ask the user to update the data source credentials in the Power BI service dataset settings. The error explicitly states that credentials are no longer valid, so refreshing them is the direct fix. This is a common issue when passwords expire or service accounts change.

Exam trap

PL-300 often tests the tendency to overcomplicate credential issues, leading candidates to choose gateway or capacity changes instead of the simple credential update.

How to eliminate wrong answers

Option A is wrong because reinstalling the gateway is unnecessary if the error is about credentials; it would not resolve invalid credentials. Option B is wrong because reassigning to a different Premium capacity does not affect credentials. Option C is wrong because modifying to 'Impersonate the authenticated user' is a configuration change that may not be appropriate and does not directly address expired credentials.

32
MCQmedium

A data analyst creates a Power BI report that uses a date table with a continuous date range. They want to calculate the running total of sales over the last 12 months, ending on the last date in the current filter context. Which DAX expression should they use?

A.CALCULATE(SUM(Sales[Amount]), DATESBETWEEN('Date'[Date], MAX('Date'[Date]) - 365, MAX('Date'[Date])))
B.CALCULATE(SUM(Sales[Amount]), DATESINPERIOD('Date'[Date], MAX('Date'[Date]), -12, MONTH))
C.TOTALMTD(SUM(Sales[Amount]), 'Date'[Date])
D.CALCULATE(SUM(Sales[Amount]), DATESYTD('Date'[Date]))
AnswerB

DATESINPERIOD is the correct time-intelligence function here because it returns a contiguous interval ending at MAX('Date'[Date]) and extending back 12 full calendar months, respecting month boundaries rather than fixed day counts. With -12 and MONTH, the filter context established by CALCULATE adjusts the Sales[Amount] summation to include exactly the trailing 12 months relative to the latest visible date, which is exactly what a rolling 12-month total requires.

Why this answer

DATESINPERIOD('Date'[Date], MAX('Date'[Date]), -12, MONTH) returns a contiguous set of dates from 12 months before the last date in the current filter context up to that last date, providing an exact 12-month window. This function handles month boundaries correctly and is the standard way to calculate rolling 12-month totals in DAX. Option A uses 365 days, which can be imprecise due to leap years.

Exam trap

Candidates often choose DATESBETWEEN with 365 days (Option A) thinking it simplifies the calculation, but they overlook the leap year issue. DATESINPERIOD (Option B) is the correct function for a precise rolling 12-month period as it uses month boundaries rather than a fixed number of days.

How to eliminate wrong answers

Option B is wrong because DATESINPERIOD with -12 and MONTH shifts the window back 12 months from the end date, but it includes the entire month of the start date, which can result in a 13-month window if the last date is not the end of a month, thus not guaranteeing exactly 12 months. Option C is wrong because TOTALMTD calculates a month-to-date total, not a running total over the last 12 months. Option D is wrong because DATESYTD calculates a year-to-date total from the start of the calendar year, not a rolling 12-month window ending on the last date in the filter context.

33
MCQeasy

You have developed a Power BI report that uses a live connection to an Azure Analysis Services (AAS) model. The AAS model is deployed in a different Azure region. Users report that the report loads slowly, sometimes taking over 30 seconds to render a single visual. You need to improve performance without changing the data model or the report structure. What should you do?

A.Enable the 'Reduce data shown in visuals' option in Power BI Desktop.
B.Implement row-level security (RLS) in the Azure Analysis Services model.
C.Deploy the Azure Analysis Services model to the same region as the Power BI workspace.
D.Convert the report to import mode and schedule a refresh.
AnswerC

A live connection means each Power BI visual executes a DAX query through the network to the Analysis Services instance, so physical distance directly affects response time. By co-locating the AAS server and the Power BI workspace in the same Azure region, round-trip network latency is minimized and data can stay within a single data center, which yields the fastest live query performance. This is a low-effort architectural fix that reduces latency without adding any per-query overhead or altering data granularity.

Why this answer

Deploying the Azure Analysis Services model to the same Azure region as the Power BI workspace minimizes network latency between the live connection client (Power BI) and the tabular model server. A live connection sends DAX queries over the XMLA protocol, and cross-region traffic introduces significant round-trip delays, which directly causes slow visual rendering. By co-locating the AAS server and the Power BI service in the same region, you reduce the physical distance and network hops, improving query response time without altering the model or report.

Exam trap

The trap here is that candidates often confuse client-side optimization settings (like reducing data shown) with server-side performance fixes, or they incorrectly assume that adding RLS or switching to import mode are acceptable solutions when the question explicitly prohibits changing the data model or report structure.

How to eliminate wrong answers

Option A is wrong because 'Reduce data shown in visuals' is a Power BI Desktop setting that limits the number of data points displayed in a visual (e.g., top N), which does not reduce the underlying query workload or network latency for a live connection to AAS; it only affects client-side rendering. Option B is wrong because implementing row-level security (RLS) in the AAS model adds additional DAX evaluation overhead for each query, which would likely worsen performance rather than improve it, and it does not address the cross-region latency issue. Option D is wrong because converting the report to import mode would require changing the data model (from live to import) and would break the live connection requirement; it also introduces a scheduled refresh dependency, which contradicts the constraint of not changing the data model or report structure.

34
MCQhard

You are reviewing a Power Query M script used to create a table in Power BI. The script imports data from SQL Server, filters for orders in 2022, groups by ProductID to sum revenue, sorts descending, and takes the top 10. However, the table loads slowly. You need to improve performance. Which change should you make?

A.Add a Table.Buffer step before the filter to speed up subsequent operations.
B.Remove the sorting step because it is unnecessary for the final table.
C.Modify the script to use a native SQL query that performs the filtering and aggregation on the server side.
D.Combine the filter, group, and sort into a single step using Table.Buffer.
AnswerC

Rewriting the M script to embed filtering and aggregation in a native SQL query pushes all heavy lifting to the source database engine, which is optimized for set-based operations and can use indexes, statistics, and parallelism. Only the aggregated, filtered result set is sent to Power Query, drastically reducing data transfer and memory usage while also enabling full query folding so the output is computed server-side. This is the correct approach because it minimizes the data volume that Power Query must load and process.

Why this answer

Pushing filtering, grouping, and aggregation to SQL Server via a native query reduces the volume of data transferred to Power BI and leverages the database engine's optimized execution. This minimizes memory and processing overhead in Power Query, directly addressing the slow load time caused by performing these operations on imported data.

Exam trap

The trap here is that candidates often assume buffering (Table.Buffer) or combining steps improves performance, when in reality the key performance gain comes from pushing transformations to the source database (query folding) to minimize data movement.

How to eliminate wrong answers

Option A is wrong because Table.Buffer only caches data in memory after it has already been loaded from SQL Server, which does not reduce data transfer or improve the initial load performance; it may even increase memory pressure. Option B is wrong because removing the sort step would change the result (top 10 requires sorted order), and sorting is not the primary cause of slowness; the bottleneck is the volume of data processed client-side. Option D is wrong because combining steps with Table.Buffer does not reduce the amount of data imported; it still requires all rows to be loaded into Power Query memory before any transformation, and buffering does not push computation to the server.

35
Multi-Selectmedium

Which TWO actions should you take to improve the performance of a DirectQuery model in Power BI? (Select two.)

Select 2 answers
A.Limit the columns selected to only those needed in the report.
B.Use calculated columns instead of measures to precompute values.
C.Push filters to the source database as much as possible.
D.Create aggregations on the imported tables.
E.Implement row-level security filters on the fact table.
AnswersA, C

Limiting columns to only those needed reduces the amount of data loaded into the model and the size of each query. In both Import and DirectQuery modes, cutting unused columns decreases memory consumption, storage, and network transfer, which directly lowers query execution time. This is a recommended first step for any performance optimization because it has no downside other than losing access to fields that aren't used.

Why this answer

Option A is correct because a DirectQuery model translates each visual into a query against the source, so limiting the columns selected to only those needed in the report reduces the width of the generated SQL and the volume of data transferred, lowering query cost and latency. Option C is correct because pushing filters to the source database as much as possible lets the backend engine apply its own indexing and query optimization, so less data is returned to Power BI and processing is done where it is most efficient. Option B is wrong because calculated columns in a DirectQuery table are computed at query time and can force row-by-row evaluation or even prevent query folding, which typically hurts rather than helps performance.

Option D is wrong because aggregations on imported tables apply to Import mode tables, not to a DirectQuery model's source tables. Option E is wrong because row-level security filters add predicates to every DirectQuery query and increase complexity and overhead rather than improving performance.

36
MCQeasy

You have a Power BI report that shows sales by region. The map visual displays regions with incorrect boundaries. What is the most likely cause?

A.The map visual is not the best choice for the data.
B.The data source is not refreshed.
C.The map labels are overlapping.
D.Bing Maps geocoding inaccuracies.
AnswerD

Power BI map visuals delegate geocoding and boundary rendering to Bing Maps. When a report sends region names (e.g., states, provinces) to Bing, the service returns spatial coordinates and boundary polygon geometry; any inaccuracy, stale geo-dataset, or geopolitical ambiguity in that returned geometry directly produces the incorrect boundaries shown. Because the boundaries come from Bing's cartographic data rather than from Power BI or your data source, geocoding inaccuracies are the definitive root cause.

Why this answer

The correct answer is D: Bing Maps geocoding inaccuracies. Power BI's map and filled map visuals rely on Bing Maps to geocode location data (such as region names) into geographic shapes, and ambiguous or non-standard region names can be matched to the wrong boundaries, producing incorrect shapes. This is the most likely cause of misdrawn region boundaries, since the visual itself is functioning but the geocoding lookup resolves to the wrong place.

Option A is incorrect because visual choice affects suitability, not boundary accuracy. Option B is incorrect because a stale data source would show outdated values, not wrong geographic boundaries. Option C is incorrect because overlapping labels are a formatting/rendering issue, not a cause of incorrect region shapes.

37
Multi-Selecthard

Which TWO are valid reasons to use a dataflow in Power BI when preparing data?

Select 2 answers
A.To handle large data volumes that exceed dataset limits
B.To reuse the same transformed data across multiple datasets
C.To avoid using an on-premises data gateway
D.To achieve real-time data refresh
E.To automatically enforce data lineage
AnswersA, B

Dataflows are a valid choice for large data volumes because they perform transformations in the cloud using Power Query and can store processed output in Azure Data Lake, allowing you to reduce raw data size before it ever reaches a dataset. For example, you can filter, aggregate, or remove unwanted columns so the final dataset remains within Power BI's 1-GB Pro or larger Premium capacity limits. Dataflows also support enhanced compute and incremental refresh, which help process billions of rows without hitting the same bottlenecks as direct import.

Why this answer

Option A is correct because dataflows store transformed data in Common Data Model (CDM) entities in Azure Data Lake Storage Gen2, so they can process and persist large data volumes that would otherwise exceed a single dataset's size or memory limits. Option B is correct because a dataflow's CDM entities can be consumed by multiple Power BI datasets, letting you define the transformation logic once and reuse the same cleansed data across many datasets instead of duplicating ETL work. Option C is not a valid reason, since dataflows that connect to on-premises sources still require an on-premises data gateway; dataflows do not eliminate that need.

Option D is not correct because dataflows are refreshed on a scheduled (batch) basis and are not a mechanism for real-time streaming, which is handled by streaming datasets or push datasets. Option E is not correct because data lineage is a metadata/governance feature surfaced automatically in the workspace, not something a dataflow is used to enforce.

Exam trap

The trap here is that candidates often confuse dataflows with streaming datasets or assume that cloud-based dataflows bypass all gateway requirements, but in reality, on-premises data sources still need a gateway, and dataflows do not support real-time refresh.

38
MCQhard

You are a Power BI data analyst at a healthcare organization. You import patient encounter data from an Azure Synapse Analytics dedicated SQL pool. The data contains a column named EncounterDate of type datetime2. You need to create a Power Query transformation that adds a column showing the fiscal year, which starts on July 1. The fiscal year should be labeled as FY2024 for dates from July 1, 2023, through June 30, 2024. Which transformation should you use?

A.Add a custom column with the formula Date.Year([EncounterDate]) and concatenate 'FY' with the result.
B.Add a custom column with the formula Date.Year(Date.AddMonths([EncounterDate], 6)) and concatenate 'FY' with the result.
C.Use the Date.StartOfYear function with a parameter of 7 to get the fiscal year start date, then extract the year.
D.Add a custom column with the formula Date.AddMonths([EncounterDate], -6) and then extract the year.
AnswerB

Adding six months shifts July 1 to January 1 of the next calendar year, so Date.Year returns the fiscal year number. For example, July 1, 2023 becomes January 1, 2024, and Date.Year yields 2024, producing FY2024. This correctly labels the fiscal year starting July 1.

Why this answer

To calculate a fiscal year that starts on July 1, you must shift the date by six months before extracting the year. The transformation Date.Year(Date.AddMonths([EncounterDate], 6)) correctly maps July 1 through June 30 to the appropriate fiscal year number, which can then be prefixed with 'FY' to match the required label format.

Exam trap

The trap here is using the calendar year or subtracting months instead of adding months, which misclassifies dates that fall in the second half of the calendar year but belong to the next fiscal year.

39
Multi-Selectmedium

Which THREE actions can you take to improve the performance of a slow Power BI report that uses multiple visuals on a single page?

Select 3 answers
A.Increase the frequency of data refreshes to reduce data latency.
B.Use the Performance Analyzer to identify and optimize the slowest visuals.
C.Add more calculated measures to precompute aggregations.
D.Reduce the number of fields used in each visual to only those necessary.
E.Reduce the number of visual interactions by disabling cross-filtering between unrelated visuals.
AnswersB, D, E

The Performance Analyzer in Power BI Desktop records the time spent on each stage of a visual's update, including DAX query execution, Visual Show time, and Layout time. By measuring specific visuals rather than guessing, you can identify the most expensive ones and apply targeted optimizations like rewriting DAX, simplifying the visual, or removing unnecessary record-level details. This evidence-based approach is essential because performance issues often stem from a few outliers, not the whole report.

Why this answer

Option B is correct because the Performance Analyzer in Power BI Desktop records the DAX query, visual display, and other timing metrics for each visual, letting you pinpoint exactly which visuals are slowest and target optimization efforts. Option D is correct because each field added to a visual increases the size of the DAX query result and the rendering work, so trimming visuals to only the necessary fields reduces query and render time. Option E is correct because cross-filtering and cross-highlighting force dependent visuals to re-query and re-render whenever a selection is made, so disabling interactions between unrelated visuals cuts unnecessary query and rendering overhead.

Option A is not correct because refresh frequency affects data latency and load on the source, not the rendering performance of a report page. Option C is not correct because adding more calculated measures generally increases model complexity and query cost rather than precomputing aggregations; pre-aggregation is achieved through import mode, aggregation tables, or summary tables, not by adding calculated measures.

40
Multi-Selectmedium

Which TWO of the following are best practices when designing star schemas in Power BI? (Select two.)

Select 2 answers
A.Store numeric measures in fact tables.
B.Use calculated columns in fact tables for row-level security.
C.Place descriptive attributes in dimension tables.
D.Include many columns in fact tables for filtering.
E.Normalize dimension tables to reduce redundancy.
AnswersA, C

Fact tables are the correct home for numeric, additive measures such as sales amount, quantity, or margin. These values represent the measurable business event at the grain of each fact row and are intended to be aggregated across dimensions. Placing measures in fact tables leverages Power BI's columnar storage and compression, enabling fast DAX calculations and efficient summarization. A well-designed fact table contains only foreign keys and numeric measures, keeping it narrow and high-performing.

Why this answer

Option A is correct because fact tables should contain numeric, additive measures (such as Sales Amount or Quantity) that can be aggregated by the Power BI engine, which is the core purpose of a star schema fact table. Option C is correct because descriptive attributes (such as Product Name, Category, or Customer City) belong in dimension tables, where they serve as the "by" fields for slicing and filtering the numeric measures in the fact table. Option B is not a best practice because row-level security should be implemented with DAX filter expressions on dimension tables (or via roles), not by adding calculated columns to fact tables, which bloats the model and hurts performance.

Option D is wrong because fact tables should stay narrow and contain only keys and measures; adding many columns for filtering increases model size and degrades compression and query performance. Option E is incorrect because star schemas deliberately use denormalized, flattened dimension tables to reduce the number of joins and improve query performance in Power BI.

Exam trap

The trap here is that candidates often confuse normalization (Option E) as a best practice from transactional databases, but Power BI star schemas require denormalized dimensions for optimal performance, and they may also mistakenly think calculated columns in fact tables (Option B) are acceptable for RLS, ignoring the performance and design implications.

41
Multi-Selecthard

Which THREE factors should you consider when designing an incremental refresh policy for a large fact table in Power BI?

Select 3 answers
A.The table must be configured for DirectQuery mode
B.The source data must be stored in a cloud database
C.The refresh policy must consider the data warehouse's maintenance windows
D.The table must be partitioned in the Power BI model
E.The source table must include a date or datetime column for filtering
AnswersC, D, E

Scheduling the refresh policy must align with the data warehouse's maintenance windows to avoid failures. During maintenance, the source database may be unavailable, have locked tables, or experience degraded performance, which can cause the incremental refresh to time out or return incomplete data. By scheduling refreshes outside these windows, you ensure source connectivity and consistent data loads, making this a valid design consideration.

Why this answer

Option C is correct because an incremental refresh policy must be scheduled so that its refresh windows do not collide with the data warehouse's maintenance windows, since the source must be available and consistent when Power BI queries it for new or changed partitions. Option D is correct because incremental refresh works by partitioning the table in the Power BI model (typically by RangeStart/RangeEnd parameters on a date column), so only the newest partitions are refreshed while historical partitions are retained. Option E is correct because incremental refresh requires a date or datetime column in the source table to filter and define the partition boundaries; without it, Power BI cannot determine which rows are new or changed.

Option A is not required, since incremental refresh is supported for Import mode (and DirectQuery is not a prerequisite). Option B is not required, as the source can be an on-premises database accessed via a data gateway, not only a cloud database.

Exam trap

The trap here is that candidates often assume incremental refresh requires a cloud source or DirectQuery mode, but Power BI's incremental refresh is designed for Import mode and works with any supported data source that provides a date/time column for filtering.

42
MCQhard

You have a Power BI report with the DAX measure shown in the exhibit. Users report that the measure returns blank for some months even though sales data exists for both current and previous years. What is the most likely cause?

A.The measure uses SUM instead of SUMX.
B.The 'Date' table is not marked as a date table or is missing dates.
C.The DIVIDE function is incorrectly handling division by zero.
D.The relationship between 'Sales' and 'Date' is set to cross-filter direction single.
AnswerB

SAMEPERIODLASTYEAR is a time intelligence function that requires a contiguous, continuous set of dates to shift the filter context back one year. If the 'Date' table is not explicitly marked as a date table (via the 'Mark as Date Table' setting) or is missing dates that exist in the 'Sales' table, the function cannot establish the previous year's date range and returns BLANK. Marking the table ensures Power BI validates that dates are unique and cover the full span of data, which is a prerequisite for reliable year-over-year calculations.

Why this answer

The correct answer is B: the 'Date' table is not marked as a date table or is missing dates. Time-intelligence functions such as SAMEPERIODLASTYEAR, DATEADD, and TOTALYTD rely on a contiguous, complete date table marked as a date table; if dates are missing or the table is not marked, the measure returns blank for those months even when underlying sales exist. Option A is wrong because SUM vs.

SUMX affects row-context aggregation, not time-intelligence blank results. Option C is wrong because DIVIDE handles division by zero by returning BLANK or an alternate result, which is not the cause of missing months. Option D is wrong because single cross-filter direction is the default and correct setting for a one-to-many Date-to-Sales relationship and does not cause blanks in time intelligence.

43
MCQeasy

You need to create a relationship between two tables in Power BI. Table A has a column 'ProductID' with unique values. Table B has a column 'ProductID' with duplicate values. Which relationship cardinality should you choose?

A.Many-to-one (Table A to Table B)
B.One-to-many (Table A to Table B)
C.One-to-one
D.Many-to-many
AnswerB

Correct because Table A (dimension) has unique values on the key column, and Table B (fact) contains many rows referencing that key. Power BI will filter Table B by selections in Table A. This is the standard star-schema relationship.

Why this answer

The correct choice is B, One-to-many (Table A to Table B), because Table A's ProductID column contains unique values, making it the 'one' side, while Table B's ProductID column has duplicates, making it the 'many' side; in Power BI this is the standard star-schema relationship where the unique-key table filters the fact table. A one-to-many relationship from Table A to Table B correctly reflects that each ProductID in A can match multiple rows in B. Option A (many-to-one) reverses the direction and would require Table B to be the unique side.

Option C (one-to-one) is invalid because Table B has duplicate ProductID values. Option D (many-to-many) is unnecessary and would not be the appropriate model when one side is already unique.

44
MCQmedium

You are a Power BI developer for a retail company. You have a semantic model that includes a 'Sales' fact table with columns: 'Date', 'ProductID', 'StoreID', 'Quantity', 'UnitPrice'. The 'Product' dimension table includes 'ProductID', 'ProductName', 'Category', 'SubCategory'. The 'Store' dimension table includes 'StoreID', 'StoreName', 'Region', 'District'. You need to create a report page that allows users to analyze sales performance by product category and store region. The report must include a matrix visual with: - Rows: Product Category - Columns: Store Region - Values: Total Sales Amount (Quantity * UnitPrice) Additionally, users must be able to drill down from category to subcategory in the rows, and from region to district in the columns. You also need to ensure that when a user selects a specific store region, the matrix only shows data for that region and its districts. You have created the measures and the matrix visual. However, when you test the drill down, the hierarchy does not work as expected: clicking the expand icon on a category does not show subcategories. What is the most likely cause?

A.The Total Sales measure is incorrectly defined, causing blank values for subcategories.
B.A slicer for Store Region is interfering with the matrix drill down behavior.
C.The matrix rows do not have a hierarchy defined; Category and SubCategory are separate fields.
D.The relationship between Sales and Product is set to single direction, preventing drill through.
AnswerC

For drill down to work in a Power BI matrix, the fields placed on Rows must be part of a single hierarchy that defines the parent-child relationship between levels. When Category and SubCategory are added as separate fields, the matrix treats them as independent, always-expanded columns and does not show expand/collapse icons. To enable drill down, create a hierarchy in the Product table (e.g., Product Hierarchy: Category > SubCategory) and place that hierarchy on Rows. This is the necessary condition being tested.

Why this answer

The correct answer is C: the matrix rows do not have a hierarchy defined, with Category and SubCategory as separate fields. In Power BI, drill-down in a matrix requires a single field well containing a hierarchy (or nested fields in the Rows bucket) so the expand/collapse icon can navigate from Category to SubCategory; placing Category and SubCategory as independent fields prevents the expected drill behavior. Option A is wrong because a blank Total Sales measure would show empty values, not block the hierarchy expansion.

Option B is wrong because a Store Region slicer filters data but does not disable matrix drill-down. Option D is wrong because single-direction relationships affect filter propagation and drillthrough pages, not in-matrix hierarchy expansion.

45
Multi-Selecteasy

Which TWO are valid methods to secure access to a Power BI dataset? (Select exactly two.)

Select 2 answers
A.Row-level security (RLS)
B.Column-level security (CLS)
C.Object-level security (OLS)
D.App permissions
E.Data encryption at rest
AnswersA, C

Row-level security (RLS) is a valid method because it restricts data at the row level based on the identity of the signed-in user. By defining roles in Power BI Desktop and using DAX expressions (such as USERNAME() or USERPRINCIPALNAME()), RLS filters the underlying dataset dynamically, so each user only sees rows they are permitted to view. This filtering is enforced at query time, making it a robust, native access-control feature for Power BI datasets.

Why this answer

Row-level security (RLS) [CORRECT] is a valid method to secure access to a Power BI dataset because it restricts which rows a given user can see by applying DAX filter expressions to roles defined in the dataset, and those roles are assigned to users or groups in the Power BI service. Object-level security (OLS) [CORRECT] is also valid because it secures specific tables or columns in the dataset model by hiding them entirely from users who lack permission, preventing them from viewing or querying those objects. Column-level security (CLS) is not a separate Power BI feature; column-level restriction is achieved through OLS, so it is not a distinct valid method.

App permissions control access to Power BI apps and workspaces rather than securing the dataset model itself, and data encryption at rest protects stored data on disk but does not control which data a user can access within a dataset.

46
MCQeasy

You are importing data from an Excel workbook that contains multiple sheets. You only need data from the 'Sales' sheet. In Power Query Editor, what should you do to load only that sheet?

A.Load all sheets, then delete the queries for sheets you don't need.
B.In the Navigator dialog, select the 'Sales' sheet and click 'Transform Data'.
C.Use a filter transform to exclude rows from other sheets.
D.Select the entire workbook and then filter out other sheets in Power Query.
AnswerB

In the Navigator dialog, each worksheet and named table appears as a previewable source; choosing the 'Sales' sheet and clicking 'Transform Data' sends only that sheet's data into Power Query Editor as the single source for a new query. This lets you filter rows, change data types, or add custom columns before loading, while leaving every other sheet unread and out of the data model. This is the efficient, supported workflow for importing a specific worksheet.

Why this answer

In Power Query Editor, the Navigator dialog allows you to preview and select specific tables or sheets from a data source before loading. By selecting the 'Sales' sheet and clicking 'Transform Data', you load only that sheet into Power Query Editor for transformation, avoiding unnecessary data. This is the correct and efficient method to import a single sheet from a multi-sheet Excel workbook.

Exam trap

The trap here is that candidates may think they can use a filter or query folding to exclude entire sheets after loading, but Power Query treats each sheet as a separate table, not as rows within a single table, so filtering cannot remove sheets.

How to eliminate wrong answers

Option A is wrong because loading all sheets and then deleting unwanted queries is inefficient and violates the principle of early data reduction; it also consumes memory and processing time for data that will be discarded. Option C is wrong because filter transforms operate on rows within a single table, not on sheets or tables; you cannot use a row filter to exclude entire sheets from a workbook. Option D is wrong because selecting the entire workbook in the Navigator dialog loads all sheets as separate queries, and Power Query does not support filtering out other sheets after loading; you would need to manually remove or disable the unwanted queries.

47
MCQeasy

You are reviewing a Power Query query that loads data from a SQL Server database. The query includes multiple steps that perform data transformation. You want to ensure that the query is optimized by pushing as many transformations as possible to the SQL Server. What should you look for?

A.View the native SQL query generated by Power Query.
B.Use the Performance Analyzer in Power BI Desktop.
C.Check for the 'Query Folding' indicators in the query editor.
D.Review the data preview for each step.
AnswerC

Correct. Query folding indicators in Power Query Editor (a table icon with a down arrow or a fold icon) show whether a step is translated into native SQL and executed on the server. This directly tells you if transformations are being pushed to SQL Server.

Why this answer

Query folding indicators in Power Query Editor show whether transformations are being pushed to the SQL Server source. When a step shows a 'folded' icon (a table with a down arrow), it means the transformation is translated into native SQL and executed on the server, reducing data transfer and improving performance. Checking these indicators directly confirms which steps are folded and which are not, allowing you to optimize the query by reordering or rewriting steps to maximize folding.

Option A is incorrect because viewing the native SQL query only shows the final aggregated SQL, not the folding status of each individual step. Option B is also incorrect as the Performance Analyzer helps measure overall report performance but does not indicate folding for each step. Option D is irrelevant because data previews do not show folding status.

Exam trap

The trap here is that candidates often confuse viewing the native SQL query (Option A) with checking query folding indicators, but the native query only shows the final aggregated SQL, not the folding status of each individual step, which is what the question specifically asks for.

How to eliminate wrong answers

Option A is wrong because viewing the native SQL query generated by Power Query only shows the final folded query, not the folding status of individual steps; it does not help identify which specific transformations are being pushed. Option B is wrong because the Performance Analyzer in Power BI Desktop measures report and visual rendering performance, not query folding or source-side optimization of Power Query transformations. Option D is wrong because reviewing the data preview for each step shows the output of transformations but gives no indication of whether those transformations are being executed on the SQL Server or locally in Power Query.

48
MCQhard

You have the DAX measure shown. The measure returns blank for some periods even though there are sales in the current period. What is the most likely cause?

A.The Date table does not contain all dates from the previous year.
B.The measure is not properly filtered by the current context.
C.The variable CurrentSales is not evaluated correctly.
D.The DIVIDE function returns blank when denominator is zero.
AnswerA

SAMEPERIODLASTYEAR shifts the current filter dates back one year along the contiguous date column of the Date table. If that table is non-contiguous or does not include every day of the previous year, the function returns an empty set, making PreviousSales BLANK. Consequently, DIVIDE, with a blank denominator, yields BLANK despite a valid CurrentSales. This is the exact root cause.

Why this answer

The correct option is A: the Date table does not contain all dates from the previous year. A typical year-over-year DAX measure uses SAMEPERIODLASTYEAR or DATEADD over the marked Date table, and if the Date table is missing dates from the prior year, the time-intelligence function returns an empty set, so the measure evaluates to blank even though current-period sales exist. Time intelligence in DAX requires a contiguous, complete Date table marked as a date table; gaps in prior-year dates break the shifted filter context.

Option B is too generic and does not explain blanks tied specifically to prior-year periods. Option C is unlikely because a variable referencing current sales would still evaluate in the current context. Option D is incorrect because DIVIDE returns blank only when the denominator is zero or blank, which would not selectively blank prior-year comparisons when current sales exist.

49
Multi-Selecthard

Which THREE of the following are valid considerations for choosing between Import and DirectQuery storage modes? (Select three.)

Select 3 answers
A.Import mode provides faster query performance for aggregated data
B.DirectQuery mode supports all DAX functions without limitations
C.Import mode has a maximum data size limit (e.g., 1 GB per dataset in shared capacity)
D.DirectQuery mode cannot query large data sources
E.DirectQuery mode is suitable when real-time data is required
AnswersA, C, E

Import mode loads and compresses the entire dataset into memory using the VertiPaq columnar engine, so query execution does not incur network round-trips to the source database. Aggregated queries such as SUM, COUNT, or GROUP BY run directly against this in-memory columnstore, enabling response times that are typically orders of magnitude faster than pushing the same aggregation to an external relational engine. In addition, shared aggregations get cached at the model level, which further accelerates repeated report interactions.

Why this answer

Option A is correct because Import mode loads a compressed copy of the data into the Power BI in-memory engine (VertiPaq), so queries against aggregated data are served from memory and are typically much faster than DirectQuery, which pushes queries to the source. Option C is correct because Import mode datasets are constrained by capacity memory limits — for example, a 1 GB dataset size limit per dataset in shared/Pro capacity — which is a genuine factor when deciding between the two modes. Option E is correct because DirectQuery sends queries directly to the underlying source at query time, so it reflects near real-time data changes without the scheduled refresh latency required by Import mode.

Option B is wrong because DirectQuery does not support all DAX functions; some functions are restricted or behave differently, and certain calculated columns/measures are unsupported. Option D is wrong because DirectQuery can query large data sources — it is often chosen precisely to avoid importing huge volumes, since processing happens at the source.

50
MCQeasy

Refer to the exhibit. You load the Sales table into Power BI. You need to calculate the total net sales after discount (SalesAmount * (1 - Discount)). However, some rows have Null in the Discount column. What is the correct DAX measure?

A.Net Sales = SUM(Sales[SalesAmount]) * (1 - SUM(Sales[Discount]))
B.Net Sales = SUMX(Sales, Sales[SalesAmount] * (1 - COALESCE(Sales[Discount], 0)))
C.Net Sales = SUMX(Sales, Sales[SalesAmount] * (1 - Sales[Discount]))
D.Net Sales = SUMX(Sales, DIVIDE(Sales[SalesAmount], 1 - Sales[Discount]))
AnswerB

SUMX iterates row by row over the Sales table, so Sales[SalesAmount] and Sales[Discount] are evaluated in the same row. The COALESCE function replaces any null Discount value with 0, preventing null propagation and treating missing discounts as no discount. This correctly computes net revenue per row as SalesAmount * (1 - Discount), then sums across all rows, which matches the intended business definition of net sales.

Why this answer

It uses SUMX to iterate over each row of the Sales table, applying the calculation row-by-row, and uses COALESCE to replace any NULL in the Discount column with 0, ensuring the discount is correctly treated as zero for rows without a discount. This avoids the aggregation errors that occur when using SUM on the Discount column directly.

Exam trap

The trap here is that candidates often choose Option C, thinking that DAX will automatically ignore NULLs in multiplication, when in fact any NULL operand produces a NULL result, leading to incorrect totals.

How to eliminate wrong answers

Option A is wrong because it aggregates SalesAmount and Discount separately with SUM, then multiplies the totals, which incorrectly applies a single aggregated discount rate to the total sales amount rather than calculating row-by-row. Option C is wrong because it does not handle NULL values in the Discount column; any row with a NULL discount will cause the entire multiplication to result in NULL, producing incorrect totals. Option D is wrong because it uses DIVIDE with (1 - Sales[Discount]) as the denominator, which is mathematically incorrect for calculating net sales after discount and also fails to handle NULLs.

51
Multi-Selectmedium

Which TWO actions are required to set up a Power BI deployment pipeline with separate data sources for Development and Production?

Select 2 answers
A.Define dataset parameters in Power BI Desktop for data source values.
B.Assign the dataset owner to each stage workspace.
C.Configure parameter rules in the deployment pipeline to map parameters to stage-specific values.
D.Re-enter data source credentials for each stage after deployment.
E.Create separate gateways for each stage.
AnswersA, C

Parameters allow you to change data source at deployment time.

Why this answer

Defining dataset parameters in Power BI Desktop for data source values allows you to make the data source connection dynamic. These parameters can then be overridden at each stage of the deployment pipeline, enabling separate data sources for Development and Production without modifying the report file.

Exam trap

The trap here is that candidates often confuse credential management (Option D) with parameter-based data source separation, or assume that separate gateways (Option E) are mandatory, when in fact parameter rules are the correct and efficient method for stage-specific data sources.

52
MCQmedium

You have a table with a column 'FullName' that contains names in the format 'Last, First'. You need to split this column into 'LastName' and 'FirstName' columns. Which Power Query transformation should you use?

A.Pivot the FullName column.
B.Split Column by Delimiter using comma.
C.Group By the FullName column and aggregate.
D.Extract first characters using 'Extract' transformation.
AnswerB

In Power Query, the Split Column feature by a delimiter divides text into separate columns at each occurrence of a specified delimiter. For a FullName column containing comma-separated names, choosing comma as the delimiter splits it into two columns, with options to control the number of splits and how to handle extra delimiters. This directly achieves the goal of separating the name into distinct parts.

Why this answer

The 'Split Column by Delimiter' transformation in Power Query is specifically designed to divide a single text column into multiple columns based on a specified delimiter, such as a comma. In this case, the 'FullName' column contains names in the 'Last, First' format, so splitting by a comma delimiter will correctly separate the last name and first name into two distinct columns.

Exam trap

The trap here is that candidates might confuse 'Split Column by Delimiter' with 'Extract' or 'Pivot', thinking that extracting the first few characters or pivoting the column could achieve the same result, but only the delimiter-based split correctly handles the variable-length 'Last, First' format.

How to eliminate wrong answers

Option A is wrong because Pivot transforms unique values from a column into new columns and aggregates associated data, which is not applicable for splitting a single text column. Option C is wrong because Group By aggregates rows based on a column and computes summary statistics, not splitting text values within a cell. Option D is wrong because the 'Extract' transformation (e.g., Extract First Characters) only retrieves a fixed number of characters from the start of a string, which cannot handle variable-length names separated by a delimiter.

53
Multi-Selecteasy

You are building a Power BI report that uses a DirectQuery source. Which TWO of the following actions can improve report performance?

Select 2 answers
A.Add calculated columns to the model.
B.Disable the 'Reduce queries sent to the source' option.
C.Reduce the number of visuals on each report page.
D.Use complex DAX measures with many nested functions.
E.Create summary tables in the data source to pre-aggregate data.
AnswersC, E

Every visual on a DirectQuery page issues its own set of DAX queries against the source, and filters from slicers/cross-filtering can cascade into additional queries. Reducing the number of visuals directly cuts the query count and the amount of data transferred, lowering page load time and easing the load on the data source while preserving performance.

Why this answer

Option C is correct because in DirectQuery mode every visual issues its own queries against the source, so reducing the number of visuals per page directly cuts the number of round trips and the volume of data the source must process. Option E is correct because pre-aggregating data into summary tables in the source means DirectQuery retrieves smaller, already-computed result sets instead of scanning large detail tables, which lowers query cost and latency. Option A is wrong because calculated columns in a DirectQuery model are computed at query time (or force the column to be materialized), adding processing overhead rather than reducing source load.

Option B is wrong because disabling 'Reduce queries sent to the source' removes the optimization that consolidates and limits queries, increasing the number of queries hitting the source. Option D is wrong because complex, deeply nested DAX measures translate into more elaborate SQL and heavier source-side computation, degrading rather than improving performance.

54
MCQhard

You are analyzing a Power BI dataset definition. The dataset refreshes but recently started failing with the error 'The 'OrderDate' column of the table 'Orders' has a date value that is out of range.' You need to diagnose the issue. What is the most likely cause?

A.The source table contains a date value that is not recognized as a valid DateTime by Power BI.
B.The columns in the dataset definition do not match the source table.
C.The connection string is invalid.
D.The M expression has a syntax error.
AnswerA

The correct explanation is that this error is triggered during Power Query's type conversion when a value in the source table cannot be coerced to the expected DateTime type because it falls outside the valid date range (e.g., a year before 1753 or a calendar date like February 30). When the dataset definition expects a DateTime column and the underlying source contains an invalid date literal, the M engine raises an out-of-range or conversion error even though the source itself is accessible. This is distinct from a structural, connection, or syntax problem because the failure occurs during data evaluation/type handling, not during connection or parsing.

Why this answer

The error message indicates that a date value in the 'OrderDate' column of the 'Orders' table is out of the range supported by Power BI's DateTime type (1/1/1900 00:00:00 to 12/31/9999 23:59:59.999). This typically occurs when the source contains a date like '0001-01-01' or a future date beyond the upper bound, which Power BI cannot convert to a valid DateTime. Option A is correct because the source table has a date value that is not recognized as a valid DateTime by Power BI, causing the refresh to fail.

Exam trap

The trap here is that candidates often confuse a date-out-of-range error with a data type mismatch error (e.g., text vs. date), but the specific wording 'out of range' points to a valid date value that falls outside Power BI's supported DateTime range, not an invalid format.

How to eliminate wrong answers

Option B is wrong because a mismatch between dataset columns and source columns would produce a different error, such as 'The column 'X' of the table 'Y' was not found' or a schema mismatch, not a date-out-of-range error. Option C is wrong because an invalid connection string would cause a connection failure error (e.g., 'Cannot connect to the data source') before any data is loaded, not a date validation error during refresh. Option D is wrong because an M expression syntax error would be caught during query parsing and would produce a syntax error message, not a runtime data validation error about a specific column value being out of range.

55
MCQmedium

You are designing a data model for a report that shows sales by region and product category. The source data includes a table 'Sales' with columns: Region, Category, SalesAmount. You also have separate tables 'Regions' and 'Categories' that contain additional attributes. You need to create a star schema. What should you do with the 'Region' and 'Category' columns in the 'Sales' table?

A.Remove them from the Sales table and use foreign keys to link to the dimension tables
B.Keep them in the Sales table as attributes for simplicity
C.Merge the Regions and Categories tables into the Sales table
D.Mark the Sales table as a date table
AnswerA

This is the correct star schema approach. Remove region and category descriptive text from the Sales table and replace them with foreign key columns (e.g., RegionID, CategoryID) that reference the primary keys of dedicated dimension tables. This normalizes the fact table, eliminates redundant string storage, and enables DAX filter and slicer operations to traverse relationships efficiently. It also simplifies future updates to dimension attributes without rewriting historical sales rows.

Why this answer

In a star schema, dimension tables (Regions, Categories) contain descriptive attributes, and the fact table (Sales) stores foreign keys referencing those dimensions. Removing the Region and Category columns from the Sales table and replacing them with foreign keys (e.g., RegionID, CategoryID) normalizes the model, reduces data redundancy, and enables efficient filtering and slicing by region and category attributes. This approach aligns with best practices for Power BI data modeling, ensuring optimal query performance and maintainability.

Exam trap

The trap here is that candidates often think keeping attributes in the fact table is simpler and faster, not realizing that a normalized star schema with foreign keys actually improves performance and scalability in Power BI.

How to eliminate wrong answers

Option B is wrong because keeping Region and Category as attributes in the Sales table violates star schema principles, leading to data duplication, larger table size, and inefficient filtering when dimension attributes change. Option C is wrong because merging the Regions and Categories tables into the Sales table creates a wide, denormalized flat table, which defeats the purpose of a star schema and increases storage and refresh overhead. Option D is wrong because marking the Sales table as a date table is irrelevant; date tables are used for time intelligence functions, and Sales is a fact table, not a date dimension.

56
MCQeasy

You are importing data from an Excel workbook that contains a column 'Region' with values such as 'North', 'South', 'East', 'West', and some blank cells. You need to replace the blank cells with 'Unknown' to ensure consistent reporting. What is the most efficient way to achieve this in Power Query?

A.Use the 'Replace Values' feature to replace null with 'Unknown'.
B.Filter out the rows where 'Region' is blank.
C.Add a conditional column that checks if 'Region' is null and returns 'Unknown'.
D.Use the 'Fill Down' feature to fill blanks with the value from the row above.
AnswerA

The 'Replace Values' feature in Power Query can replace null values with a specified text. This is a straightforward and efficient method to handle blanks in a single column. It does not require complex coding and is a common data cleansing step.

Why this answer

Using 'Replace Values' to replace null with 'Unknown' directly modifies the column in place, ensuring all blanks become 'Unknown' without adding extra columns or removing rows. This is the most efficient and straightforward method for this data cleansing task.

Exam trap

The trap here is overcomplicating the solution by considering conditional columns or filtering, when a simple replace operation suffices.

57
MCQmedium

You need to combine data from three different SharePoint lists into a single table for analysis. The lists have different column names but contain similar data. What is the best approach in Power Query?

A.Use 'Unpivot Columns' to transform the data.
B.Use 'Group By' to combine values.
C.Use 'Append Queries' and then rename columns to match.
D.Use 'Merge Queries' on a common key column.
AnswerC

Append Queries is the correct operation because it stacks rows from multiple queries vertically, which is exactly what you need when combining three SharePoint lists that contain similar record types. When appending, Power Query matches columns by name, so after the append you may need to rename columns in the individual queries to ensure a uniform schema; otherwise you can end up with mismatched columns or nulls. This method preserves all source rows and yields a single consolidated table that is ready for further transformation.

Why this answer

Append Queries is the correct approach because it stacks rows from multiple tables (SharePoint lists) into a single table, which is exactly what you need when combining data with similar structures but different column names. After appending, you can rename columns to unify the schema. This is the standard Power Query method for row-level concatenation of tables.

Exam trap

The trap here is that candidates confuse 'Append' (row stacking) with 'Merge' (column joining), often choosing Merge because they think they need a 'common key' to combine data, but the question explicitly states the lists have different column names, making a key-based join inappropriate.

How to eliminate wrong answers

Option A is wrong because Unpivot Columns transforms columns into rows, which is used for normalizing wide tables, not for combining separate tables. Option B is wrong because Group By aggregates data (e.g., sum, count) and would lose individual row details, not combine lists. Option D is wrong because Merge Queries joins tables horizontally based on a common key, which is for relational lookups, not for stacking rows from different sources.

58
MCQeasy

You have a report that contains a map visual showing sales by city. Several cities are missing from the map because the location data is ambiguous. What should you do to resolve this?

A.Add latitude and longitude fields to the model.
B.Create a calculated column that combines city and country to provide unambiguous location.
C.Replace the map visual with a table.
D.Adjust the bubble size to make missing points visible.
AnswerB

Creating a calculated column that concatenates city and country (e.g., 'Austin, United States') gives the map visual a unique, geocodable location string. This directly resolves ambiguity because Power BI's Bing Maps geocoder treats the combined string as a specific place, avoiding mismatches like 'London' in the UK vs. 'London' in Ohio. It is a lightweight DAX solution that uses existing data, requires no external lookups, and is the intended best practice for ambiguous city names.

Why this answer

The correct option is B: create a calculated column that combines city and country to provide unambiguous location. When a map visual can't place a city because multiple places share the same name, supplying a more specific, hierarchical location string (for example, concatenating City and Country) gives the geocoding engine enough context to resolve each point uniquely. Option A is unnecessary and less precise here because adding raw latitude/longitude is a heavier modeling change than disambiguating the existing location field, and it doesn't address the root cause of ambiguous city names.

Option C does not fix the data ambiguity—it merely abandons the map visualization. Option D is irrelevant, since bubble size affects rendering of plotted points, not the geocoding of missing locations.

59
MCQeasy

You have a Power BI model with a table 'Sales' that contains a column 'OrderDate'. You need to create a calculated column that extracts the year from OrderDate. Which DAX expression should you use?

A.DATEPART("year", Sales[OrderDate])
B.YEAR(Sales[OrderDate])
C.CALENDAR(YEAR(Sales[OrderDate]), YEAR(Sales[OrderDate]))
D.FORMAT(Sales[OrderDate], "yyyy")
AnswerB

YEAR(Sales[OrderDate]) correctly uses the DAX YEAR function, which takes a date or datetime value and returns the corresponding four-digit year as an integer. Because Sales[OrderDate] is a date column, the function evaluates the date part of each row and yields a scalar numeric value, e.g., 2024. This is an efficient, type-safe way to create a Year column or measure for grouping, sorting, and filtering in Power BI.

Why this answer

The correct option is B, YEAR(Sales[OrderDate]), because DAX provides the YEAR() function specifically to extract the integer year from a date column, which is exactly what is needed for a calculated column on Sales[OrderDate]. Option A is invalid because DATEPART is a T-SQL function, not a DAX function, so it would not work in a Power BI calculated column. Option C, CALENDAR(YEAR(...), YEAR(...)), returns a single-column table of dates rather than a scalar year value, so it cannot be used as a calculated column expression.

Option D, FORMAT(Sales[OrderDate], "yyyy"), returns the year as a text string rather than a numeric value, which is less appropriate for extracting the year for typical numeric or sorting use.

60
MCQmedium

You are designing a star schema for a sales data model. Which table should be defined as a dimension table?

A.TransactionID
B.OrderQuantity
C.SalesAmount
D.Date
AnswerD

Date is a classic dimension in a star schema because it provides the descriptive context necessary for time-based analysis, such as year, quarter, month, and day attributes. The Date dimension is placed in a separate table from the fact table to avoid repeating date attributes across fact rows, thereby reducing redundancy and enabling efficient filtering, grouping, and time intelligence calculations like year-to-date or period-over-period comparisons. Its role as a conformed dimension allows multiple fact tables (e.g., sales, orders) to share the same date dimension, making it a fundamental and correct choice for this design.

Why this answer

Option D, Date, is correct because a dimension table stores descriptive attributes used to filter, group, and label facts, and a Date dimension provides calendar attributes such as year, quarter, month, and day for slicing sales measures. In a star schema, the fact table holds numeric measures and foreign keys, while dimensions like Date supply the context for analysis. TransactionID, OrderQuantity, and SalesAmount are not dimension tables: TransactionID is typically a fact table key or degenerate dimension, and OrderQuantity and SalesAmount are numeric measures that belong in the fact table.

Therefore, Date is the only appropriate dimension table among the listed options.

61
MCQhard

You are a Power BI data analyst at a university. You import a table named Enrollments from an on-premises SQL Server database. The table contains a column named StudentEmail that is stored as text and sometimes has leading or trailing spaces. You need to remove these spaces so that the column can be used to create a relationship with a Students table that also has a StudentEmail column. You must perform this cleanup in Power Query, and the transformation must apply to the entire column without creating a new column. Which transformation should you use?

A.On the Transform tab, select Format and then Trim.
B.On the Add Column tab, select Format and then Trim.
C.On the Transform tab, select Replace Values and replace a space with an empty value.
D.On the Transform tab, select Format and then Clean.
AnswerA

The Trim transformation removes leading and trailing whitespace from text values across the entire selected column. It modifies the existing column in place, which matches the requirement to avoid creating a new column. After trimming, the values can match the Students table and support a valid relationship. This is the standard data cleansing step for text keys.

Why this answer

Trim is the Power Query transformation that removes leading and trailing whitespace from text values in place. Applying it from the Transform tab modifies the existing StudentEmail column, so the cleaned values can match the Students table and support the relationship. The Add Column variant would create a separate column, and Clean or Replace Values do not correctly remove only the surrounding spaces.

Exam trap

The trap here is selecting Trim from the Add Column tab instead of the Transform tab, which creates a new column and leaves the original column with the unwanted spaces.

62
Multi-Selecthard

You are a data analyst for a manufacturing company. You have a Power BI semantic model that imports data from an Azure SQL Database. The model contains a fact table named Production and a dimension table named Products. The Products table has columns ProductID, ProductName, Category, and Subcategory. You need to reduce the model size and improve query performance. Which two actions should you take? (Choose two.)

Select 2 answers
A.Change the data type of ProductID from Text to Whole Number.
B.Enable 'Auto date/time' for the Production table.
C.Remove unused columns from the Products table.
D.Create a hierarchy for Category and Subcategory.
E.Set the Category and Subcategory columns to use the 'Summarize by: Don't summarize' property.
AnswersA, C

ProductID is likely a numeric identifier. Storing it as a whole number instead of text reduces storage because numeric data types compress better and require less memory. This improves performance and reduces model size, assuming the values are indeed numeric and used as a key.

Why this answer

Removing unused columns and converting numeric keys stored as text to whole numbers both reduce the model's memory footprint and improve query performance. Unused columns add unnecessary cardinality and storage, while text columns are less efficient than numeric types. The other options either affect only metadata or increase model size.

Exam trap

The trap here is assuming that cosmetic settings like 'Don't summarize' or hierarchies affect performance, when they are purely metadata or usability features.

63
MCQeasy

You are connecting to an Excel workbook stored in Microsoft SharePoint Online. You want to refresh the data in Power BI service without manual intervention. Which type of gateway is required?

A.On-premises data gateway (standard mode)
B.On-premises data gateway (personal mode)
C.No gateway is required
D.Virtual network (VNet) gateway
AnswerC

No gateway is required because SharePoint Online is a cloud data source that the Power BI service can connect to natively. During refresh, Power BI authenticates directly to SharePoint Online using the stored credentials (typically OAuth or an organizational account) and retrieves the Excel workbook through SharePoint's cloud APIs. The entire refresh operation runs in the cloud, eliminating the need for any on-premises gateway infrastructure or a local machine being online.

Why this answer

When connecting to an Excel workbook stored in Microsoft SharePoint Online, the data source resides entirely in the cloud. Power BI service can directly access SharePoint Online via its cloud-to-cloud connectivity using the same Microsoft Entra ID authentication context. Therefore, no on-premises data gateway is required for scheduled refresh because the data never traverses an on-premises network.

Exam trap

The trap here is that candidates mistakenly assume any Excel workbook refresh requires a gateway, but the critical distinction is whether the file is stored on-premises (e.g., a network share) versus in a cloud service like SharePoint Online or OneDrive for Business.

How to eliminate wrong answers

Option A is wrong because the on-premises data gateway (standard mode) is designed for connecting to data sources that reside on-premises or in a private network, not for cloud-native sources like SharePoint Online. Option B is wrong because the personal mode gateway is a single-user gateway intended for on-premises data sources and does not support cloud-to-cloud refresh scenarios. Option D is wrong because a Virtual Network (VNet) gateway is used to connect Azure virtual networks to on-premises networks or other VNets, not for accessing cloud SaaS data sources like SharePoint Online.

64
MCQeasy

You are importing data from a CSV file that contains a column with mixed data types (numbers and text). Power BI automatically assigns the data type as Text. You need to perform numerical aggregations on this column. What should you do?

A.Split the column using a delimiter to separate numbers from text.
B.Create a relationship with a numeric table to enable aggregation.
C.Create a calculated column in DAX using VALUE() to convert the text to numbers.
D.In Power Query Editor, change the data type of the column to Whole Number or Decimal Number.
AnswerD

Changing the data type in Power Query Editor to Whole Number or Decimal Number is the proper and idiomatic remedy because it defines the column as numeric from the moment it enters the data model, immediately making it available for aggregations like SUM and AVERAGE. This transform is part of your ETL workflow, gets applied at each refresh, and is self-documenting in the query steps, ensuring downstream reports treat the column precisely as intended.

Why this answer

Changing the column's data type to Whole Number or Decimal Number in Power Query Editor will force Power BI to interpret the numeric values as numbers, enabling aggregations like SUM or AVERAGE. Power Query Editor provides a robust transformation environment where data type changes are applied during the load process, ensuring the column is treated as numeric for all downstream calculations. This approach is more efficient and reliable than using DAX conversions, as it avoids the overhead of calculated columns and leverages Power Query's native type detection and error handling.

Exam trap

The trap here is that candidates may think a DAX calculated column (Option C) is the correct approach for data type conversion, but the PL-300 exam emphasizes performing data transformations in Power Query Editor (the 'Prepare the data' domain) rather than in DAX, as Power Query is the proper tool for cleaning and shaping data before loading it into the model.

How to eliminate wrong answers

Option A is wrong because splitting the column using a delimiter does not address the mixed data types; it would separate values into multiple columns but still leave text entries that cannot be aggregated numerically. Option B is wrong because creating a relationship with a numeric table does not convert the existing text column to numbers; relationships are based on matching keys, not data type conversion, and aggregation requires numeric values in the same column. Option C is wrong because while a DAX calculated column using VALUE() can convert text to numbers, it is less efficient than changing the data type in Power Query Editor, as it adds a column to the model and may fail on non-numeric text entries, whereas Power Query can handle errors during load.

65
MCQeasy

You have a Power BI report that uses a live connection to an Azure Analysis Services (AAS) tabular model. You need to add a new measure to the report. What should you do?

A.Use DAX to create a new calculated column in Power BI Desktop.
B.Modify the AAS model directly from Power BI Desktop.
C.Add the measure to the AAS tabular model using SQL Server Management Studio (SSMS) or Visual Studio.
D.Create a new calculated table in Power BI Desktop.
AnswerC

Because the report uses a live connection, every measure in the report must exist in the Azure Analysis Services tabular model; Power BI Desktop cannot author explicit measures locally in this mode. The correct approach is to add the measure as a calculated measure in the AAS model via SQL Server Management Studio (using the 'Calculated Measures' folder) or in Visual Studio's tabular model designer, then process the model. After refreshing the Fields pane, the measure becomes available for use in Power BI visuals.

Why this answer

With a live connection to an Azure Analysis Services tabular model, Power BI Desktop is only a thin client and cannot create or edit model objects such as measures, calculated columns, or calculated tables. Measures must be authored in the source tabular model itself, so option C is correct: you add the measure to the AAS model using SSMS (via an MDX/DAX query window or Tabular Model Scripting Language) or Visual Studio with the Analysis Services projects extension, then it becomes available to the live-connected report. Option A is wrong because calculated columns cannot be created in Power BI Desktop against a live-connected model.

Option B is wrong because Power BI Desktop cannot modify the AAS model directly in a live connection. Option D is wrong because calculated tables also cannot be added in Power BI Desktop when using a live connection.

66
Multi-Selecteasy

Which TWO are valid reasons to use a date table in a Power BI semantic model? (Select two.)

Select 2 answers
A.To allow users to drill down into non-date hierarchies.
B.To automatically generate date hierarchies in visuals.
C.To enable time intelligence functions like TOTALYTD and SAMEPERIODLASTYEAR.
D.To improve the performance of relationships between tables.
E.To ensure consistent date filtering across multiple fact tables.
AnswersC, E

DAX time intelligence functions such as TOTALYTD and SAMEPERIODLASTYEAR require a continuous, contiguous set of dates and a proper filter context over a date column. A date table marked as a date table in Power BI Desktop fulfills this by providing an unambiguous date column and a relationship to your fact tables, ensuring the functions return accurate results. Without a marked date table, these functions may produce incorrect or missing values, especially when your fact dates are sparse or discontinuous.

Why this answer

Option C is correct because time intelligence DAX functions such as TOTALYTD, SAMEPERIODLASTYEAR, DATESYTD, and DATEADD require a contiguous, marked date table with a Date column at day granularity; without a proper date table these functions return incorrect or blank results. Option E is correct because a single shared date table can be related to multiple fact tables, letting one slicer or filter on the date dimension consistently filter all facts instead of relying on each fact's own date column. Options A, B, and D are not valid reasons: drill-down works with any hierarchy, not specifically a date table; Power BI can auto-generate date hierarchies from a date field without a dedicated date table; and relationship performance depends on cardinality, cross-filter direction, and model design rather than on the presence of a date table.

67
MCQhard

You are designing a data model in Power BI. You have a 'Sales' table and a 'Date' table. The 'Sales' table has a 'SalesDate' column of type Date. You need to create a relationship between the tables, but the 'Date' table contains dates from 2010 to 2025, while the 'Sales' table only has data from 2020. Which type of relationship should you create to ensure optimal performance and correct filtering?

A.Many-to-one with bi-directional cross-filtering
B.Many-to-one with single cross-filter direction from Date to Sales
C.One-to-one (1:1)
D.Many-to-many (M:M)
AnswerB

This is the correct modeling pattern for a star schema: the Date table contains unique dates, while Sales has multiple rows for each date, so the relationship is many-to-one. With single cross-filter direction from Date to Sales, filtering by a date or a date hierarchy propagates to sales transactions, enabling efficient time-based aggregations. This unidirectional flow is unambiguous, standard, and performs well because it minimizes the filter context path.

Why this answer

A many-to-one relationship with single cross-filter direction from Date to Sales ensures that filters applied to the Date table propagate to the Sales table, which is the standard star schema design. This configuration optimizes query performance by avoiding unnecessary bi-directional filtering and correctly handles the date range mismatch, as the Date table's larger range does not affect filtering of Sales data.

Exam trap

The trap here is that candidates often assume bi-directional filtering is needed for correct filtering, but in a star schema, single-direction filtering from the dimension to the fact table is both sufficient and optimal for performance.

How to eliminate wrong answers

Option A is wrong because bi-directional cross-filtering would force Power BI to evaluate filter context in both directions, which can degrade performance and cause ambiguous filter propagation, especially when the Date table has a superset of dates. Option C is wrong because a one-to-one relationship requires both tables to have unique values in the key columns, which is not the case here (Sales table has multiple rows per date). Option D is wrong because a many-to-many relationship is unnecessary and introduces complexity; it would require a bridge table or special handling, and it does not reflect the actual cardinality where one date can have many sales.

68
MCQeasy

You are reviewing a DAX query in DAX Studio. The exhibit shows a query that returns a table. What is the purpose of the SUMMARIZE function in this query?

A.To group sales by product category and compute total sales
B.To add a calculated column to the Sales table
C.To add a new row for total sales per category
D.To filter the Sales table by Product Category
AnswerA

SUMMARIZE evaluates a table expression over the Sales table, grouping rows by the Product[Category] column and computing the sum of Sales[Amount] for each distinct category. The result is a new two-column table (Category and Total Sales), with one row per category. This is the correct interpretation because SUMMARIZE is explicitly designed for grouped aggregation, not for altering the original table or its schema.

Why this answer

The SUMMARIZE function in DAX is used to group rows from a table based on one or more columns (here, Product Category) and then compute an aggregated value (Total Sales) using a SUM expression. The query returns a new table with one row per category and the corresponding total sales, which is the standard purpose of SUMMARIZE for grouping and aggregation.

Exam trap

The trap here is that candidates confuse SUMMARIZE with functions that add calculated columns (ADDCOLUMNS) or filter tables (FILTER), leading them to pick options B or D, when in fact SUMMARIZE is specifically for grouping and aggregation.

How to eliminate wrong answers

Option B is wrong because SUMMARIZE does not add a calculated column to an existing table; it returns a new table with grouped rows and aggregated columns, whereas calculated columns are added using CALCULATEDCOLUMN or ADDCOLUMNS. Option C is wrong because SUMMARIZE does not add a new row for total sales per category; it creates one row per unique combination of grouping columns, and a grand total row would require a separate function like ROLLUP or GROUPBY. Option D is wrong because SUMMARIZE does not filter the Sales table; filtering is done with functions like FILTER or CALCULATETABLE, while SUMMARIZE only groups and aggregates the existing rows.

69
MCQeasy

You are using Power Query to combine data from multiple CSV files in a folder. Each file has the same structure. You want to append all rows into a single table. Which Power Query function should you use?

A.Group By.
B.Append Queries.
C.Merge Queries as new.
D.Combine Files from the folder connector.
AnswerD

The folder connector's Combine Files operation reads every CSV in the folder, applies the shared table structure as a template, and appends all rows into one table, directly satisfying the requirement to merge identically structured files without manual per-file queries.

Why this answer

The 'Combine Files' transformation in Power Query is specifically designed to import and append multiple CSV files from a folder into a single table. When you connect to a folder using the 'From Folder' connector, Power Query automatically generates a 'Combine Files' step that uses the 'Table.Combine' function under the hood, which appends all rows from identically structured files into one unified table.

Exam trap

The trap here is that candidates often confuse 'Append Queries' (which is a manual, query-level operation) with the automated 'Combine Files' feature that the folder connector provides, leading them to pick Option B instead of recognizing that the folder connector's built-in combine functionality is the correct and intended method for this scenario.

How to eliminate wrong answers

Option A is wrong because 'Group By' is an aggregation operation that groups rows based on column values and computes summaries (e.g., sum, count), not a method to append rows from multiple files. Option B is wrong because 'Append Queries' is a manual operation that combines two or more existing queries in the Power Query Editor, but it is not the direct function used when importing multiple files from a folder; the folder connector's 'Combine Files' is the automated approach. Option C is wrong because 'Merge Queries as new' performs a join (like SQL JOIN) based on matching columns, which combines columns from different tables, not appending rows.

70
MCQeasy

You need to create a measure that calculates the year-over-year growth percentage for sales. Which DAX function combination is most appropriate?

A.CALCULATE with DATEADD and SUM
B.CALCULATE with SAMEPERIODLASTYEAR and DIVIDE
C.TOTALYTD and DIVIDE
D.PREVIOUSMONTH and SUM
AnswerB

CALCULATE modifies the filter context so SAMEPERIODLASTYEAR can shift the current date range back one full year, returning the exact corresponding period from the prior year. DIVIDE then computes the percentage change as (Current - Previous) / Previous, and its third argument handles division by zero by default, preventing errors. This combination is the standard DAX pattern for year-over-year growth and is fully aligned with the requirement.

Why this answer

Option B is correct because SAMEPERIODLASTYEAR returns the equivalent date range shifted back exactly one year, and wrapping it in CALCULATE lets you evaluate the prior-year sales in the current row context; DIVIDE then safely computes the growth ratio (Current − PriorYear) / PriorYear without divide-by-zero errors. This is the standard DAX pattern for year-over-year percentage growth in Power BI and Analysis Services Tabular models. Option A is less appropriate because DATEADD requires an explicit number and interval and is more error-prone for a simple YoY shift, while SAMEPERIODLASTYEAR is purpose-built for this.

Option C's TOTALYTD computes a year-to-date aggregate, not a prior-year comparison, so it cannot produce YoY growth. Option D's PREVIOUSMONTH shifts by one month, not one year, so it answers a month-over-month question instead.

71
MCQhard

Refer to the exhibit. The Power Query M code connects to a SQL Server database and performs data transformation. However, the query is failing with a privacy level error. What is the most likely cause?

A.The SQL Server credentials are not correctly configured in the data source settings.
B.The privacy levels for the SQL Server data source are set inconsistently across the environment.
C.The query uses a CSV file from a local folder that has a privacy level set to 'Private'.
D.The query combines data from SQL Server and another data source with incompatible privacy levels.
AnswerD

This is correct because Power Query's privacy-level engine prevents data from being combined across sources that have incompatible privacy levels, such as a 'Private' CSV file from a local folder and a SQL Server source with a different level. When the query attempts to fold or merge data from these two sources, the engine raises a privacy-level error unless levels are adjusted to allow the combination or a suitable firewall level is configured. The error is specifically triggered by the act of combining the sources, not by the nature of any single source.

Why this answer

A privacy level error in Power Query occurs when combining data from multiple sources with incompatible privacy levels. The query connects to SQL Server and performs transformations, but if it also references another source (e.g., from a previous step or additional data) with a privacy level that conflicts with SQL Server's privacy level, the Power Query firewall blocks the query. In this scenario, the most likely cause is that the query combines SQL Server data with another data source (such as a CSV file or another database) that has a privacy level set to 'Private' while SQL Server is set to 'Organizational' or 'Public', causing the error.

Option D correctly identifies this. Options A and B are incorrect because a single data source cannot cause a privacy level error, and inconsistent privacy levels across environments do not trigger the firewall on a single source.

Exam trap

The trap is that candidates often think a privacy level error requires inconsistent settings on a single source or credentials issues, but the error always involves combining multiple sources. Even if only SQL Server is visible, the query may be implicitly referencing another source.

How to eliminate wrong answers

Option A is wrong because incorrect SQL Server credentials would produce a connection or authentication error (e.g., 'Cannot connect to database'), not a privacy level error. Option C is wrong because a CSV file from a local folder with a privacy level set to 'Private' alone does not cause a privacy level error; the error arises only when combining that CSV with another source that has an incompatible privacy level (e.g., 'Public'), and the question states the query connects to SQL Server, not a CSV. Option D is wrong because while combining data from SQL Server and another source with incompatible privacy levels can cause the error, the question specifically states the query 'connects to a SQL Server database and performs data transformation'—it does not mention combining with another source, so the most likely cause is the inconsistency within the SQL Server source's own privacy level settings across the environment, not a cross-source combination.

72
MCQmedium

You have a Power BI dataset that uses DirectQuery to a SQL Server data warehouse. You need to ensure that when users view reports, they see only data relevant to their department. The data warehouse contains a 'Department' column. What should you implement?

A.Configure the data source credentials to pass the user's identity.
B.Create separate datasets for each department and grant access accordingly.
C.Implement object-level security (OLS) on the 'Department' column.
D.Define row-level security (RLS) roles in Power BI Desktop and assign users.
AnswerD

Define row-level security (RLS) roles in Power BI Desktop by creating a role with a DAX filter—such as an expression using USERPRINCIPALNAME() or a mapping table—that filters the dataset to only the rows relevant to the signed-in user. After publishing, assign users or groups to the role in the Power BI Service, and the filter is automatically applied to all report consumers. This is the standard, supported approach for row-level access in a single dataset, and it works across DirectQuery and Import modes.

Why this answer

The correct option is D: defining row-level security (RLS) roles in Power BI Desktop and assigning users, because RLS filters rows at query time based on the user's identity, so each user sees only the rows matching their department in the 'Department' column, and it works with DirectQuery by translating the filter into the source query. This is the standard, scalable way to enforce per-user data visibility in a single dataset. Option A only controls how credentials are passed to the source and does not by itself filter rows by department.

Option B is inefficient and does not use a single governed dataset, and Option C, object-level security, restricts access to tables or columns rather than filtering rows by department value.

73
MCQmedium

You are preparing a data model that uses a date table. You need to ensure that the date table includes all dates from January 1, 2020 to December 31, 2025. What is the most efficient way to create this date table in Power Query?

A.Import a date table from an Excel file.
B.Use the 'List.Dates' function to generate the date range.
C.Use the 'Calendar' function in Power Query M.
D.Use the 'CALENDAR' DAX function in Power Query.
AnswerB

Using the 'List.Dates' function in Power Query M is the correct approach because it dynamically generates a continuous list of dates from a specified start date, a count of dates, and a step increment, all defined as parameters. You then wrap that list with Table.FromList or convert it into a column, allowing you to create a date table that automatically adapts to your data range without manual maintenance or external file dependencies.

Why this answer

The 'List.Dates' function in Power Query M is the most efficient way to generate a contiguous range of dates directly within the query editor, without external dependencies. It creates a list of dates from a start date to an end date using a specified step (e.g., #duration(1,0,0,0) for one day), which can then be converted into a table. This approach is lightweight, fully self-contained, and avoids the overhead of importing external files or using DAX functions that are not native to Power Query.

Exam trap

The trap here is that candidates confuse DAX functions (like 'CALENDAR') with Power Query M functions, assuming they can be used interchangeably in the Power Query editor, when in fact DAX functions are only available in the data modeling layer (e.g., calculated tables) and not in Power Query.

How to eliminate wrong answers

Option A is wrong because importing a date table from an Excel file introduces an external dependency, requires manual maintenance, and is less efficient than generating the dates natively in Power Query. Option C is wrong because there is no built-in 'Calendar' function in Power Query M; the correct M function is 'List.Dates' or the 'Date' functions, and 'Calendar' is a DAX function, not an M function. Option D is wrong because 'CALENDAR' is a DAX function used in Power Pivot or Analysis Services, not in Power Query; Power Query uses M language, and DAX functions cannot be used directly in the Power Query editor.

74
Multi-Selecthard

Which THREE of the following are best practices for data preparation in Power BI to improve performance and maintainability? (Select THREE.)

Select 3 answers
A.Filter out unnecessary rows as early as possible in the query
B.Avoid renaming columns in Power Query; use original names
C.Use query folding to push transformations back to the source
D.Split complex queries into multiple steps for clarity
E.Keep all columns from the source to avoid missing data
AnswersA, C, D

Early filtering reduces data volume and improves performance.

Why this answer

Filtering out unnecessary rows early in Power Query reduces the amount of data loaded into memory and processed in subsequent transformation steps. This practice, known as early filtering, minimizes the data footprint and improves both refresh performance and report responsiveness. By applying filters as the first transformation, you leverage query folding to push the filter logic to the source database, further enhancing efficiency.

Exam trap

The trap here is that candidates often confuse 'maintainability' with 'avoiding changes to source names,' but Power BI encourages renaming for clarity, and the real performance pitfall is keeping unnecessary columns, not renaming them.

75
MCQhard

You are developing a Power BI semantic model that must combine data from an on-premises SQL Server database and a SharePoint Online list. The organization requires that credentials for the on-premises data source be stored securely and not shared with users. Which data connectivity approach should you use?

A.Use an on-premises data gateway and store the SQL Server credentials in the gateway data source settings
B.Use DirectQuery with single sign-on for the SQL Server database
C.Export the SQL Server data to an Excel file stored in SharePoint and then import from SharePoint
D.Import data from SQL Server using Windows authentication embedded in the data source settings
AnswerA

Using an on-premises data gateway is the recommended approach because it securely bridges Power BI service to your on-premises SQL Server. Storing the SQL Server credentials in the gateway's data source settings keeps them encrypted and accessible only to gateway administrators, enabling scheduled refreshes without requiring individual users to have database permissions. This also supports row-level security mapping when needed, making it a secure and scalable solution.

Why this answer

Using an on-premises data gateway with credentials stored in the gateway data source settings allows the Power BI service to securely connect to the on-premises SQL Server without exposing credentials to users. The gateway acts as a secure bridge, storing the SQL Server credentials encrypted in the gateway configuration, which satisfies the requirement that credentials not be shared with users.

Exam trap

The trap is that candidates often choose DirectQuery with SSO (Option B) thinking it avoids credential sharing, but SSO relies on each user's own credentials and requires granting users direct database access, which violates the requirement that credentials be stored securely and not shared with users. The correct approach is to use a gateway with centrally stored credentials.

How to eliminate wrong answers

Option B is wrong because DirectQuery with single sign-on (SSO) would pass the user's own identity to the SQL Server, which requires users to have direct database permissions and does not store credentials securely for the organization; it also does not work with SharePoint Online lists in a combined model without a gateway. Option C is wrong because exporting SQL Server data to an Excel file in SharePoint bypasses the requirement for secure credential storage and introduces data staleness, manual refresh, and security risks from file-based sharing. Option D is wrong because embedding Windows authentication credentials in the data source settings would store the credentials in the Power BI model metadata, which is not secure and would be exposed to users who have access to the dataset settings.

Page 1 of 7

Page 2

All pages