Microsoft DP-700 Practice Exam

Microsoft Fabric Data Engineer DP-700

The Microsoft DP-700 exam, Implementing Data Engineering Solutions Using Microsoft Fabric, earns the Fabric Data Engineer Associate certification. It validates the skills to ingest and transform batch and streaming data, secure and manage an analytics solution, and monitor and optimize it, using SQL, PySpark and KQL. It is weighted across three domains, each at 30 to 35 percent: implement and manage an analytics solution, ingest and transform data, and monitor and optimize an analytics solution. This practice exam mirrors that scope with single-answer and multiple-answer questions and drag-and-drop items.

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

Certification Overview

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

Who Should Take This Exam?

Fabric Data Engineer, Data Engineer, ETL Developer, Big Data Engineer, Analytics Engineer, Data Platform Engineer, Spark Developer, Data Warehouse Developer

Prerequisites

No formal prerequisite. Microsoft expects experience with data loading patterns, data architectures and orchestration, and with SQL, PySpark and KQL.

Topics Covered

  • Implement and manage an analytics solution
  • Ingest and transform data
  • Monitor and optimize an analytics solution

Question Types

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

DP-700 Practice Questions

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

Implement and manage an analytics solution

Interactive notebook sessions in a Fabric workspace used to start in seconds, but since an admin made a new large-node custom pool the workspace default, every session takes about three minutes to start. The nightly jobs still need the large nodes, and the workspace allows compute to be customized per item. What should the admin do?
  • A. Raise the starter pool's maximum nodes and executors in workspace settings to cover the nightly jobs
  • B. Enable high concurrency for notebooks in workspace settings so sessions reuse the custom pool's nodes
  • C. Make the starter pool the default and give the nightly notebooks an environment with the custom pool Correct answer
  • D. Keep the custom pool as the default and set its minimum node count high enough to keep nodes warm

Option C is correct because Fabric lets you customize compute per item: the starter pool starts sessions in seconds, so it should be the workspace default, while the nightly notebooks get an environment that attaches the large custom pool. Option A does not help because raising starter pool limits does not give the notebooks large nodes. Option B (high concurrency) does not remove the custom pool's startup time. Option D keeps the slow-starting custom pool as the default for every notebook.

A team runs production DAGs hourly in a Fabric Apache Airflow job that uses the default pool. After each quiet spell the first run waits while the environment resumes, and busy periods need more DAGs to run in parallel. Which workspace change addresses both?
  • A. Enable autoscale on the starter pool
  • B. Create a custom pool in the Apache Airflow runtime settings and add extra nodes Correct answer
  • C. Raise the maximum nodes of the Spark starter pool in the Data Engineering settings
  • D. Set the starter pool's compute node size to Large

Option B is correct because the Apache Airflow starter pool shuts down after 20 minutes of inactivity and has a fixed size, whereas a custom pool created in the Apache Airflow runtime settings is always on until paused and lets you add extra nodes, each giving capacity for three more workers, so more DAGs run concurrently. Spark pool settings (options C and A) do not apply to Airflow jobs, and changing the starter pool's node size (option D) does not keep it running or add parallelism.

Compliance asks for a record of who read files in the Sales workspace through OneLake, including access over the ADLS Gen2 endpoint. A workspace admin has already created a lakehouse for the records in the same capacity. Where is the logging turned on?
  • A. Workspace settings, OneLake tab: Add diagnostic events to a lakehouse Correct answer
  • B. Lakehouse settings, then enable auditing on the SQL analytics endpoint
  • C. Fabric admin portal, Audit logs, then export OneLake events to the lakehouse
  • D. Workspace settings, Azure connections, then attach a Log Analytics workspace

Option A is correct because OneLake diagnostics is enabled in the workspace settings on the OneLake tab by turning on Add diagnostic events to a lakehouse and choosing a lakehouse in the same capacity. It logs access through the Fabric UI and through the Blob and ADLS Gen2 (DFS) APIs. The SQL analytics endpoint, the admin portal audit logs and Log Analytics connections do not provide this per-file OneLake read log.

After a deployment pipeline promotes a workspace to an empty Test stage, a shortcut in the Curated lakehouse that pointed to a table in the Raw lakehouse of the same workspace now targets the Raw lakehouse in Test but returns an error. Raw exists in Test with no tables. What resolves it?
  • A. Add a deployment rule on the Curated lakehouse that rewrites the shortcut target
  • B. Load the table into the Raw lakehouse in Test, for example by running the ingestion pipeline there Correct answer
  • C. Redeploy with the option to include table data so that Raw is copied across
  • D. Re-create the shortcut in Test so that it points at the Raw lakehouse in the Development workspace

Option B is correct because deployment pipelines copy only metadata, not data. Internal shortcuts are remapped to the same-workspace target in the new stage, but the target tables are not created, so the table must be loaded into the Raw lakehouse in Test, for example by running the ingestion pipeline there. A deployment rule (A) is not needed because the shortcut is already remapped, no deployment option copies table data (C), and pointing back to Development (D) defeats stage separation.

Before the first publish of a warehouse database project to the production warehouse, the team lead wants to read the T-SQL that publishing would run, without changing the warehouse. Which action gives that?
  • A. Build the project and open the generated dacpac
  • B. Choose Generate Script in the publish action Correct answer
  • C. Publish with BlockOnPossibleDataLoss set to True
  • D. Publish to a copy of the warehouse and compare the objects

Option B is correct because in the publish action for a warehouse database project you can choose Generate Script instead of Publish. It produces the T-SQL that would be applied and makes no changes to the target warehouse. The dacpac (A) is a compiled model, not the deployment script. BlockOnPossibleDataLoss (C) only blocks risky changes and a publish still modifies the warehouse, and publishing to a copy (D) is a workaround that does not show the script.

A workspace admin opens the Spark compute settings to create a pool with larger, memory-optimized nodes than the starter pool uses, but the New Pool option is unavailable. Which two actions let the team run notebooks on such a pool? (Choose two.)
  • A. Create a custom pool and set it as the workspace default pool Correct answer
  • B. Increase the maximum nodes of the starter pool
  • C. Allow item-level compute configuration for the workspace
  • D. Have a capacity admin enable Customized workspace pools Correct answer
  • E. Turn on high concurrency mode for the workspace

Options A and D are correct because Microsoft Learn states that creating a custom Spark pool requires a capacity admin to enable the Customized workspace pools option in the capacity's Spark Compute settings, which is why New Pool is unavailable. Once a custom pool exists, it is set as the workspace default pool so notebooks run on it. Raising the starter pool's maximum nodes doesn't change its node size, item-level compute configuration only adjusts session properties, and high concurrency mode only shares sessions.

The Finance domain contains a Treasury team that wants its workspaces grouped separately. A Fabric admin creates a Treasury subdomain under Finance. Which two statements about the subdomain are correct? (Choose two.)
  • A. Finance's domain admins act as Treasury's domain admins Correct answer
  • B. Treasury can override tenant settings through delegated settings
  • C. Treasury can define its own default sensitivity label
  • D. Workspaces can be assigned to Treasury directly Correct answer
  • E. Treasury can have domain admins who differ from Finance's

Options A and D are correct because a subdomain has no admins of its own: the domain admins of the parent domain are its domain admins, and workspaces can be assigned directly to a subdomain. Subdomains only have general settings, so they can't use delegated settings to override tenant settings, define a default sensitivity label, or have a separate set of domain admins.

Ingest and transform data

An eventstream must capture row-level changes from an Azure SQL database and also ingest records from Amazon Kinesis Data Streams. Which two source connectors does it need? (Choose two.)
  • A. Azure Blob Storage events
  • B. Amazon Kinesis Data Streams Correct answer
  • C. Azure SQL Database CDC Correct answer
  • D. Fabric OneLake events
  • E. Azure Service Bus

Options B (Amazon Kinesis Data Streams) and C (Azure SQL Database CDC) are correct because these are the eventstream source connectors that match the two requirements: Azure SQL Database CDC captures row-level changes, and the Amazon Kinesis Data Streams connector ingests Kinesis records. Azure Blob Storage events and Fabric OneLake events only signal file-level changes in storage, and Azure Service Bus is not a connector that delivers row-level database changes or Kinesis records.

Which two statements about query acceleration for OneLake shortcuts in an Eventhouse are accurate? (Choose two.)
  • A. Cached data is billed under the OneLake Premium cache meter, like native Eventhouse tables Correct answer
  • B. The policy can be set on shortcuts over CSV and JSON files as well as delta tables
  • C. A policy sets how many days of the shortcut's delta data are cached for fast queries Correct answer
  • D. Acceleration copies the shortcut's data into a native table that stays detached from the source
  • E. Materialized views can be created over an accelerated shortcut like over a native table

Options A and C are correct. A query acceleration policy defines the number of days of the shortcut's delta data that are cached for high-performance queries, and the accelerated data is billed under the OneLake Premium cache meter, like native Eventhouse tables. The policy applies to external delta tables only, so it cannot be set on CSV or JSON shortcuts. Acceleration caches data while it stays in sync with the source rather than creating a detached native table, and an accelerated shortcut behaves like an external table, so materialized views and update policies are not supported over it.

A JSON file in the Files area of a lakehouse holds one pretty-printed array of objects spread over many lines. spark.read.json on the file returns a single _corrupt_record column. Which reader option fixes the read?
  • A. option("header", "true")
  • B. option("mode", "DROPMALFORMED")
  • C. option("multiLine", "true") Correct answer
  • D. option("inferSchema", "true")

option("multiLine", "true") is correct because spark.read.json expects one JSON object per line by default; a pretty-printed array spread over many lines can't be parsed that way, so every line lands in _corrupt_record. Multiline mode parses the whole file as one document. header applies to CSV, DROPMALFORMED only chooses what to do with bad records (the file would still not parse), and inferSchema is for CSV and doesn't change how JSON lines are split.

A lakehouse contains a OneLake shortcut that points to an Amazon S3 bucket. When a notebook reads a file through the shortcut, where does the data live?
  • A. In the S3 bucket, and it is read from there at query time Correct answer
  • B. In the lakehouse Files folder, moved there on the first read
  • C. In a OneLake copy that is refreshed every 24 hours
  • D. In a OneLake copy created when the shortcut was made

The data stays in the S3 bucket and is read from there at query time. A OneLake shortcut is only a pointer, so nothing is moved into the lakehouse Files folder, no copy is made when the shortcut is created, and no 24-hour refreshed copy exists (that would apply only to shortcut caching, which keeps files for a limited time and is not a scheduled copy).

A pipeline Copy activity must load only the CSV files in an ADLS Gen2 folder named landing, which also holds log and JSON files. Which source file setting selects them?
  • A. A folder path of landing with Recursively cleared
  • B. A wildcard file path of landing/*.csv Correct answer
  • C. A list of files that names the landing folder
  • D. A prefix of landing/ with CSV as the file format

A wildcard file path of landing/*.csv is correct because the Copy activity's wildcard file path filters by file name pattern, so only the CSV files in the folder are picked up. A folder path with Recursively cleared still reads every file directly in landing, including the log and JSON files. A list of files that names the landing folder would read the folder's content, not a pattern. A prefix of landing/ selects everything under that prefix, and the file format setting describes how files are parsed; it does not filter them.

A pipeline Copy activity loads a CSV file into a warehouse table. A few rows hold text where an integer column expects a number, and the run should still finish while recording those rows. Which setting does this?
  • A. A higher Degree of copy parallelism
  • B. Data consistency verification on the Settings tab
  • C. Enable staging with the workspace staging store
  • D. Fault tolerance with Enable logging turned on Correct answer

Fault tolerance with Enable logging turned on lets the Copy activity skip incompatible rows, such as text in an integer column, finish the run and write the skipped rows to a log. Degree of copy parallelism only changes speed, Data consistency verification checks that the copied data matches the source (it does not skip bad rows), and staging is a performance and connectivity option that does not tolerate incompatible rows.

A platform team lands about 300 million application log lines a day. Support analysts need ad hoc keyword and time-window searches over the last six months, with answers in seconds. Which Fabric store fits best?
  • A. A lakehouse with Delta tables read through the SQL analytics endpoint
  • B. A KQL database in an Eventhouse Correct answer
  • C. A warehouse with the logs loaded by COPY INTO
  • D. A SQL database in Fabric with a full-text index

A KQL database in an Eventhouse is correct because it is built for high-volume log and telemetry data, indexes text and time columns, and answers keyword and time-window searches in seconds over months of data. A lakehouse read through the SQL analytics endpoint has no text index and must scan files. A warehouse loaded by COPY INTO is designed for batch analytics, not interactive log search at 300 million rows a day. A SQL database in Fabric is a transactional engine and isn't the right store for this ingest volume.

Monitor and optimize an analytics solution

Power BI reports query a Spark-written lakehouse table through the SQL analytics endpoint. The table is partitioned by month, many queries also filter on CustomerKey, which has millions of distinct values, and the text columns were created as Spark STRING with no length. Which two changes improve query performance? (Choose two.)
  • A. Run VACUUM with a retention of zero hours
  • B. Add CustomerKey as a second partition column
  • C. Run OPTIMIZE with ZORDER BY on CustomerKey Correct answer
  • D. Recreate the table in Spark SQL with text columns declared as varchar(n) Correct answer
  • E. Create a nonclustered index on CustomerKey in the endpoint

The correct options are "Run OPTIMIZE with ZORDER BY on CustomerKey" and "Recreate the table in Spark SQL with text columns declared as varchar(n)". Z-order clusters rows with similar CustomerKey values into the same files, so the many queries that filter on that column skip most files. A Spark STRING with no length is exposed by the SQL analytics endpoint as varchar(8000), while a declared varchar(n) maps to a much narrower varchar, which cuts memory and scan cost. VACUUM with zero retention only deletes unreferenced files and does not speed reads (and breaks time travel), partitioning on a column with millions of distinct values creates a huge number of tiny files, and the endpoint has no nonclustered indexes to create.

A nightly pipeline run shows Failed in the monitoring hub. Where does the engineer read the error message of the activity that failed?
  • A. The workspace lineage view for the pipeline item
  • B. The Spark UI of the workspace's default Spark pool
  • C. The failed activity's error details in the run view Correct answer
  • D. The Fabric Capacity Metrics app, filtered to the pipeline

The failed activity's error details in the run view is correct: opening the failed pipeline run lists each activity run with its status, and the error message and code of the failed activity are shown there. The workspace lineage view only shows item dependencies, the Spark UI of the default pool describes Spark jobs rather than pipeline activities, and the Capacity Metrics app reports capacity consumption, not error text.

A pipeline's Copy activity has an On fail link to a Teams activity that posts to the support channel. The message arrives, but the run is reported as Succeeded, so the team's failed-run alert never fires. What should the engineer change?
  • A. Change the link to the Teams activity to On completion
  • B. Add a Fail activity after the Teams activity Correct answer
  • C. Move the Teams activity to the On skip path
  • D. Increase the Copy activity's retry count

Option B is correct because a Fail activity after the Teams activity makes the pipeline run end as Failed even though the notification was sent; without it, the handled error means the run is reported as Succeeded. On completion would also run the Teams activity after success, which does not change the run status. The On skip path only runs when the Copy activity is skipped. A higher retry count does nothing about how a handled failure is reported.

The on-call group was added under Failure notifications in a pipeline's Schedule settings. Last night's scheduled run failed and they received an email, but an engineer's manual Run failed this morning and no email arrived. What explains this?
  • A. The on-call group needs the Contributor role on the workspace
  • B. Emails are sent only after the activity retries are exhausted
  • C. Manual runs email only the person who started the run
  • D. Failure notifications are sent only for scheduled runs Correct answer

Failure notifications are sent only for scheduled runs is correct: the failure notification configured in the pipeline's schedule applies to runs the schedule starts, so a manual Run that fails sends no email. Contributor on the workspace is not what drives the email, the schedule email is not held back until retries are exhausted, and manual runs do not email the person who started them.

A Dataflow Gen2 refresh shows a red failure status in the workspace list. Where can the engineer see which table or activity of that refresh returned the error?
  • A. The query insights of the destination's SQL analytics endpoint
  • B. Refresh history, then the Tables and Activities lists Correct answer
  • C. The workspace lineage view, selecting the dataflow node
  • D. The Spark applications list in the monitoring hub

Option B is correct because the dataflow's Refresh history opens a refresh and lists its Tables and Activities with the status and error of each. The SQL analytics endpoint's query insights cover T-SQL queries, not dataflow refreshes. The lineage view shows dependencies, not refresh errors. The Spark applications list covers Spark jobs, and a dataflow refresh is not one.

The Download detailed logs button returns Mashup engine logs for refreshes of a Dataflow Gen2 that reads cloud sources, but for a dataflow refreshed through an on-premises data gateway the logs are missing. What must be enabled?
  • A. Staging on every query in the dataflow
  • B. Workspace monitoring on the workspace holding the dataflow
  • C. Admin consent for gateway diagnostics on the gateway Correct answer
  • D. A second member in the gateway cluster

Admin consent for gateway diagnostics on the gateway is correct: Learn states that to download detailed logs for dataflows refreshed through a gateway, the Admin consent for gateway diagnostics feature must be enabled at the gateway level. Staging on queries, workspace monitoring and adding a second gateway cluster member do not change what the Mashup engine logs make available.

Free Study Guide

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

More Microsoft Practice Exams

All Microsoft practice exams →

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