CertGrid
Microsoft Certification

DP-600: Microsoft Fabric Analytics Engineer Associate Practice Exam

Validates implementing analytics solutions with Microsoft Fabric - maintaining a data analytics solution (security, governance, and the development lifecycle), preparing and transforming data in lakehouses and warehouses, and implementing and optimizing semantic models with DAX and Direct Lake.

Start with a free DP-600 practice test, then work through 791 exam-style questions with full answer explanations, and take timed mock exams that score like the real thing.

791
Practice pool
40-60 qs
Real exam (typical)
100 min
Real exam time
Intermediate
Level
700 / 1000
Passing score

CertGrid runs a fixed 50-question timed mock, separate from the real exam format above.

Objective-mapped practice, aligned to current exam objectives · Reviewed Aug 2026 · Independent practice platform.

What the DP-600 exam covers

Free DP-600 practice test questions

A sample of 10 questions with answers and explanations. Sign up free to practice all 791.

  1. Question 1Maintain a data analytics solution

    You have a Microsoft Fabric workspace at Contoso. A business user must be able to view existing Power BI reports in the workspace but must not create, edit, or delete any items. You want to follow the principle of least privilege. Which workspace role should you assign?

    • AViewerCorrect
    • BContributor
    • CMember
    • DAdmin
    ✓ Correct answer: A

    The Viewer role is correct because it grants strictly read-only access to workspace content, letting Contoso's business user open and interact with existing Power BI reports and dashboards without any ability to create, modify, or delete items. This maps directly to the principle of least privilege: the role's rights should match exactly what the job requires, and viewing reports requires no edit capability at all. Contributor, Member, and Admin each add layers of edit or management rights beyond that need, from creating and deleting content up to full workspace administration, so assigning any of them would over-provision access for a pure consumer. The takeaway is that whenever a user only needs to look at existing Power BI content, Viewer is the correct starting point, and any broader role should be justified by an actual editing or management requirement.

    Why the other options are wrong
    • BContributor can create, edit, and delete items such as reports and datasets in the workspace, which grants far more than the read-only access this report consumer needs.
    • CMember includes everything Contributor can do plus adding users and resharing items, layering on user-management rights that a pure report viewer has no reason to hold.
    • DAdmin has full control of the workspace, including deleting it entirely and managing all other administrators, which is drastically more than viewing reports requires.
  2. Question 2Maintain a data analytics solution

    In a warehouse at Blue Yonder, a group is a member of one role that is granted SELECT on a table and another role that is denied SELECT on the same table. What is the effective access?

    • ANo access, because DENY overrides GRANTCorrect
    • BFull access, because GRANT overrides DENY
    • CAccess that alternates per session at random
    • DAccess decided by the order the statements ran
    ✓ Correct answer: A

    The effective access is none, because when a principal's permissions are combined from multiple role memberships, a DENY at a given scope always takes precedence over any GRANT at that same or a broader scope. The concept is permission precedence in T-SQL security: DENY is designed as an override you can use to carve out an exception for a specific group even when another role would otherwise allow access, and the engine applies it deterministically regardless of which statement ran first or which role was assigned more recently. Takeaway: whenever a DENY exists anywhere in a principal's role chain for an object, it wins.

    Why the other options are wrong
    • BGRANT does not take priority over DENY when both apply to the same principal; the deny is what determines the outcome.
    • CPermission evaluation for combined role memberships is deterministic and repeatable, not something that varies randomly between sessions.
    • DThe order in which the GRANT and DENY statements were executed does not matter; DENY consistently overrides GRANT regardless of sequence.
  3. Question 3Maintain a data analytics solution

    A developer made several experimental edits in a Git-connected workspace but decides not to keep them, and wants the affected items restored to match the last committed version in the branch. What is the simplest way to do this?

    • ADelete each modified item and manually rebuild it from scratch.
    • BDisconnect the workspace from Git and then reconnect it later.
    • CCommit the changes and then create a manual revert commit to undo them all.
    • DUse Undo in the source control panel to discard the uncommitted changes.Correct
    ✓ Correct answer: D

    The Undo action in the source control panel reverts the selected uncommitted items in the workspace back to the last committed state recorded in the branch, discarding the experimental edits in a single step. This is the simplest and safest way to abandon changes that were never meant to be kept, since it requires no manual rebuilding and leaves no unwanted commit in the branch's history. Deleting and rebuilding items by hand is unnecessary and risks introducing new mistakes, disconnecting from Git does not restore anything, and committing the unwanted changes only to revert them afterward creates extra history for no benefit.

    Why the other options are wrong
    • ADeleting each modified item and rebuilding it from scratch is far more work than necessary and risks introducing new errors.
    • BDisconnecting the workspace from Git does not restore any item to its last committed version; it simply removes the Git link.
    • CCommitting the unwanted changes and then creating a manual revert commit is a slower, messier path than simply undoing the uncommitted edits directly.
  4. Question 4Prepare data

    In a Dataflow Gen2 at Northwind, you must combine a customers query and an orders query into one result by matching on CustomerID, keeping only rows that exist in both. Which Power Query operation should you use?

    • AAppend queries to stack the customers and orders rows together.
    • BGroup by CustomerID to aggregate the combined result rows.
    • CReference the customers query from inside the orders query.
    • DMerge queries with an inner join on the CustomerID column.Correct
    ✓ Correct answer: D

    Merge queries in Power Query joins two queries on one or more key columns, and choosing the inner join kind returns only the rows that have a match in both inputs, which is the SQL-equivalent inner join Northwind needs to combine customers and orders on CustomerID while keeping just the matching rows. Append queries stacks rows from queries with the same columns rather than joining on a key, so it would not combine the two tables side by side at all. Group By aggregates rows within a single table and does not perform a keyed join between two separate queries, and Reference simply reuses one query as the starting point for another without performing any join logic. Remember: for a keyed, matches-only combination of two tables, Merge with inner join is the tool.

    Why the other options are wrong
    • AAppend queries stacks rows from queries with matching columns; it does not join two queries on a key column at all.
    • BGroup By aggregates rows within one table into summaries; it does not combine two separate queries on a shared key.
    • CReference reuses a query's output as a new query's starting point; it performs no join between customers and orders.
  5. Question 5Prepare data

    You need the total SalesAmount per ProductCategory from FactSales in the Wide World Analytics warehouse. Which query is correct?

    • ASELECT ProductCategory, SUM(SalesAmount) FROM FactSales GROUP BY ProductCategoryCorrect
    • BSELECT ProductCategory, SUM(SalesAmount) FROM FactSales ORDER BY ProductCategory
    • CSELECT ProductCategory, SalesAmount FROM FactSales GROUP BY ProductCategory
    • DSELECT DISTINCT ProductCategory, SUM(SalesAmount) FROM FactSales
    ✓ Correct answer: A

    The query that selects ProductCategory alongside SUM(SalesAmount) and groups by ProductCategory is correct because GROUP BY collapses the rows into one group per category, and SUM aggregates SalesAmount within each of those groups, producing exactly one total per category. The key concept is that any non-aggregated column in the SELECT list must also appear in the GROUP BY clause, or the query is invalid; conversely, using ORDER BY in place of GROUP BY does not create groups at all. Selecting SalesAmount without wrapping it in an aggregate alongside a GROUP BY is invalid because the engine cannot determine which row's individual value to return per group, and combining DISTINCT with an aggregate and no GROUP BY is likewise invalid. Takeaway: grouped totals always require GROUP BY on the non-aggregated columns.

    Why the other options are wrong
    • BORDER BY does not create groups, so SUM(SalesAmount) alongside a bare ProductCategory is invalid without GROUP BY.
    • CSalesAmount is not wrapped in an aggregate, so it cannot coexist with GROUP BY on ProductCategory alone.
    • DSELECT DISTINCT combined with SUM and no GROUP BY does not produce the required one-row-per-category totals.
  6. Question 6Prepare data

    You have a Fabric warehouse table named Survey with a Rating column that contains some NULL values. You need the average of Rating that treats every NULL as 0. Which expression should you use?

    • AAVG(COALESCE(Rating, 0))Correct
    • BAVG(Rating)
    • CCOALESCE(AVG(Rating), 0)
    • DAVG(ISNULL(Rating))
    ✓ Correct answer: A

    Wrapping Rating in COALESCE(Rating, 0) substitutes 0 for every null before AVG ever sees the column, so those originally-null rows are now included in both the sum and the row count that AVG divides by, meaning the average reflects them as zero rather than skipping them. The key concept is that AVG, like other aggregate functions, ignores NULL values entirely by default, both in the running sum and in the count used for the division, so making nulls count as zero requires replacing them with an actual 0 before aggregation, not after. Treating every NULL as 0 in the average needs exactly that pre-aggregation substitution. Plain AVG(Rating) silently excludes the null rows from both the sum and the denominator, the opposite of counting them as zero. Applying COALESCE around the finished AVG(Rating) result only replaces the final average if the aggregate itself turns out to be null, doing nothing for each individual missing rating along the way. ISNULL requires a replacement value as a required second argument, so ISNULL(Rating) alone is invalid syntax.

    Why the other options are wrong
    • BAVG(Rating) skips nulls entirely, so it does not treat them as 0.
    • CApplying COALESCE outside AVG only replaces the final result when it is null, not each missing rating.
    • DISNULL requires a replacement value as its second argument, so this call is invalid.
  7. Question 7Prepare data

    After building a transformation in a Fabric warehouse using the visual query editor, a developer wants to obtain the exact T-SQL that Fabric will run so they can reuse it elsewhere. What does the visual query editor let them do?

    • AView the auto-generated T-SQL for the visual queryCorrect
    • BConvert the visual query into a PySpark notebook cell
    • CExport the steps as a Dataflow Gen2 template
    • DTranslate the query into a KQL statement
    ✓ Correct answer: A

    Viewing the auto-generated T-SQL is correct because every visual query is compiled internally to T-SQL that actually runs against the warehouse engine, and the editor exposes that generated statement so a developer can copy it into scripts, views, or stored procedures. This is what bridges the no-code visual experience with code-based reuse, letting less experienced users build logic visually while more advanced users repurpose the resulting SQL. The visual query editor does not target Spark, so it has no PySpark conversion, there is no built-in export path to a Dataflow Gen2 template, and it produces T-SQL rather than KQL because it runs on the warehouse engine, not an eventhouse. When a requirement mentions reusing the exact SQL Fabric will execute, that points to viewing the generated T-SQL.

    Why the other options are wrong
    • BThe visual query editor targets the warehouse's T-SQL engine and does not convert its steps into PySpark notebook code.
    • CThere is no feature to export visual query steps as a Dataflow Gen2 template; the two are separate Fabric experiences.
    • DThe editor generates T-SQL for the warehouse engine, not KQL, which is reserved for querying an eventhouse.
  8. Question 8Implement and manage semantic models

    A security review at Woodgrove Bank flags that bidirectional cross-filtering combined with row-level security can expose data or slow queries. Which recommendation follows from this finding?

    • AEnable bidirectional filtering on every relationship so that RLS stays consistent everywhere.
    • BUse single-direction relationships and apply CROSSFILTER only in measures that need it.Correct
    • CReplace all one-to-many relationships with many-to-many cardinality across the whole model.
    • DStore the dimension tables in DirectQuery mode so RLS evaluation is bypassed entirely.
    ✓ Correct answer: B

    Bidirectional cross-filtering combined with row-level security is risky because RLS filters, which are applied as filters on a table, can travel across a bidirectional relationship in directions the designer did not intend, potentially exposing rows a user's role should not see, and every bidirectional relationship also adds evaluation overhead to every query that touches it. The safe default is to keep relationships single-direction and, when one specific measure genuinely needs the fact table to filter a dimension, wrap that measure's expression in CALCULATE with CROSSFILTER set to both just for that evaluation. This keeps the RLS-sensitive behavior scoped and predictable instead of applying it, and its risks, across the entire model.

    Why the other options are wrong
    • AEnabling bidirectional filtering on every relationship multiplies the exact RLS-leakage and performance risks the security review flagged, rather than resolving them.
    • CMany-to-many cardinality creates limited relationships with their own nuances and does not address the RLS concern.
    • DSwitching dimension tables to DirectQuery storage does not bypass row-level security in any way; RLS still applies and the exposure risk remains unresolved.
  9. Question 9Implement and manage semantic models

    In a currency-conversion calculation group, the same measure must display as "$#,0" for USD and "EUR #,0" for euros depending on the selected currency. Which feature lets the format of the result change with the selection?

    • AA dynamic format string on the calculation itemCorrect
    • BA static format string set on the base measure
    • CA field parameter that switches the currency dimension
    • DA KEEPFILTERS modifier on the currency column
    ✓ Correct answer: A

    Showing the same underlying value as "$#,0" for USD and as "EUR #,0" for euros requires the number format itself, not just the value, to respond to the user's currency selection, which a fixed, hard-coded format string cannot do. A dynamic format string authored on the calculation item evaluates a DAX expression that returns the appropriate format pattern based on context, such as the currently selected currency, so the same calculation item can render its result in either format automatically as the selection changes. This capability was added specifically to support currency-conversion and similar calculation groups where a single measure needs more than one possible display format. Takeaway: use a dynamic, not static, format string whenever display format itself must vary with a selection.

    Why the other options are wrong
    • BA static format string is fixed at authoring time and applies the same pattern regardless of context, so it cannot switch between dollar and euro formatting.
    • CA field parameter changes which field or measure is displayed in a visual; it has no mechanism for changing a measure's numeric display format.
    • DKEEPFILTERS controls how a CALCULATE filter argument interacts with existing filters; it has nothing to do with how a value is formatted for display.
  10. Question 10Prepare dataSelect all that apply

    Analysts at Fabrikam want to discover data that already exists in the tenant before building anything new. Which two statements about the OneLake catalog and the Real-Time hub are correct? (Choose two.)

    • AThe OneLake catalog lets users browse and search Fabric data items they can access across workspaces.Correct
    • BThe Real-Time hub is a single place to discover and subscribe to streaming sources and events.Correct
    • CThe OneLake catalog copies every discovered table into the current workspace before it can be viewed.
    • DThe Real-Time hub is the tool used to author DAX measures for an import semantic model.
    • EThe OneLake catalog can only list items inside one workspace and cannot search across workspaces.
    ✓ Correct answer: A, B

    The OneLake catalog gives a searchable, cross-workspace view of the lakehouses, warehouses, semantic models, and other items a user is permitted to see, without moving any data. The Real-Time hub complements it as the central place to find, connect to, and subscribe to streaming and event data sources in Fabric.

    Why the other options are wrong
    • CDiscovery in the catalog references items in place; it does not copy tables into the current workspace to display them.
    • DDAX measures are authored in the model or the DAX query view, not in the Real-Time hub, which is for streaming discovery.
    • EThe catalog is explicitly cross-workspace and searchable, so limiting it to a single workspace is incorrect.

Who this DP-600 practice exam is for

This practice set is for anyone preparing for the DP-600: Microsoft Fabric Analytics Engineer Associate exam at the intermediate level - from first-time candidates building a foundation to experienced Microsoft practitioners doing a final review before test day. If you learn best by working through realistic questions and reading why each answer is right or wrong, it is built for you.

How to use this DP-600 practice exam

  1. Start with the free sample questions above to gauge your current baseline.
  2. Read the full explanation on every question, including why each wrong option is wrong.
  3. Track your weak domains and focus your study where you are losing the most marks.
  4. Once you are scoring consistently well, take a timed, full-length mock exam.
  5. Use your readiness score to decide when you are ready to book the real DP-600 exam.

Related Microsoft resources

DP-600 practice exam FAQ

How many questions are in the DP-600 practice exam on CertGrid?

CertGrid has 791 practice questions for DP-600: Microsoft Fabric Analytics Engineer Associate, covering 3 exam domains. The real DP-600 exam runs 100 min (120 min seat time), typically with 40-60 questions. Microsoft publishes 40-60 questions as a typical range across its exams and states the number varies by exam; it does not publish a count for this one. CertGrid's timed mock is a fixed 50 questions.

What is the passing score for DP-600?

The DP-600 exam passing score is 700 / 1000, and you have about 100 min to complete it. CertGrid scores your practice attempts the same way so you know when you are ready.

Are these official DP-600 exam questions?

No. CertGrid is an independent practice platform. We do not provide real or leaked exam questions. Our questions are original and designed to help you practice the concepts, scenarios, and difficulty style of the DP-600: Microsoft Fabric Analytics Engineer Associate exam.

Is there a free DP-600 practice test?

Yes. You can take a free DP-600: Microsoft Fabric Analytics Engineer Associate practice test straight away: a fixed set of 20 practice questions for this exam, retryable as often as you like, with no credit card required. You get readiness scoring and a weak-domain breakdown on those questions. Paid plans unlock the full 791-question bank, timed mock exams and full-bank domain analytics.

What CertGrid is (and is not)

CertGrid is an independent IT certification practice platform for Azure, AWS, Google, Cisco, Security, Linux, Kubernetes, Terraform, and other certification tracks. It provides objective-mapped practice questions, readiness scoring, weak-domain drills, and explanations to help learners understand what to study next.

Independent & original. CertGrid is an independent practice platform and is not affiliated with or endorsed by Microsoft. Questions are original practice items designed to mirror certification concepts and exam style. CertGrid does not provide official exam questions or braindumps.