Final review

Exam tips & caveats

The last-mile page. Numbers to memorize, decision trees to internalize, and the traps that decide borderline results. Read this the evening before.

How DP-700 is actually scored

700 of 1000 is a scaled score — it is not 70% of questions correct. Questions are weighted, and there is no penalty for guessing, so never leave anything blank. The three domains are equally weighted at 30–35% each, so a weak domain costs you roughly a third of the exam.

Key numbers to memorize

ItemValueWhy it matters
Passing score700 / 1000Scaled, not a percentage
Exam duration100 minutes~120 min seat time including check-in
Domain weights30–35% eachAll three equal — no domain to skip
Capacity unit → Spark1 CU = 2 Spark vCoresF64 = 128 base vCores
Spark burst factorF64 bursts to 384 Spark vCores
Free-viewer thresholdF64Below it, consumers need Power BI Pro
Background smoothing window24 hoursInteractive smooths over 5 minutes
Throttling ladder10 min → 60 min → 24 hInteractive delay → interactive rejection → background rejection
Fabric trial60 daysBehaves like an F64 for feature gating
VACUUM default retention7 days (168 hours)Going below breaks time travel
Delta checkpoint intervalEvery 10 commitsLog compaction into Parquet
Deployment pipeline stagesUp to 10Typically Dev → Test → Prod
Airflow extra node+3 workers eachConcurrency scaling for DAGs
Shortcut target typesOneLake, ADLS Gen2, S3 (+compatible), GCS, DataverseKnow which are cross-cloud
Git providersAzure DevOps, GitHubNothing else natively

Numbers drift — verify before exam day

Fabric limits, SKU tables and preview/GA status change frequently. Treat these as the values to reason with, and spot-check the volatile ones (mirroring sources, OneLake security capabilities, capacity limits) against Microsoft Learn shortly before you sit.

Master decision trees

Where should this data live?

flowchart TD S([Storage decision]) --> Q1{Access pattern} Q1 -->|"T-SQL read AND write, stored procs"| WH["Warehouse"] Q1 -->|"Spark, files, mixed engines"| LH["Lakehouse"] Q1 -->|"High-volume events, time-series"| EH["Eventhouse"] Q1 -->|"Already in a lake, don't duplicate"| SC["OneLake shortcut"] Q1 -->|"Live replica of an operational DB"| MR["Mirroring"]

How should I transform it?

flowchart TD S([Transform decision]) --> Q1{Who and how big?} Q1 -->|"Analyst, no code"| DF["Dataflow Gen2"] Q1 -->|"Engineer, very large or complex"| NB["Notebook / PySpark"] Q1 -->|"SQL developer, data in Warehouse"| TS["T-SQL / CTAS / stored proc"] Q1 -->|"Telemetry in an Eventhouse"| KQ["KQL / update policy"] Q1 -->|"Streaming with big joins"| SS["Spark structured streaming"]

How should I orchestrate it?

flowchart TD S([Orchestration decision]) --> Q1{One step or many?} Q1 -->|"A single transform"| ONE["Dataflow Gen2 or notebook
on its own schedule"] Q1 -->|"Multiple ordered steps,
conditions, loops, retries"| PIPE["Data pipeline"] Q1 -->|"Existing Airflow DAGs,
Python-defined dependencies"| AF["Apache Airflow job"] Q1 -->|"React to a data condition"| ACT["Activator rule"] PIPE --> TRG{Trigger} TRG -->|"Time-based"| SCH["Schedule"] TRG -->|"File lands / job completes"| EVT["Event trigger via Real-Time hub"]

Which security control?

flowchart TD S([Security decision]) --> Q1{Granularity} Q1 -->|"Whole workspace"| WR["Workspace role"] Q1 -->|"One item"| IP["Item permission / share"] Q1 -->|"Certain rows, SQL only"| RLS["RLS security policy"] Q1 -->|"Certain rows, every engine"| OLS2["OneLake security"] Q1 -->|"Certain columns"| CLS["CLS — GRANT/DENY"] Q1 -->|"Object must be invisible"| OLS["OLS in semantic model"] Q1 -->|"Show partial values only"| DDM["Dynamic data masking"] Q1 -->|"A folder in a Lakehouse"| FLS["OneLake data access role"]

Top exam traps

  1. The Lakehouse SQL analytics endpoint is read-only. No INSERT/UPDATE/DELETE/MERGE via T-SQL. Writes need Spark, or a Warehouse.
  2. OPTIMIZE ≠ VACUUM. OPTIMIZE compacts small files; VACUUM deletes unreferenced old files. Neither does the other's job.
  3. VACUUM below 7 days breaks time travel and can break running readers. Spark blocks it unless you disable the safety check.
  4. V-Order ≠ Z-Order. V-Order optimizes within files at write time; Z-Order co-locates across files during OPTIMIZE.
  5. Mirroring ≠ shortcuts. Mirroring replicates via CDC (one-way, read-only in Fabric); shortcuts point at data and copy nothing.
  6. Git and deployment pipelines move definitions, never data. No rows are promoted, ever.
  7. Deployment rules go on the target stage, not the source. This is the classic wrong click.
  8. Member can reshare; Contributor cannot. That single difference decides most role questions.
  9. ReadAll bypasses SQL-layer security. RLS, CLS and DDM are enforced by the SQL engine — direct OneLake/Spark readers see raw data. Cross-engine enforcement means OneLake security.
  10. DDM is not a security boundary. UNMASK, elevated permissions or inference through WHERE clauses defeat it.
  11. OLS exists only in semantic models, and its point is total invisibility — not an access error.
  12. Warehouse constraints are NOT ENFORCED. A primary key will not stop duplicate inserts; dedupe in the load.
  13. Dataflow Gen2 memory/timeout → staging and query folding, not a larger capacity.
  14. Streaming needs a checkpoint and (for stateful aggregations) a watermark. No checkpoint → reprocessing on restart. No watermark → unbounded state and eventual crash.
  15. Tumbling counts each event once; hopping and sliding overlap. A hopping window with hop = size is a tumbling window.
  16. AQE is on by default. Answers that manually tune shuffle partitions or hand-fix skew are usually distractors.
  17. coalesce() cannot fix skew — it only reduces partition count without a shuffle. repartition() rebalances.
  18. Broadcasting too large a table just relocates the OOM to the driver.
  19. Caching policy ≠ retention policy. Past cache = slow. Past retention = gone.
  20. Query acceleration costs extra CUs and introduces slight staleness — it buys speed, not freshness.
  21. Shortcut data is excluded from OPTIMIZE and VACUUM on the hosting Lakehouse.
  22. Shortcut access needs permission on both sides — the source system and OneLake.
  23. Each streaming consumer needs its own consumer group, or readers silently split the events.
  24. %pip install is session-only. Persistent libraries belong in an Environment.
  25. Direct Lake has no data refresh to schedule — but it can silently fall back to DirectQuery.
  26. dropDuplicates keeps an arbitrary row. "Keep the latest" needs row_number() over a window.
  27. Starter pool = fast start, fixed size. Custom pool = your size, cold start.
  28. Promotion is self-service; certification is allow-listed.

Pairs people mix up

ThisNot thisThe distinction in one line
OPTIMIZEVACUUMCompacts vs deletes
V-OrderZ-OrderInside files at write vs across files at optimize
ShortcutMirroringPoints at data vs replicates data
LakehouseWarehouseSpark + read-only SQL vs full read/write T-SQL
RLSOneLake securitySQL engine only vs every engine
CLSOLSPermission error vs completely invisible
DDMCLSObfuscated but present vs genuinely denied
MemberContributorCan reshare vs cannot
Sensitivity labelEndorsementHow confidential vs how trustworthy
PromotedCertifiedAnyone vs allow-listed certifiers
Git integrationDeployment pipelineVersion and review vs promote between stages
Database projectDeployment pipelineSchema-object level vs whole-item level
Data pipelineAirflow jobFabric-native visual vs Python DAGs and Airflow operators
TumblingHoppingNo overlap vs overlapping by hop
Caching policyRetention policyHow fast vs how long it exists
Monitoring hubCapacity Metrics appDid the run fail vs what burned the CUs
coalesce()repartition()No shuffle, reduce only vs full shuffle, rebalance
%runnotebookutils.notebook.run()Same session, shares variables vs separate job, returns a value
SCD Type 1SCD Type 2Overwrite vs new row with validity dates
Starter poolCustom poolWarm and fixed vs sized and cold

Question-type strategy

TypeHow to attack it
Case studyRead the requirements and constraints sections first, then the questions, then re-read only the relevant paragraph. Constraints ("must not copy data", "analysts have no coding skills", "must survive re-runs") are the answer keys.
Build list / orderingAnchor the first and last steps — they are usually obvious — then order the middle by dependency. Watch for steps that are plausible but not required; extra steps are wrong.
Hotspot / dropdownEach dropdown is scored separately. Answer the ones you know confidently first; don't let one uncertain field make you second-guess the rest.
Yes/No statement setsEvaluate each statement independently against the original scenario. The same scenario is often repeated with a different proposed solution — re-read it each time.
Code readingYou mostly need to spot what is missing or wrong: no checkpoint, no watermark, wrong output mode, coalesce where repartition is needed, MERGE condition that misses the current-row filter.
"Which tool" questionsFind the persona and the hard constraint. "No-code" excludes notebooks. "Stored procedure" excludes Lakehouse. "Without copying data" excludes mirroring and copy activity.

Time management

100 minutes across roughly 40–60 items leaves under two minutes each. Do a fast first pass answering everything you know, flag the rest, and come back. Case studies are worth reading carefully but should not consume half your clock — if a case study appears in a locked section, finish it before moving on, because you may not be able to return.

Scenario → answer lookup

ScenarioAnswer
SQL developers need stored procedures and transactionsWarehouse
Engineers need PySpark and SQL over the same data, plus raw filesLakehouse
Millions of telemetry events, sub-second dashboardsEventhouse / KQL database
Query ADLS/S3 data without copying itOneLake shortcut
Near real-time replica of Azure SQL DB with no ETLMirroring
Simple recurring incremental copy, minimal authoringCopy job
Analyst builds a transform with no codeDataflow Gen2
Multi-step workflow with branching and retriesData pipeline
Migrating existing Airflow DAGsApache Airflow job
Run a job when a file lands in OneLakeEvent-based trigger
Alert and act when a metric crosses a thresholdActivator
Load only rows changed since the last runWatermark + MERGE
Re-running a load must not duplicate rowsMERGE on the business key
Track full history of dimension changesSCD Type 2
Keep only the newest row per keyrow_number() over a window
Fact arrives before its dimension rowInferred member placeholder
Count each event once per 5-minute blockTumbling window
15-minute average reported every 5 minutesHopping window
Group activity until 30 minutes idleSession window
Enrich a stream with a huge batch dimensionSpark structured streaming
Route one stream to two destinations, no codeEventstream
Faster KQL over shortcut dataQuery acceleration
Restrict rows for SQL consumersRLS
Restrict rows for Spark consumers tooOneLake security
Hide a column from analystsCLS
Table must not appear at allOLS
Show only the last four digitsDDM partial()
Restrict one Lakehouse folderOneLake data access role
Build items but never share themContributor
Mark the authoritative semantic modelCertified endorsement
Review changes before they reach ProdGit + pull request
Promote items Dev → Test → ProdDeployment pipeline
Warehouse schema in source control with drift detectionDatabase project
Who exported this report?Purview audit log
What is consuming the capacity?Capacity Metrics app
Why did last night's run fail?Monitoring hub
Too many small filesOPTIMIZE
Slow filters on specific columnsZ-Order
Storage bloat from old versionsVACUUM
One task far slower than the restData skew — salt / AQE
Slow join with one tiny tableBroadcast join
Dataflow Gen2 out of memoryStaging + query folding
Old KQL data slow / old KQL data goneCaching policy / retention policy

Pre-exam checklist

If you can answer every one of these out loud without notes, you are ready.

  • Can you state the Lakehouse vs Warehouse vs Eventhouse decision and the read-only endpoint limitation?
  • Can you describe the watermark incremental pattern end to end, and why MERGE makes it idempotent?
  • Can you implement SCD Type 2 and explain why it takes two MERGE passes?
  • Can you name all six security layers and which engine enforces each?
  • Do you know why ReadAll defeats RLS/CLS/DDM, and what to use instead?
  • Can you distinguish OPTIMIZE, VACUUM, V-Order and Z-Order in one line each?
  • Do you know the capacity throttling ladder and which tool diagnoses it?
  • Can you configure Spark, domain, OneLake and Apache Airflow workspace settings, and say what each controls?
  • Can you choose between Dataflow Gen2, notebook, pipeline and Airflow job from a scenario?
  • Do you know Git vs deployment pipelines vs database projects, and that none of them move data?
  • Can you name the five window types and pick one from a description?
  • Do you know why streaming needs a checkpoint and a watermark?
  • Can you choose between native table, accelerated shortcut and standard shortcut in RTI?
  • Can you triage errors across pipelines, dataflows, notebooks, Eventhouse, Eventstream, T-SQL and shortcuts?
  • Do you know the three query insights views and when to use each?
  • Can you read a Spark UI symptom and name the fix — skew, shuffle, spill, small files, cold start?

The night before

Do not learn anything new. Re-read the traps list and the confusable pairs table, take the free Microsoft practice assessment one final time, and sleep. Recognition speed matters more on this exam than depth of recall.

Disclaimer

These notes are an independent study aid for learning purposes only, not affiliated with or endorsed by Microsoft, and contain no exam content. Microsoft Fabric changes rapidly — always verify against the official documentation and the current DP-700 study guide.