Free DP-750 practice test

20 questions for the Microsoft Data Engineering with Azure Databricks (DP-750) exam, taken from our 229-question bank and spread across its 4domains 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 · Set up and configure an Azure Databricks environment

A Unity Catalog administrator runs the following DDL:

DROP TABLE corp_prod.finance.ledger;

The ledger table was created as a managed table. What happens to the underlying data files in cloud storage after this statement executes successfully?

Show answer & explanation

Correct answer: A

  • A. The table metadata is removed from Unity Catalog and the underlying data files are permanently deleted from the managed storage location.

In Unity Catalog, dropping a managed table removes both the table metadata from the metastore and permanently deletes the underlying data files from the managed storage location. This is the defining characteristic of managed tables — Unity Catalog owns the data lifecycle, so dropping the table also drops the data. — Unity Catalog does not automatically retain managed table data files for 30 days after a DROP TABLE; the deletion is immediate. (Note: Delta table time travel and the underlying Delta log may retain data briefly depending on VACUUM settings, but the table registration and managed ownership are removed.) — There is no restriction preventing managed tables from being dropped; any user with the DROP TABLE privilege can drop a managed table. — While Databricks has introduced some protections for accidental deletion in certain contexts, a standard DROP TABLE on a managed table does not move files to a recoverable trash location with a guaranteed UNDROP window in the general Unity Catalog model.

Question 2 · Set up and configure an Azure Databricks environment

A Databricks administrator wants to ensure that a long-running all-purpose cluster used for ad-hoc development is automatically shut down when not in use to control costs, but users should not be required to restart it manually at the beginning of each session if they left a notebook open and reconnected within a short window. Which TWO cluster settings should the administrator configure together to achieve this outcome?

Select 2 answers.

Show answer & explanation

Correct answers: C, F

  • C. Attach the cluster to an instance pool to allow faster restart after termination
  • F. Configure an auto-termination timeout (e.g., 30 minutes of inactivity)

Auto-termination ensures the cluster shuts down after a configurable period of inactivity, controlling costs. Attaching the cluster to an instance pool means that when users restart it after termination, idle pre-warmed VMs are available, drastically reducing restart time so the experience feels seamless. Option E is wrong because setting minimum workers to 0 with autoscaling does not by itself terminate the cluster driver. Option A is wrong because terminating immediately on notebook detach would be too aggressive and disruptive for active development workflows. Option B is wrong because cluster pinning prevents the cluster from being deleted from the UI history but does NOT prevent auto-termination. Option D is wrong because restricting max workers to 1 limits performance and does not address the cost-vs-restart-time tradeoff described.

Question 3 · Set up and configure an Azure Databricks environment

A data engineering team is building a pipeline that requires GPU-accelerated deep learning training jobs on Azure Databricks. The runtime must include pre-installed ML libraries such as TensorFlow and PyTorch optimized for the Databricks environment. Which cluster runtime selection is MOST appropriate?

Show answer & explanation

Correct answer: B

  • B. The latest Databricks Runtime ML (e.g., 15.x ML), which includes GPU-optimized ML libraries pre-installed

Databricks Runtime ML variants (e.g., 15.x ML or 15.x GPU ML) include pre-installed and version-compatible ML frameworks such as TensorFlow, PyTorch, scikit-learn, and CUDA drivers for GPU nodes. This is the correct choice for deep learning workloads. Option A is wrong because although you can manually install TensorFlow on a standard runtime, you risk version incompatibility and lose the pre-tuned, tested ML environment that Runtime ML provides. Option C is wrong because the Databricks Runtime for Genomics is specialized for bioinformatics workflows, not general deep learning. Option D is wrong because Photon is a vectorized SQL/DataFrame execution engine; it does not provide GPU acceleration for deep learning — GPU acceleration requires selecting a GPU node type and an ML runtime.

Question 4 · Secure and govern Unity Catalog objects

An organization wants to enforce column-level access control on a Unity Catalog table customer_data.profiles. Analysts in the marketing group should be able to query all columns EXCEPT ssn and date_of_birth. What is the recommended Unity Catalog approach?

Show answer & explanation

Correct answer: B

  • B. Apply column masks using a masking policy function on ssn and date_of_birth that returns NULL for principals in the marketing group

Unity Catalog supports native column masks via masking policy functions. A masking function can evaluate the current user's group membership and return NULL (or a redacted value) for members of marketing, while returning the real value for privileged users — this is the recommended, scalable approach. Option A (view-based approach) is a valid workaround but is not the recommended Unity Catalog-native method and becomes brittle as the number of consumer groups grows. Option C is incorrect because Unity Catalog does not support DENY commands; it uses a grant-only model. Option D (partition-based restriction) is not a supported access control mechanism in Unity Catalog.

Question 5 · Secure and govern Unity Catalog objects

A security team discovers that a Unity Catalog external table raw.sensor_data was dropped two weeks ago, but they need to investigate who dropped it. Audit logging was enabled at the time. Where should they look, and what action_name value should they filter on?

Show answer & explanation

Correct answer: B

  • B. Query system.access.audit and filter for action_name = 'dropTable'

The Unity Catalog system table system.access.audit logs metastore operations. The action_name value for dropping a table is dropTable. This is the correct Unity Catalog-native approach to audit who performed a DDL operation. Option D uses deleteTable which is not the correct action name in Unity Catalog audit logs. Option C (Azure Monitor Activity Log) captures Azure resource-level operations on the Databricks workspace resource itself, not Unity Catalog metastore DDL events. Option A is incorrect — information_schema.table_history does not exist as a Unity Catalog system view; Delta table history (DESCRIBE HISTORY) tracks DML but does not capture who dropped the table after the fact.

Question 6 · Secure and govern Unity Catalog objects

A Unity Catalog schema finance.reports contains tables tagged with department = 'finance'. A policy is needed to ensure that only members of the finance_team group can query tables carrying this tag. Which Unity Catalog feature directly supports enforcing access based on object tags?

Show answer & explanation

Correct answer: D

  • D. Attribute-Based Access Control (ABAC) using tag-based access policies configured in Unity Catalog.

Option D is correct. Unity Catalog's ABAC capability lets administrators define policies that grant or restrict access to securables based on tags (key-value pairs) applied to those objects, enabling scalable, metadata-driven access control without individually granting privileges on each table. Option B is wrong because row filter functions operate on row data, not on object-level metadata tags, and cannot be used to block table-level access based on tags. Option A is wrong because dynamic views require manual maintenance and do not constitute a policy-driven ABAC mechanism; they would not scale as new tables are added. Option C is wrong because column masks restrict column values for specific users but do not prevent access to the table itself; using them across all columns is an anti-pattern for table-level access control.

Question 7 · Prepare and process data

A data engineering team is building a pipeline in a Lakeflow Spark Declarative Pipeline (formerly Delta Live Tables) to process financial transactions. They want to quarantine records where the amount column is NULL or negative rather than failing the entire pipeline. Which pipeline expectation configuration achieves this?

Show answer & explanation

Correct answer: D

  • D. CONSTRAINT valid_amount EXPECT (amount IS NOT NULL AND amount > 0) ON VIOLATION DROP ROW

DROP ROW silently removes records that violate the constraint from the target table, effectively quarantining invalid records (they are counted in pipeline metrics but not written to the output table), while allowing the pipeline to continue running. FAIL UPDATE (option C) would halt the entire pipeline update when a violating record is encountered, which contradicts the requirement to not fail the pipeline. WARN (option B) allows violating records to pass through to the target table and only logs a warning — the invalid rows are NOT quarantined. Option A inverts the logic of the constraint expression; it would drop rows where amount IS NULL or <= 0 (written as the expectation condition), but the expression amount IS NULL OR amount <= 0 as the EXPECT clause means rows satisfying that condition are valid, which is backwards from the intended business rule.

Question 8 · Prepare and process data

A data engineer is reviewing two Unity Catalog table definitions created by different team members:

Table A:

CREATE TABLE main.sales.orders_managed (
  order_id BIGINT,
  order_ts TIMESTAMP,
  amount DOUBLE
) USING DELTA;

Table B:

CREATE TABLE main.sales.orders_external (
  order_id BIGINT,
  order_ts TIMESTAMP,
  amount DOUBLE
) USING DELTA
LOCATION 'abfss://container@account.dfs.core.windows.net/sales/orders_external';

The team decides to drop Table B using DROP TABLE main.sales.orders_external. What is the outcome?

Show answer & explanation

Correct answer: B

  • B. Only the Unity Catalog metadata entry for Table B is removed; the underlying Delta files at the ADLS location are retained.

Table B is an unmanaged (external) table because it was created with an explicit LOCATION clause pointing to an ADLS path. When an external table is dropped in Unity Catalog, only the metadata registration is removed; the underlying data files remain at the specified storage location. This is the fundamental distinction between managed and unmanaged tables. Option A describes the behavior of dropping a managed table (Table A), where Unity Catalog owns both the metadata and the data, so a DROP deletes both. Option C is incorrect — Unity Catalog allows dropping external tables; UNDROP is a recovery mechanism for managed tables, not a prerequisite for dropping external ones. Option D is entirely fictitious; Unity Catalog does not migrate or convert external table data during a DROP operation.

Question 9 · Prepare and process data

A data engineer is designing a Delta Lake table in Unity Catalog for a 10 TB transaction dataset that is almost exclusively queried by filtering on transaction_date (a date column) and region (a low-cardinality string column with 8 distinct values). The table is updated with daily bulk appends. Which storage optimization strategy will provide the BEST query performance for these access patterns?

Show answer & explanation

Correct answer: B

  • B. Enable liquid clustering on transaction_date and region

Liquid clustering on transaction_date and region is the modern, recommended approach for this scenario. It adaptively co-locates data based on both clustering keys without requiring manual OPTIMIZE runs or static partition definitions, and it handles the daily bulk-append pattern efficiently through incremental clustering. Z-ordering alone (option A) co-locates data within individual Parquet files but does not eliminate file-level scanning; without partitioning it would need to scan the entire table first. Partitioning by region with 8 values is acceptable, but static partitioning on a date column at daily granularity creates a very large number of small partitions over time (thousands of partitions per year), causing metadata overhead — this makes option C and D less ideal. Liquid clustering supersedes the partition + Z-order pattern for new tables as of Databricks Runtime 13.3+.

Question 10 · Prepare and process data

A data engineer is optimizing a Unity Catalog Delta table that receives frequent small-file writes from a streaming pipeline. After several days of operation, the table has accumulated over 200,000 small Parquet files. The engineer runs OPTIMIZE on the table to compact the files. However, the engineer is also concerned about stale data files not being cleaned up. Which command should the engineer run AFTER OPTIMIZE to reclaim storage by removing old data files no longer referenced by the Delta transaction log, while retaining 7 days of time-travel history?

Show answer & explanation

Correct answer: B

  • B. VACUUM table RETAIN 168 HOURS

VACUUM table RETAIN 168 HOURS (168 hours = 7 days) is the correct command. VACUUM removes data files that are no longer referenced in the Delta transaction log and are older than the specified retention threshold, reclaiming cloud storage. The default retention is 7 days; specifying 168 HOURS explicitly sets this. — Option D (DELETE with _commit_timestamp filter) deletes logical rows from the table based on a column value, not stale physical files — it does not perform file cleanup and _commit_timestamp is not a standard Delta column. — Option A (OPTIMIZE with ZORDER on _commit_version) is not a valid use of ZORDER — _commit_version is not a user-defined column, and re-running OPTIMIZE does not remove unreferenced files; that is VACUUM's job. — Option C (ALTER TABLE SET TBLPROPERTIES) sets the property that governs the retention period used by future VACUUM runs, but it does not itself clean up any files; you must still run VACUUM explicitly to perform the actual deletion.

Question 11 · Prepare and process data

A data engineer is designing a schema for a Unity Catalog table that will store JSON payloads from a web API. The API occasionally adds new fields to the response without notice. The engineer needs the pipeline to handle these new fields gracefully without failing. Which THREE behaviors are characteristics of schema evolution with Auto Loader and Delta Lake? (Select THREE)

Select 3 answers.

Show answer & explanation

Correct answers: A, B, E

  • A. Setting cloudFiles.schemaEvolutionMode to 'addNewColumns' causes Auto Loader to automatically add new columns to the target Delta table schema when new fields are detected
  • B. Delta Lake schema enforcement will reject any new columns by default unless schema evolution is explicitly enabled with mergeSchema
  • E. When a new column is detected by Auto Loader with schema evolution enabled, the current micro-batch is restarted to apply the schema change before proceeding

Option A is correct: setting cloudFiles.schemaEvolutionMode to 'addNewColumns' instructs Auto Loader to automatically widen the target Delta table schema by adding newly discovered columns, enabling graceful handling of API changes. Option B is correct: Delta Lake enforces the existing schema on writes by default; attempting to write new columns without specifying .option('mergeSchema','true') or setting the table property delta.autoMerge.enabled=true will result in an AnalysisException. Option E is correct: when Auto Loader detects a new column during a streaming batch, it restarts the current micro-batch so the schema change can be committed to the Delta table first, then the data is written with the updated schema — this is expected behavior described in Databricks documentation. Option C is incorrect: Auto Loader persists the inferred schema in a user-specified schema location (cloudFiles.schemaLocation) so it does NOT recompute from scratch on every batch; it reads the cached schema and updates it incrementally. Option D is incorrect: column mapping is a separate Delta feature for renaming/dropping columns; it is not a prerequisite for schema evolution. Option F is incorrect: schema evolution in Delta Lake and Auto Loader handles column additions, not column removals — dropped source fields are not automatically removed from the Delta schema; existing columns simply receive NULL values.

Question 12 · Prepare and process data

A data engineering team stores a 3 TB Delta table in Unity Catalog that is queried almost exclusively by filtering on both region (10 distinct values) and event_date (daily grain, ~3 years of data). Query performance has degraded as the table grows. The team wants to improve read performance with minimal ongoing maintenance. Which two options would most effectively improve query performance for this access pattern? (Select TWO)

Select 2 answers.

Show answer & explanation

Correct answers: C, D

  • C. Partition the table by event_date and apply Z-ordering on region
  • D. Apply liquid clustering on region and event_date columns

Liquid clustering on both columns (option D) is the recommended modern approach: it clusters data across both dimensions incrementally, avoids partition explosion, and requires no manual OPTIMIZE scheduling. Partition-by-event_date with Z-ordering on region (option C) is also effective: date partitioning prunes large swaths of data for date-range queries while Z-ordering co-locates rows with the same region within each partition, improving skipping for the combined filter. — Periodic OPTIMIZE with ZORDER BY (option E) achieves similar physical layout to option C but without partitioning, meaning the engine must scan all files before Z-order skipping can help; it also requires scheduled manual runs rather than incremental optimization. — Deletion vectors (option A) improve the performance of DELETE and UPDATE operations by marking deleted rows without rewriting files, but they do not improve read scan performance for filter queries. — Partitioning by region alone (option B) with only 10 distinct values would still require full scans within each partition for date filters, poorly addressing the multi-dimensional access pattern.

Question 13 · Prepare and process data

A data engineering team is designing a Lakeflow Spark Declarative Pipeline that uses Auto Loader to ingest JSON event files from a cloud storage location into a Bronze Delta table. After deployment, the team notices that source files sometimes arrive with new fields not present in the original schema. They want the pipeline to automatically incorporate new fields into the Bronze table without failing, while still enforcing types on existing fields. Which combination of settings should they configure? (Select TWO)

Select 2 answers.

Show answer & explanation

Correct answers: D, E

  • D. Set cloudFiles.schemaEvolutionMode to "addNewColumns" in the Auto Loader read options.
  • E. Set mergeSchema to true on the target Delta table write options so that new columns from incoming data are merged into the existing table schema.

Setting cloudFiles.schemaEvolutionMode to "addNewColumns" (option D) instructs Auto Loader to detect new fields in incoming JSON files and add them to the inferred schema rather than failing. Setting mergeSchema to true (option E) on the Delta write ensures that when those new columns are detected, they are automatically added to the existing Bronze table schema without requiring a manual ALTER TABLE. Together these two settings achieve seamless schema evolution. Option A (failOnNewColumns) is the opposite of what is needed — it would cause pipeline failures on every new field. Option C (expect_or_fail on all columns) would reject records with new fields, causing data loss. Option B (inferColumnTypes to true) causes Auto Loader to re-infer types on every batch from scratch, which can overwrite existing type decisions and cause type-conflict errors — it does not enable additive schema evolution. Option F (relying on Unity Catalog schema enforcement) would actively block new columns from being written, not allow them.

Question 14 · Deploy and maintain data pipelines and workloads

A data engineer configures a Lakeflow Job with the following alert settings: an alert fires when the job duration exceeds 45 minutes, and another alert fires on task failure. The job is scheduled to run every 30 minutes and processes a Delta table. During a recent incident, the job ran for 52 minutes without triggering the duration alert. What is the MOST likely cause?

Show answer & explanation

Correct answer: C

  • C. The alert was configured on the wrong job ID after a recent redeployment via the Databricks Asset Bundle

After redeployment via a Databricks Asset Bundle, a new job resource may be created with a different job ID, leaving alerts configured against the old job ID orphaned and inactive. This is a common post-deployment misconfiguration. Duration alerts in Lakeflow Jobs do fire while the job is still running once the threshold is crossed, so option B is incorrect. Threshold units in the UI are clearly labeled, making option A unlikely as the 'most likely' cause. Lakeflow Jobs do support duration-based alerting, making option D factually wrong.

Question 15 · Deploy and maintain data pipelines and workloads

A junior data engineer asks why their Lakeflow Job trigger type matters for cost and latency. The job processes micro-batch data and must start a new run as soon as the previous run completes, without waiting for a fixed clock schedule. Which trigger type should they configure?

Show answer & explanation

Correct answer: B

  • B. Continuous trigger.

A Continuous trigger (also described as 'run when previous run completes' semantics) immediately queues the next run as soon as the preceding run finishes, minimizing idle time without requiring a fixed schedule. This is the correct choice. Option A is incorrect because a 1-minute cron schedule introduces up to 1 minute of latency between runs and may overlap or waste time if the job takes less or more than 1 minute. Option C is incorrect because a file arrival trigger fires when new files land in a configured location, which is event-driven and not tied to job completion. Option D is incorrect because using a monitoring script adds operational overhead and is not a native Databricks trigger type; it also introduces latency from the polling interval.

Question 16 · Deploy and maintain data pipelines and workloads

A team maintains a Databricks Delta table that receives millions of new records daily and has small frequent updates. After three months, query performance has degraded. The engineer runs OPTIMIZE on the table. Which additional command should be run periodically to reclaim storage from deleted and obsolete files, and what is the default retention threshold before files become eligible?

Show answer & explanation

Correct answer: C

  • C. VACUUM with a default retention of 7 days (168 hours).

VACUUM removes files that are no longer referenced by the Delta log and that are older than the retention threshold. The default retention period is 7 days (168 hours), which protects time-travel queries for up to 7 days. Option B is wrong because the default is 7 days, not 24 hours; running VACUUM with less than 7 days requires explicitly overriding the safety check and is generally discouraged unless you understand the time-travel impact. Option A is wrong because ZORDER is a data layout optimization (co-locating related data) that is applied as part of OPTIMIZE — it does not delete obsolete files and has no compaction window concept. Option D is wrong because ANALYZE TABLE refreshes column statistics for the query optimizer but does not reclaim storage or remove old data files.

Question 17 · Deploy and maintain data pipelines and workloads

A senior data engineer is reviewing a Spark query profile and notices a large 'PhotonShuffleExchangeExec' node with hundreds of gigabytes of shuffle write. The subsequent stage shows significant disk spill. Which THREE actions could reduce shuffle and spill in this scenario? (Select THREE)

Select 3 answers.

Show answer & explanation

Correct answers: B, C, E

  • B. Use broadcast join hints for smaller dimension tables to eliminate the shuffle entirely for those joins.
  • C. Enable AQE (Adaptive Query Execution) with spark.sql.adaptive.enabled=true so Databricks can coalesce shuffle partitions and optimize join strategies at runtime.
  • E. Pre-aggregate or filter the dataset earlier in the pipeline (pushdown predicates) to reduce the volume of data entering the shuffle.

B, C and E reduce shuffle volume and spill. Broadcasting small dimension tables removes their shuffle (B); AQE coalesces partitions, handles skew and can switch to broadcast joins at runtime (C); filtering and pre-aggregating early shrinks the data that enters the shuffle (E). Option A can ease per-partition memory pressure but adds tasks and doesn't reduce shuffle volume, so it is less effective. Option D creates a few huge partitions and makes spill worse. Option F gives up Photon's vectorised execution without reducing the shuffle.

Question 18 · Deploy and maintain data pipelines and workloads

A data engineering team is setting up a Git branching strategy for their Databricks notebook-based pipeline. They want to ensure that: (1) the main branch always reflects production-ready code, (2) all changes are reviewed before merging, and (3) conflicts are minimized when multiple engineers work simultaneously. Which combination of practices BEST meets these requirements? (Select TWO)

Select 2 answers.

Show answer & explanation

Correct answers: A, B

  • A. Each engineer works on a short-lived feature branch and opens a pull request (PR) to merge changes into main after peer review.
  • B. The team uses a protected main branch policy that requires at least one approving PR review before merging.

Using short-lived feature branches (Option A) reduces the risk of merge conflicts because branches diverge from main for a shorter time, and combining this with protected branch policies requiring PR review (Option B) ensures that no code reaches main without human review, satisfying all three requirements. Option D is incorrect because committing directly to main bypasses code review and risks introducing broken code to production. Option C is incorrect because long-lived branches accumulate more divergence from main, dramatically increasing the likelihood and complexity of merge conflicts. Option E is incorrect because having one person rewrite conflicting code without review undermines the review process and introduces risk of errors.

Question 19 · Deploy and maintain data pipelines and workloads

A team runs OPTIMIZE and VACUUM on a high-volume Delta table as part of their nightly maintenance job. After enabling VACUUM with the default retention period, a data engineer reports that time travel queries using VERSION AS OF for versions older than 7 days are now failing with a 'file not found' error. The team wants to support time travel queries up to 30 days back. Which TWO changes should the team make? (Select TWO)

Select 2 answers.

Show answer & explanation

Correct answers: B, D

  • B. Update the VACUUM command to use VACUUM <table> RETAIN 720 HOURS (30 days in hours) to override the default 168-hour (7-day) retention threshold.
  • D. Set delta.deletedFileRetentionDuration = 'interval 30 days' on the table properties before running VACUUM to retain deleted files for 30 days.

The default VACUUM retention period is 7 days (168 hours). To support 30-day time travel, two complementary changes are needed: (1) Setting the delta.deletedFileRetentionDuration table property to 30 days ensures that Delta itself tracks and retains the required data files as part of its metadata management. (2) Specifying RETAIN 720 HOURS in the VACUUM command explicitly overrides the default 168-hour threshold, preventing the command from deleting files needed for 30-day time travel. Together, these changes ensure both the table metadata and the physical files are preserved for the desired retention window. Option F is incorrect because OPTIMIZE frequency does not affect time travel retention; OPTIMIZE compacts files but VACUUM is what deletes old data files. Option E is incorrect because this is the exact opposite of the goal — it would destroy all historical data immediately. Option C is incorrect because CDF captures incremental changes for downstream consumers but does not preserve the underlying data files that VACUUM would delete; time travel still depends on the physical Parquet files. Option A is incorrect because shallow clones reference the source table's files and do not create independent copies; if VACUUM deletes files from the source, the shallow clone will also lose access to them.

Question 20 · Deploy and maintain data pipelines and workloads

A Lakeflow Job is configured with three tasks: Task A (data ingestion), Task B (transformation, depends on A), and Task C (reporting, depends on B). Task B fails during a scheduled run. The engineer repairs the job run. Which tasks will be re-executed during the repair run?

Show answer & explanation

Correct answer: B

  • B. Only Task B and Task C will be re-executed.

When you repair a Databricks Job run, only the failed task and all downstream tasks that were skipped or not yet executed are re-run. Task A succeeded, so it is not re-executed. Task B failed, and Task C was skipped because its dependency (B) failed — both are included in the repair. Option A is wrong because Task C was blocked by the failure and must also be re-run to complete the pipeline. Option C is wrong because re-running successful upstream tasks wastes resources and is not the repair behavior; Databricks preserves successful task results. Option D is wrong because Task C is downstream of the failure and must be included; Task A was successful and is excluded.

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

209 more DP-750 questions

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

Microsoft Data Engineering with Azure Databricks course overview and study guides →