DP-600 · Domain 2: Prepare and serve data · 42% of the exam
Task 2.1: Create objects in a lakehouse or warehouse
Ingesting with a pipeline, dataflow or notebook, shortcuts, file partitioning, views, functions and stored procedures, and enriching data with new columns or tables.
Study it
Ingesting with pipelines, dataflows and notebooks
Lesson coming
Shortcuts and file partitioning
Lesson coming
Views, functions, stored procedures and new columns or tables
Lesson coming
Sample questions
Try each one before opening the answer. Every option is explained, with the Microsoft documentation page that proves it.
Question 1 · choose 1
The schema-enabled lakehouse AnalyticsLH must expose all 40 tables of the finance schema in the FinanceLH lakehouse, which sits in another workspace, without copying data. The finance team adds new tables to that schema every few weeks, and they must appear in AnalyticsLH without anyone creating anything else. What should you create in AnalyticsLH?
AA table shortcut in Tables for each of the 40 tables
BA shortcut in Files that points to the Tables/finance folder of FinanceLH
CA schema shortcut that points to the finance schema of FinanceLH
DA Copy job that copies the finance schema into AnalyticsLH
Show the answer and why
AA table shortcut in Tables for each of the 40 tables
Incorrect
Each table shortcut links to one table, so a table added to the finance schema later needs another shortcut.
BA shortcut in Files that points to the Tables/finance folder of FinanceLH
Incorrect
Table discovery doesn't happen in the Files folder, so the Delta tables wouldn't appear as tables.
CA schema shortcut that points to the finance schema of FinanceLH
Correct
A schema shortcut creates a schema whose tables reference the source schema, and changes in the source, including new tables, are reflected automatically.
DA Copy job that copies the finance schema into AnalyticsLH
Incorrect
A Copy job copies the data, which the requirement rules out.
In a schema-enabled lakehouse, a schema shortcut creates a new schema that references Delta tables in a schema of another lakehouse or in a folder of external storage such as ADLS Gen2. Changes to the tables in the source location are reflected in the schema automatically. Shortcuts in the Tables section can link to a single table or to a schema, while shortcuts in Files don't get table discovery.
A faulty load changed rows in dbo.FactSales, a 2 TB table in the SalesDW warehouse, at 19:00 UTC yesterday. Testers need their own copy of the table as it was at 18:00 UTC, in a test schema of the same warehouse, to rerun the load against. The copy must be ready in seconds without duplicating the 2 TB of data, and their changes to it must never reach dbo.FactSales. What should you run?
ACREATE TABLE test.FactSales AS SELECT * FROM dbo.FactSales, then reverse the faulty load
BA shortcut in a test lakehouse that points to dbo.FactSales
CCREATE TABLE test.FactSales AS CLONE OF dbo.FactSales AT a timestamp of 18:00 UTC yesterday
DCREATE TABLE test.FactSales AS CLONE OF dbo.FactSales, with no timestamp
Show the answer and why
ACREATE TABLE test.FactSales AS SELECT * FROM dbo.FactSales, then reverse the faulty load
Incorrect
CTAS writes a full physical copy of the 2 TB table and takes far longer than seconds.
BA shortcut in a test lakehouse that points to dbo.FactSales
Incorrect
A shortcut reads the table as it is now, faulty rows included, and the testers' changes would have to go to the source.
CCREATE TABLE test.FactSales AS CLONE OF dbo.FactSales AT a timestamp of 18:00 UTC yesterday
Correct
A clone copies only metadata, can target a point in time within the retention period, and is independent of its source afterwards.
DCREATE TABLE test.FactSales AS CLONE OF dbo.FactSales, with no timestamp
Incorrect
Without a point in time, the clone reflects the current table, which already contains the faulty changes.
CREATE TABLE AS CLONE OF creates a zero-copy clone: the metadata is copied while the new table references the same Parquet files in OneLake. The clone can be based on the current state or on a point in time within the configured data retention period (30 days by default), within or across schemas of one warehouse. After creation, DML and DDL on the clone don't affect the source, and changes to the source don't reach the clone.
A Delta table of web events holds the last three years of data, about 1.5 GB a day, and feeds a Direct Lake semantic model. Every night a notebook deletes the oldest day and appends the newest. Because the table isn't partitioned, each delete rewrites most of its Parquet files, and the model has to reload almost everything after framing. Each event row carries EventDate, Region (eight values) and UserID. How should you lay out the table so that it keeps serving Direct Lake well?
APartition it by a Month column derived from EventDate
BPartition it by UserID so each user's rows sit together
CPartition it by EventDate, one partition for each day
DPartition it by Region, which has only eight values
Show the answer and why
APartition it by a Month column derived from EventDate
Correct
About 36 values stays under the guidance of fewer than 100-200, and a day's delete touches only its own month's files.
BPartition it by UserID so each user's rows sit together
Incorrect
UserID has a very high cardinality, which creates many small Parquet files and row groups that hurt Direct Lake transcoding.
CPartition it by EventDate, one partition for each day
Incorrect
Three years of days is about 1,095 values, far above the fewer than 100-200 distinct values recommended for a partition column.
DPartition it by Region, which has only eight values
Incorrect
The cardinality is low, but every region holds rows of every day, so the nightly delete still rewrites files in all eight partitions.
With a rolling-window batch pattern, deleting one day from an unpartitioned Delta table can touch almost every Parquet file, so Direct Lake must retranscode most of the data. Partitioning helps only when the partition column collocates the data that the delete removes, and it must have a low cardinality: as a best practice, fewer than 100-200 distinct values, because extensive partitioning multiplies Parquet files, row groups and column segments. When no column fits, create one by reducing the cardinality of an existing one, for example a month derived from the date.
Analysts want a new LoyaltyTier column on dbo.DimCustomer in a Fabric warehouse, filled from a lookup table. The table has reports and views built on it, so it must keep its name and existing rows. Which approach works in Fabric Data Warehouse?
AALTER TABLE ... ADD LoyaltyTier varchar(20) NULL, then UPDATE it from the lookup table
BALTER TABLE dbo.DimCustomer ADD LoyaltyTier varchar(20) NOT NULL DEFAULT 'None' in one step
CADD a computed column that looks up the tier from the lookup table
DRebuild the table with CREATE TABLE AS SELECT under the same name
Show the answer and why
AALTER TABLE ... ADD LoyaltyTier varchar(20) NULL, then UPDATE it from the lookup table
Correct
Warehouse supports adding nullable columns with ALTER TABLE, and UPDATE can then fill them in place.
BALTER TABLE dbo.DimCustomer ADD LoyaltyTier varchar(20) NOT NULL DEFAULT 'None' in one step
Incorrect
Only nullable columns can be added; other ALTER TABLE operations, such as adding a NOT NULL column with a default, are blocked.
CADD a computed column that looks up the tier from the lookup table
Incorrect
Adding a computed column isn't among the ALTER TABLE operations that Warehouse supports, so the statement is blocked.
DRebuild the table with CREATE TABLE AS SELECT under the same name
Incorrect
CTAS creates a new table, so reusing the name means dropping dbo.DimCustomer first, which breaks the views and reports built on it.
In Fabric Data Warehouse, ALTER TABLE supports only a subset of operations: adding nullable columns of supported data types, dropping columns, and adding or dropping primary key, unique and foreign key constraints with NOT ENFORCED. Other ALTER TABLE operations are blocked. Adding the column as nullable and filling it with UPDATE keeps the table, its rows and the objects that depend on it.
Data scientists work in Spark notebooks attached to the ScienceLH lakehouse. They need to read dbo.FactOrders, a table in the OrdersDW warehouse of another workspace, by table name in Spark SQL, always seeing its current data and without a copy being made. What should you do?
ACreate a shortcut in OrdersDW that points to ScienceLH
BRun a nightly Copy activity from OrdersDW into a ScienceLH table
CCreate a OneLake shortcut in the Tables section of ScienceLH that points to dbo.FactOrders
DCreate a view in ScienceLH's SQL analytics endpoint that selects from OrdersDW.dbo.FactOrders
Show the answer and why
ACreate a shortcut in OrdersDW that points to ScienceLH
Incorrect
Shortcuts can be created in lakehouses and KQL databases, not in warehouses, and it would point the wrong way.
BRun a nightly Copy activity from OrdersDW into a ScienceLH table
Incorrect
A copy goes stale between runs and duplicates the data.
CCreate a OneLake shortcut in the Tables section of ScienceLH that points to dbo.FactOrders
Correct
An internal shortcut can point to a warehouse table, and a Delta shortcut in Tables can be read as a table with Spark SQL.
DCreate a view in ScienceLH's SQL analytics endpoint that selects from OrdersDW.dbo.FactOrders
Incorrect
Cross-database references reach only warehouses and endpoints in the current workspace, and OrdersDW is in another one.
Shortcuts can be created in lakehouses and KQL databases. An internal OneLake shortcut can point to data in other Fabric items, including warehouses, across workspaces, and the item types don't need to match. A shortcut in the Tables section that points to Delta data is recognized as a table, so Spark can read it with Spark SQL by name, and it always reflects the current data.
To help report authors, an analyst added foreign key constraints between tables in a lakehouse's SQL analytics endpoint. Since then, new columns that Spark jobs add to the Delta table dbo.Sales don't appear in the endpoint, while new tables still do. What should you do?
ARun OPTIMIZE on dbo.Sales so that the endpoint picks up the new files sooner
BTurn on Delta column mapping by name on dbo.Sales
CRecreate the constraints with NOT ENFORCED
DDrop the foreign key constraints on the table in the SQL analytics endpoint
Show the answer and why
ARun OPTIMIZE on dbo.Sales so that the endpoint picks up the new files sooner
Incorrect
Compaction rewrites the Parquet files but doesn't lift the block that the foreign key places on schema changes.
BTurn on Delta column mapping by name on dbo.Sales
Incorrect
Column mapping doesn't lift the block that a foreign key in the endpoint places on schema changes.
CRecreate the constraints with NOT ENFORCED
Incorrect
Constraints in Fabric are already NOT ENFORCED; the problem is the foreign key itself, not its enforcement.
DDrop the foreign key constraints on the table in the SQL analytics endpoint
Correct
A foreign key added in the endpoint prevents further schema changes, such as new columns, from reaching the table.
The SQL analytics endpoint generates T-SQL tables from the lakehouse's Delta tables and keeps their metadata in sync automatically. If you add a foreign key constraint between tables in the SQL analytics endpoint, you can't make further schema changes, such as adding new columns. When expected Delta columns don't show up, check for a foreign key constraint that might prevent updates on the table.
In a notebook attached to a schema-enabled lakehouse, a data engineer runs df.write.mode("overwrite").saveAsTable("productdevelopment") without naming a schema. Where does the table go?
AA new schema named productdevelopment
BThe Files folder, as an unregistered Delta folder
CThe write fails, because schema-enabled lakehouses require a schema name
DThe dbo schema of the default lakehouse
Show the answer and why
AA new schema named productdevelopment
Incorrect
The name is the table's; a schema is used only when you write schema.table.
BThe Files folder, as an unregistered Delta folder
Incorrect
saveAsTable registers a table under Tables, not a folder in Files.
CThe write fails, because schema-enabled lakehouses require a schema name
Incorrect
The schema part can be omitted; Spark then uses the default schema.
DThe dbo schema of the default lakehouse
Correct
Without a schema name, the table is stored in the default dbo schema.
Every schema-enabled lakehouse includes a dbo default schema under Tables that can't be renamed or removed. To store a table in a specific schema, include the schema name when you save it, for example saveAsTable("marketing.productdevelopment"); without a schema name, the table goes to the dbo schema. In code, the four-part namespace workspace.lakehouse.schema.table falls back to defaults for omitted parts.
A deployment script creates lakehouses with the Create Lakehouse REST API. The team later finds that these lakehouses have no schema support, unlike the ones they create in the Fabric portal. What should the script include?
AA follow-up call that enables schemas on the existing lakehouses
B"enableSchemas": true in the request's creationPayload
CA dbo schema created with Spark SQL after creation
DThe Lakehouse schemas option in the workspace settings
Show the answer and why
AA follow-up call that enables schemas on the existing lakehouses
Incorrect
Tools that convert a non-schema lakehouse to a schema-enabled one in place aren't available yet.
B"enableSchemas": true in the request's creationPayload
Correct
Through the REST API, schemas aren't enabled by default and must be requested in the creation payload.
CA dbo schema created with Spark SQL after creation
Incorrect
A non-schema lakehouse doesn't become schema-enabled by running Spark SQL in it.
DThe Lakehouse schemas option in the workspace settings
Incorrect
Schema support is chosen per lakehouse at creation, not as a workspace setting.
Schemas are enabled by default when you create a lakehouse in the Fabric portal, but not when you create one through the Create Lakehouse REST API, where you include "enableSchemas": true in the creationPayload. Migration tools that convert a non-schema lakehouse to a schema-enabled lakehouse without moving data aren't available yet.
A pipeline's Copy activity loads CSV files into a lakehouse table with default settings, in a workspace where V-Order is off for Spark sessions. How are the table's files written?
AIn V-Order, because Copy writes lakehouse tables in V-Order by default
BWithout V-Order, because the workspace's Spark default applies to every writer
CAs CSV files under Tables, because Copy keeps the source format
DIn V-Order only if the table has the delta.parquet.vorder.enabled property
Show the answer and why
AIn V-Order, because Copy writes lakehouse tables in V-Order by default
Correct
The lakehouse connector writes data to lakehouse tables in V-Order unless you change it.
BWithout V-Order, because the workspace's Spark default applies to every writer
Incorrect
The Spark session setting governs Spark writes; the Copy activity has its own default.
CAs CSV files under Tables, because Copy keeps the source format
Incorrect
Copying to a lakehouse table writes Delta Parquet, not the source CSV files.
DIn V-Order only if the table has the delta.parquet.vorder.enabled property
Incorrect
The Copy activity uses V-Order by default without needing that table property.
The Copy activity's lakehouse connector writes data to lakehouse tables in V-Order by default. V-Order for Spark is controlled separately, by the spark.sql.parquet.vorder.default session setting, table properties and writer options, and it's disabled by default for Spark in new workspaces.
A user with the Viewer role in a workspace tries to run CREATE TABLE dbo.Orders_Test AS CLONE OF dbo.Orders in its warehouse, and it fails. Which change would let them clone the table?
AGive them SELECT on dbo.Orders and CREATE TABLE in the dbo schema, keeping the Viewer role
BShare the warehouse with them with Read all data using SQL
CGive them the Contributor role, with SELECT on the table and CREATE TABLE in the schema
DRun the statement in the lakehouse's SQL analytics endpoint instead
Show the answer and why
AGive them SELECT on dbo.Orders and CREATE TABLE in the dbo schema, keeping the Viewer role
Incorrect
SELECT is needed, but the Viewer workspace role can't create a clone.
BShare the warehouse with them with Read all data using SQL
Incorrect
ReadData lets them read tables; it doesn't allow creating clones.
CGive them the Contributor role, with SELECT on the table and CREATE TABLE in the schema
Correct
Cloning needs Admin, Member or Contributor, SELECT on every row and column of the source, and CREATE TABLE in the target schema.
DRun the statement in the lakehouse's SQL analytics endpoint instead
Incorrect
Clone table isn't supported on the SQL analytics endpoint of a lakehouse.
Users with the Admin, Member or Contributor workspace role can clone tables in the workspace; the Viewer role can't. They also need SELECT permission on all the rows and columns of the source table and CREATE TABLE permission in the schema where the clone is created. Table clones aren't supported on the SQL analytics endpoint of a lakehouse.