Free DP-600 practice test

20 questions for the Microsoft Fabric Analytics Engineer Associate (DP-600) exam, taken from our 250-question bank and spread across its 3domains by their weighting. No sign-up needed: pick an answer to check it, or open “Show answer & explanation” under any question.

What this test covers

Question 1 · Maintain a data analytics solution

A Fabric administrator at Southridge Video is implementing security for a warehouse. The requirement is that members of the 'Finance' role should not be able to see the 'SalaryAmount' and 'BonusAmount' columns in the 'EmployeeCompensation' table, but should be able to query all other columns in that table. Which security mechanism should be implemented directly on the Fabric Warehouse to satisfy this requirement?

Show answer & explanation

Correct answer: B

  • B. Column-level security (CLS) using T-SQL GRANT and DENY permissions on the specific columns

Column-level security on a Fabric Warehouse is implemented using T-SQL GRANT/DENY statements on specific columns (e.g., DENY SELECT ON EmployeeCompensation (SalaryAmount, BonusAmount) TO [FinanceRole]). This restricts column access at the warehouse engine level. Row-level security (Option A) restricts which rows are visible based on a predicate, not which columns — it does not address column visibility. Object-level security (Option C) is a semantic model–layer feature that hides tables or columns from the model perspective; it does not enforce security at the warehouse storage/query engine level, so users with direct warehouse access would bypass it. Workspace role assignment (Option D) controls whether users can access the workspace and its items, but does not restrict specific columns within a table.

Question 2 · Maintain a data analytics solution

Tailspin Toys has a Microsoft Fabric lakehouse containing a Delta table called SalesTransactions. Analysts must be prevented from viewing the CreditCardNumber and SSN columns. Other columns in the same table must remain fully accessible. The solution must apply to all query paths against the lakehouse, including the SQL analytics endpoint and direct Spark queries. Which TWO actions should be taken to implement this requirement? (Select TWO.)

Select 2 answers.

Show answer & explanation

Correct answers: E, F

  • E. Create a OneLake data access role and define a column mask or column restriction on the CreditCardNumber and SSN columns within the lakehouse
  • F. Enable column-level security in the SQL analytics endpoint by revoking SELECT permission on the restricted columns for the analyst role

To restrict specific columns across all query paths, two complementary controls are needed. First, revoking SELECT permission on CreditCardNumber and SSN columns via the SQL analytics endpoint enforces column-level security for SQL-based queries. Second, defining column restrictions within a OneLake data access role applies the restriction at the OneLake storage layer, covering Spark and other non-SQL query paths. Together, these two controls enforce the requirement across all access methods. A sensitivity label classifies and potentially encrypts the item for export/sharing purposes but does not prevent analysts from reading column values during a live query. Defining CLS on a shared semantic model only protects access through that specific model; analysts querying the lakehouse directly via Spark or SQL would bypass it. Removing and relocating columns is a data architecture change that is destructive and operationally complex—not an access control mechanism. Hiding the entire table via object-level security would deny access to all columns, violating the requirement that other columns remain accessible.

Question 3 · Maintain a data analytics solution

A Fabric platform team at Southridge Video is designing workspace-level security for a new analytics project. They need to choose the MINIMUM workspace role for a group of report developers who must be able to publish new reports, create and edit datasets, and share content with other users, but must NOT be able to add or remove workspace members or change workspace settings. Which role should be assigned?

Show answer & explanation

Correct answer: C

  • C. Member

Option C (Member) is correct. The Member role allows users to publish and edit reports and semantic models, and to share content with others — but it does not allow managing workspace membership or changing workspace-level settings, which requires the Admin role. Option A (Viewer) is wrong because Viewers can only read and interact with content; they cannot publish, create, or share items. Option B (Contributor) is wrong because Contributors can publish and edit content but cannot share items with others — sharing requires at least the Member role. Option D (Admin) is wrong because while Admins have all required permissions, it also grants the ability to add/remove members and change workspace settings, which violates the principle of least privilege given the stated requirements.

Question 4 · Maintain a data analytics solution

A governance team at Wingtip Toys applies a 'Highly Confidential' Microsoft Purview sensitivity label to a semantic model in Microsoft Fabric. Which TWO behaviors will automatically occur as a result of applying this label? (Choose two.)

Select 2 answers.

Show answer & explanation

Correct answers: A, E

  • A. The label is inherited by downstream reports and dashboards built on top of the semantic model.
  • E. Exports of data from the semantic model (e.g., to Excel) will carry the 'Highly Confidential' label on the exported file.

Sensitivity label inheritance means that when a label is applied to a semantic model, downstream artifacts (reports, dashboards) that are built on it automatically inherit the same label — ensuring consistent classification across the lineage. Additionally, when data is exported from a labeled semantic model (e.g., Analyze in Excel, export to .xlsx), the exported file carries the label and its associated protection policies. Row-level security is a separate feature that must be explicitly configured; sensitivity labels do not activate RLS. Sensitivity labels do not move items to isolated capacities. Labels do not revoke existing workspace permissions; access control and classification are independent mechanisms.

Question 5 · Maintain a data analytics solution

A senior BI developer is building a large semantic model in Microsoft Fabric using Power BI Desktop. The team uses Git for source control. The developer wants to check individual model changes into Git as discrete, human-readable files rather than committing a binary .pbix file. Which project format should the developer use when saving the work in Power BI Desktop?

Show answer & explanation

Correct answer: A

  • A. Save the project as a .pbip (Power BI Project) folder structure and commit the folder to Git

The Power BI Project (.pbip) format saves the report and semantic model as a folder of human-readable text files (JSON, TMDL, etc.), making it ideal for Git-based source control because individual property changes appear as granular diffs. A .pbix file is a binary format; while it can technically be committed to Git, changes are not human-readable, so diffing and reviewing individual changes is not practical. A .pbit template file is also partially binary and does not produce meaningful line-by-line diffs in Git. Using the workspace's built-in version history (Git integration via Fabric workspace settings) is valuable but requires the project to be in .pbip format on disk first; simply publishing a .pbix does not give the developer local, discrete, human-readable file changes.

Question 6 · Maintain a data analytics solution

Northwind Traders uses Microsoft Fabric deployment pipelines with three stages: Development, Test, and Production. A data analyst updates a dataflow in the Development stage and deploys it to Test. A business analyst reports that a Power BI report in the Test workspace is now returning unexpected results. Before deploying further, the Fabric administrator wants to understand which downstream items in the Test workspace depend on the updated dataflow. Which feature should the administrator use?

Show answer & explanation

Correct answer: C

  • C. Use the 'Impact analysis' feature on the dataflow item in the Test workspace

Impact analysis is the feature in Microsoft Fabric (and Power BI service) that shows all downstream items—such as semantic models, reports, and other dataflows—that depend on a specific item. By opening the dataflow in the Test workspace and selecting 'Impact analysis,' the administrator can see a lineage view of all affected downstream items and notify their owners. The deployment pipeline's 'Compare' view shows differences in item definitions between pipeline stages (e.g., what changed in the dataflow itself), not which downstream items depend on it. The scheduled refresh history shows past refresh run statuses, not dependency relationships. Git commit history shows what code/configuration changed over time but does not reveal downstream consumer relationships.

Question 7 · Prepare data

A Fabric data engineer at Contoso is designing a KQL query against an Eventhouse table named NetworkTraffic with columns: EventTime (datetime), SourceIP (string), DestinationIP (string), BytesSent (long), Protocol (string). The engineer must write a query that: (1) filters to only TCP traffic from the last 24 hours, (2) summarizes total BytesSent per SourceIP in 1-hour bins, and (3) returns only SourceIPs where the total BytesSent in any single bin exceeds 1 GB (1,073,741,824 bytes). Which KQL query correctly satisfies all three requirements?

Show answer & explanation

Correct answer: A

  • A. NetworkTraffic | where EventTime >= ago(24h) and Protocol == 'TCP' | summarize TotalBytes = sum(BytesSent) by SourceIP, bin(EventTime, 1h) | where TotalBytes > 1073741824

A is correct. It filters to TCP traffic from the last 24 hours, sums BytesSent per SourceIP in 1-hour bins with summarize ... by SourceIP, bin(EventTime, 1h), and then keeps only the bins whose total exceeds 1 GB. B is wrong: it summarizes per SourceIP over the whole 24-hour window with no hourly binning, so it does not meet requirement (2). C is wrong: it applies the 1 GB filter to individual events before summarizing, so it only counts single events larger than 1 GB and misses SourceIPs whose many smaller events add up to more than 1 GB in an hour. D is wrong: bin() is a scalar function used inside summarize or an expression; it cannot be used as a standalone tabular operator in the pipe chain, so the query fails.

Question 8 · Prepare data

A Fabric data engineer at Wide World Importers is working in a Fabric Warehouse. They have a staging table named StageProducts (columns: ProductID int, ProductName varchar, CategoryID int, UnitPrice decimal, RowHash varchar) and a target dimension table named DimProducts with the same columns plus IsActive bit and EffectiveDate date. The engineer must implement a Type 1 SCD pattern: update existing rows when any non-key attribute changes (detected via RowHash) and insert new products. They write the following T-SQL:

MERGE INTO DimProducts AS tgt
USING StageProducts AS src
  ON tgt.ProductID = src.ProductID
WHEN MATCHED AND tgt.RowHash <> src.RowHash
  THEN UPDATE SET
    tgt.ProductName = src.ProductName,
    tgt.CategoryID  = src.CategoryID,
    tgt.UnitPrice   = src.UnitPrice,
    tgt.RowHash     = src.RowHash
WHEN NOT MATCHED BY TARGET
  THEN INSERT (ProductID, ProductName, CategoryID, UnitPrice, RowHash, IsActive, EffectiveDate)
  VALUES (src.ProductID, src.ProductName, src.CategoryID, src.UnitPrice, src.RowHash, 1, GETDATE());

The engineer runs the statement and it executes without error, but they notice that products deleted from the source are not being deactivated (IsActive set to 0) in DimProducts. What should they add to the MERGE statement to fix this?

Show answer & explanation

Correct answer: A

  • A. Add a WHEN NOT MATCHED BY SOURCE THEN UPDATE SET tgt.IsActive = 0 clause to the MERGE statement.

WHEN NOT MATCHED BY SOURCE fires for rows that exist in the target (DimProducts) but not in the source (StageProducts) — exactly the condition for a 'soft delete.' Adding THEN UPDATE SET tgt.IsActive = 0 implements the deactivation without physically deleting rows, which is the correct Type 1 SCD soft-delete pattern. — B is wrong because WHEN NOT MATCHED BY SOURCE THEN DELETE would physically remove the rows from DimProducts, which destroys historical records and is not a Type 1 SCD pattern (and may also violate referential constraints). C is wrong because filtering StageProducts in the USING clause to only active records would prevent new products from being inserted correctly and does not address the deactivation logic. D would work functionally but is not the correct approach when MERGE already supports WHEN NOT MATCHED BY SOURCE; using a separate UPDATE is unnecessary, less atomic, and not the idiomatic T-SQL solution the question asks about.

Question 9 · Prepare data

A Fabric data engineer is preparing data in a Fabric Lakehouse using a PySpark notebook. A Delta table named RawSales contains a column UnitPrice of type string. Many rows contain the value 'N/A' instead of a numeric price. The engineer must convert UnitPrice to a double type and replace all 'N/A' values with NULL before writing the cleaned table.

Which PySpark approach correctly accomplishes this?

Show answer & explanation

Correct answer: C

  • C. Replace 'N/A' with None using df.replace('N/A', None, subset=['UnitPrice']), then cast the column to DoubleType

Option C is correct. Using df.replace('N/A', None, subset=['UnitPrice']) converts the string 'N/A' to a Python None (which becomes NULL in Spark), and then casting to DoubleType will correctly produce NULL for those rows — preserving all rows while fixing the data type. Option A is wrong: Spark does not automatically convert 'N/A' to NULL when casting; the cast will produce NULL but also throws runtime errors or returns NULL for valid numeric strings if the original value was unexpectedly non-numeric — more critically, 'N/A' becomes NULL during cast anyway, but the engineer's intent is explicit replacement before cast for clarity and correctness, and relying on implicit cast behavior for 'N/A' is not a best practice. Option B is wrong: dropna removes rows with actual NULL values, not the string 'N/A' — the rows would not be dropped. Option D is wrong: filtering removes the rows entirely instead of replacing the value with NULL, which loses data that should be retained with a NULL price.

Question 10 · Prepare data

A Fabric solution architect at Bellows College is evaluating data store options for three distinct workloads: (1) a compliance audit log that must retain 2 years of event data with millisecond-precision timestamps and requires time-series aggregation queries, (2) a curated product catalogue that analysts query with complex multi-table T-SQL JOINs and stored procedures, and (3) a large raw data landing zone for files ingested from various sources that must be queried by both Spark notebooks and SQL. Which mapping of workload to Fabric data store is correct?

Show answer & explanation

Correct answer: C

  • C. Workload 1 → Eventhouse, Workload 2 → Warehouse, Workload 3 → Lakehouse

Eventhouse (KQL database) is purpose-built for time-series and log analytics with high-precision timestamps, making it ideal for Workload 1. Fabric Warehouse provides a full T-SQL engine with stored procedures and multi-table joins for structured relational workloads like the product catalogue (Workload 2). Fabric Lakehouse is designed as a multi-format data landing zone accessible by both Spark and SQL via the analytics endpoint (Workload 3). Option A is incorrect because placing a time-series audit log in a Lakehouse misses the native time-series operators and optimised ingestion of Eventhouse, and Eventhouse is not suited for raw multi-format file landing. Option B is incorrect because a Warehouse is not optimised for log/event time-series analytics, and Eventhouse does not support T-SQL stored procedures. Option D is incorrect because Lakehouse SQL analytics endpoint is read-only and does not support stored procedures, making it unsuitable for Workload 2.

Question 11 · Prepare data

A Fabric data engineer is designing a solution for a retail client. Historical transaction data (3 years, ~2 TB) needs to support complex ad-hoc SQL analytics with multi-table joins, ACID transactions, and role-level security managed via T-SQL GRANT statements. Which Fabric data store is the best fit?

Show answer & explanation

Correct answer: D

  • D. Fabric Warehouse

Fabric Warehouse is the best fit because it is a fully managed, SQL-first data warehouse that supports complex multi-table joins, ACID transactions at the table level, and fine-grained T-SQL GRANT/DENY role-based security — all requirements listed in the scenario. Lakehouse with SQL analytics endpoint provides read-only SQL access over Delta tables; it does not support DDL/DML write operations via the SQL endpoint and has limited support for T-SQL GRANT-based security at the object level. Eventhouse is optimised for streaming, time-series, and KQL-based analysis; it does not support T-SQL GRANT security or the relational multi-table join patterns expected in traditional data warehousing. Datamart is positioned for small, self-service departmental datasets; it lacks the scalability (2 TB+) and enterprise security controls required by this scenario.

Question 12 · Prepare data

A data analyst at Contoso is working in the OneLake catalog in Microsoft Fabric. They want to find data assets that have been certified by their organization's data governance team and that relate to the subject area 'Finance'. Which two actions should they take in the OneLake catalog to narrow down the results? (Select TWO.)

Select 2 answers.

Show answer & explanation

Correct answers: A, E

  • A. Apply the 'Endorsed: Certified' filter in the catalog filter panel
  • E. Use the search bar to search for the keyword 'Finance'

Option A is correct: The OneLake catalog provides an 'Endorsed: Certified' filter that specifically surfaces items that have been certified by the organization's governance team, which is exactly the requirement. Option E is correct: Using the search bar with the keyword 'Finance' will filter catalog items whose names or descriptions match the subject area. Option F is wrong because 'Promoted' endorsement is a lighter-weight endorsement that does not require governance team approval — it does not satisfy the 'certified' requirement. Option D is wrong because the Real-Time hub is used for discovering streaming data sources, not for general catalog discovery with endorsement filters. Option C is wrong because filtering by 'KQL Database' would unnecessarily exclude other item types (like Lakehouse tables or Warehouses) that may be certified Finance assets. Option B is wrong because sensitivity labels indicate data sensitivity for compliance, not governance certification status.

Question 13 · Prepare data

A Fabric data engineer at Northwind Traders is designing a star schema in a Fabric Lakehouse. The FactSales table (800 million rows) needs to be joined with DimDate, DimCustomer, and DimProduct. The engineer wants to optimize query performance for large aggregation queries. Which THREE design decisions will most improve query performance for this workload? (Select THREE.)

Select 3 answers.

Show answer & explanation

Correct answers: A, B, F

  • A. Regularly run OPTIMIZE on the FactSales Delta table to compact small files
  • B. Use Delta table Z-ordering on frequently filtered non-partition columns such as ProductID and CustomerID
  • F. Partition the FactSales Delta table by a commonly filtered column such as SalesYear or SalesMonth

Option F is correct: Partitioning the fact table on a high-cardinality date column (e.g., SalesYear) enables partition pruning, so queries filtering by date only scan relevant partitions rather than the entire 800M-row table. Option B is correct: Z-ordering co-locates related data on disk for non-partition filter columns (like ProductID, CustomerID), reducing the amount of data read during file scans and improving join performance. Option A is correct: Running OPTIMIZE compacts many small Delta files into larger, efficiently readable Parquet files, significantly reducing file listing and I/O overhead on large tables. Option D is wrong because storing everything in a single denormalized flat file eliminates the star schema benefits, makes updates and maintenance difficult, and can actually harm query performance for certain analytical patterns. Option C is wrong because while foreign key constraints are valuable for data integrity, Fabric Lakehouse Delta tables do not enforce foreign key constraints at the engine level — defining them provides no query performance benefit. Option E is wrong because replacing materialized Delta tables with views means dimension data must be recomputed on every query rather than read from stored, optimized Parquet files, which would degrade rather than improve performance.

Question 14 · Prepare data

A Fabric data engineer needs to implement a MERGE operation in a Fabric Warehouse to upsert data from a staging table named StageProducts into a target table named DimProducts. Rows that match on ProductCode should be updated (updating ProductName and ListPrice); rows in the staging table with no match should be inserted. Which T-SQL MERGE statement is correct?

Show answer & explanation

Correct answer: A

  • A. MERGE INTO dbo.DimProducts AS target USING dbo.StageProducts AS source ON target.ProductCode = source.ProductCode WHEN MATCHED THEN UPDATE SET target.ProductName = source.ProductName, target.ListPrice = source.ListPrice WHEN NOT MATCHED BY TARGET THEN INSERT (ProductCode, ProductName, ListPrice) VALUES (source.ProductCode, source.ProductName, source.ListPrice);

Option A is correct: it uses valid T-SQL MERGE syntax with MERGE INTO, USING, ON for the match condition, WHEN MATCHED for the update, and WHEN NOT MATCHED BY TARGET for inserts of new rows — this is the correct and complete syntax for an upsert in Fabric Warehouse T-SQL. Option C is incorrect because the UPDATE clause syntax 'UPDATE target SET ...' is invalid in T-SQL MERGE — the correct syntax within the MATCHED clause is 'UPDATE SET target.column = source.column' without repeating the target alias after UPDATE. Option B is incorrect because WHEN NOT MATCHED BY SOURCE means rows in the target that have no match in the source — this would incorrectly apply INSERT logic to target-only rows (which doesn't make sense; inserts from source use WHEN NOT MATCHED BY TARGET). Option D is incorrect because UPSERT is not a valid T-SQL statement — it is a concept, not a T-SQL keyword; ON CONFLICT is PostgreSQL syntax, not valid in Fabric Warehouse.

Question 15 · Prepare data

A Fabric data engineer is designing a Lakehouse for Proseware Inc. The data team ingests raw CSV files daily into the Files section. A business rule states that any row where the column 'Revenue' is negative must be flagged as invalid and moved to a separate 'quarantine' Delta table instead of being loaded into the main FactRevenue Delta table. The engineer is writing a PySpark notebook. Which approach correctly implements this logic?

Show answer & explanation

Correct answer: A

  • A. df = spark.read.csv('Files/raw/revenue.csv', header=True, inferSchema=True) df_valid = df.filter(col('Revenue') >= 0) df_invalid = df.filter(col('Revenue') < 0) df_valid.write.format('delta').mode('append').saveAsTable('FactRevenue') df_invalid.write.format('delta').mode('append').saveAsTable('QuarantineRevenue')

Option A is correct: it reads the CSV, splits into valid (Revenue >= 0) and invalid (Revenue < 0) sets using clear, complementary filter conditions, and writes both to Delta tables using saveAsTable — which is the correct approach for writing to Lakehouse Delta tables. Option C is incorrect because it quarantines rows where Revenue == None (which is not how you check for NULL in PySpark — you need isNull()), not rows where Revenue < 0; it fails to correctly identify negative revenue rows. Option D is incorrect because dropna(subset=['Revenue']) removes NULL rows, not negative rows — so valid non-null negative rows could still pass to FactRevenue, violating the business rule. Option B is incorrect because it writes the valid data in Parquet format to a path (not as a managed Delta table), which would not register the table properly in the Lakehouse, and it quarantines NULLs rather than negative values as specified.

Question 16 · Implement and manage semantic models

A senior developer needs to write a DAX measure that calculates cumulative (running total) sales from the beginning of the current year up to the latest date available in the data, using the WINDOW function. The model has a DimDate table with a Date column and a measure [Total Sales]. Which DAX expression correctly implements this using WINDOW?

Show answer & explanation

Correct answer: B

  • B. YTD Sales = CALCULATE([Total Sales], WINDOW(1, ABS, 0, REL, ALL(DimDate[Date]), ORDERBY(DimDate[Date], ASC)))

WINDOW(1, ABS, 0, REL, ALL(DimDate[Date]), ORDERBY(DimDate[Date], ASC)) defines a window that starts at absolute position 1 (the first row in the ordered partition, i.e., the first date of all time) and ends at relative position 0 (the current row). This creates a running total from the very beginning of the data to the current date. Using ALL ensures all dates are considered regardless of filter context, which is appropriate for a cumulative total. Option C uses ALLSELECTED, which would respect slicer filters and could truncate the window start if a date slicer is applied. Option A (DATESYTD) is a valid YTD approach but does not use WINDOW as specified. Option D uses REL for the start position (-1, REL) which means 'one row before the current row,' producing a one-row lag rather than starting from the beginning of the dataset.

Question 17 · Implement and manage semantic models

A Fabric data engineer wants to implement incremental refresh on a semantic model. The source is an Azure SQL Database table with 5 years of historical data. The engineer wants to refresh only the last 3 days of data on each scheduled refresh and retain 2 years of history. Which two steps are REQUIRED to configure incremental refresh correctly? (Select TWO.)

Select 2 answers.

Show answer & explanation

Correct answers: B, F

  • B. Apply a Power Query filter on the date column using the RangeStart and RangeEnd parameters
  • F. Define RangeStart and RangeEnd parameters of type Date/Time in Power Query

Incremental refresh requires two mandatory steps: (1) creating RangeStart and RangeEnd parameters of type Date/Time in Power Query — these are the sentinel parameters that Power BI uses to define partition boundaries; and (2) applying a filter on the date column using those parameters so Power BI can fold the query and create incremental partitions. Large semantic model storage format is optional and not required for incremental refresh to function. Change detection is an optional enhancement to trigger refresh only when data changes, not a requirement. Publishing to Premium/Fabric capacity is necessary to actually use the defined policy, but the question asks about configuring incremental refresh — the policy definition itself (steps 1 and 2) is workspace-agnostic. Converting the date column to text breaks query folding and would prevent incremental refresh from working.

Question 18 · Implement and manage semantic models

A Fabric data engineer is troubleshooting a Direct Lake semantic model. During peak reporting hours, some visuals display data that is several hours old even though the underlying Delta tables in OneLake are updated every 30 minutes. The engineer checks and confirms that no explicit semantic model refresh has been triggered. What is the most likely cause of this behavior?

Show answer & explanation

Correct answer: B

  • B. The Delta table's transaction log has not been checkpointed recently, so Direct Lake is reading an older snapshot.

Direct Lake reads data based on the Delta table's transaction log checkpoint (framing). If the checkpoint has not been written recently—because the Delta table uses many small transaction log entries without a consolidated checkpoint—Direct Lake may reference an older data snapshot. The engineer should run OPTIMIZE or ensure the pipeline checkpoints the Delta log so Direct Lake picks up a fresh frame. Exceeding the capacity SKU row limit (A) causes fallback to DirectQuery, which would show current data (not stale data), making this incorrect. V-Order (D) is a write optimization for query speed; its absence does not cause stale data. Automatic page refresh (C) controls how often visuals re-query the model but does not cause the model itself to show stale data from a checkpoint perspective.

Question 19 · Implement and manage semantic models

A Power BI developer is building a semantic model in Fabric. They need to choose a storage mode for a fact table containing 500 million rows sourced from a Delta table in OneLake. The primary requirement is that the data is always current without requiring scheduled refreshes, and query performance must remain fast without fallback to DirectQuery. Which storage mode should the developer configure for this table?

Show answer & explanation

Correct answer: D

  • D. Direct Lake

Direct Lake reads Delta table data directly from OneLake using VertiPaq in-memory processing, providing near real-time data currency without traditional scheduled refreshes and without the latency of DirectQuery. Import requires scheduled refreshes to stay current and has a data size limit concern at 500 million rows. DirectQuery against the SQL analytics endpoint avoids refresh but sacrifices performance because every query hits the SQL endpoint, risking fallback behavior. Dual mode is only meaningful in composite models to allow a table to act as either Import or DirectQuery depending on the query context; it cannot by itself eliminate DirectQuery fallback for a single table.

Question 20 · Implement and manage semantic models

A developer is writing a DAX measure to calculate the percentage of total sales that each product contributes, relative to all products regardless of any slicer selections on ProductCategory. The model contains DimProduct with columns ProductName and ProductCategory, and a measure [Total Sales]. Which DAX expression is correct?

Show answer & explanation

Correct answer: B

  • B. % of All Products = DIVIDE([Total Sales], CALCULATE([Total Sales], ALL(DimProduct)))

ALL(DimProduct) removes all filters from every column of DimProduct, so the denominator calculates total sales across all products regardless of any slicer on ProductName or ProductCategory. This gives the correct 'percentage of all products' result. Option A uses ALLSELECTED, which only removes filters applied by the visual but respects slicers — this would give 'percentage of selected products,' not all products. Option C uses REMOVEFILTERS on only ProductCategory, which still leaves filters on ProductName active, so the denominator would not represent all products. Option D uses ALL(DimProduct[ProductCategory]) which removes the category filter but leaves filters on other DimProduct columns (like ProductName) intact, which could produce incorrect results when ProductName is on a visual or slicer.

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

230 more DP-600 questions

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

Microsoft Fabric Analytics Engineer Associate course overview and study guides →