DP-600 · Domain 2: Prepare and serve data · 42% of the exam
Task 2.2: Copy data
Choosing a method to copy data from a Fabric source, copying with a pipeline, dataflow or notebook, adding stored procedures, notebooks and dataflows to a pipeline, and scheduling pipelines, dataflows and notebooks.
Study it
Choosing how to copy data from a Fabric source
Lesson coming
Pipeline activities and schedules for pipelines, dataflows and notebooks
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
A Dataflow Gen2 query reads orders from an API and must load them into an existing table in a Fabric warehouse. Publishing fails on the OrderedAt column, whose type in the query is Date/Time/Timezone. Every other column loads. What should you change?
ASwitch the destination to automatic settings so that the mapping adjusts itself
BChange the schema option from fixed schema to dynamic schema
CTurn on staging for the query so the warehouse compute converts the type
DConvert OrderedAt to Date/Time in the query before the destination
Show the answer and why
ASwitch the destination to automatic settings so that the mapping adjusts itself
Incorrect
Automatic settings aren't available for Warehouse destinations, and they wouldn't make an unsupported type loadable.
BChange the schema option from fixed schema to dynamic schema
Incorrect
With a warehouse destination only fixed schema is supported, and the schema option doesn't change which types load.
CTurn on staging for the query so the warehouse compute converts the type
Incorrect
Staging changes where transformations run; the destination still can't store a DateTimeZone column.
DConvert OrderedAt to Date/Time in the query before the destination
Correct
The Fabric Warehouse destination doesn't accept the DateTimeZone type, so the column must reach it as a Date/Time value.
Dataflow Gen2 destinations support different data types. For a Fabric Warehouse destination, DateTimeZone, Duration, Currency, Binary and some others aren't supported, so such columns must be converted in the query, for example DateTimeZone to DateTime. Automatic settings are supported for Lakehouse, Azure SQL Database and Snowflake destinations, and when loading into a warehouse only fixed schema is supported.
Nadia created a schedule for the LoadGold notebook a year ago. Last month Omar edited the schedule to run an hour earlier. Omar has now left the company and his account was disabled, and since then every scheduled run fails on permissions, although Nadia's account still has all the access the notebook needs. Runs must continue on the same schedule. What should you do?
AHave Nadia update the notebook's schedule
BHave Nadia run the notebook once on demand
CGive Nadia the Admin role in the workspace
DAttach the notebook to a different environment
Show the answer and why
AHave Nadia update the notebook's schedule
Correct
A scheduled notebook runs under the identity of whoever created or last updated the schedule, so Nadia's update moves runs to her account.
BHave Nadia run the notebook once on demand
Incorrect
A manual run uses her identity for that run only; scheduled runs keep the identity of whoever last updated the schedule.
CGive Nadia the Admin role in the workspace
Incorrect
Her permissions are already enough; runs keep using Omar's identity until the schedule is updated.
DAttach the notebook to a different environment
Incorrect
The environment controls libraries and Spark settings, not the identity of scheduled runs.
A notebook run that the scheduler triggers runs under the identity of the user who created or last updated the schedule. Before creating or updating a schedule, make sure that user has the permissions every operation in the notebook needs. When that identity is removed, a user with the right access must update the schedule so that later runs use their identity.
Fast copy is allowed in a Dataflow Gen2 that copies a 3-million-row Azure SQL table into a lakehouse without transformations. The refresh history shows that the standard engine was used, not CopyActivity. You want this query to always use fast copy. What should you do?
AAdd a filter step so the query folds to the source
BTurn off staging for the query
CTurn on Require fast copy for the query
DChange the destination to a Fabric warehouse
Show the answer and why
AAdd a filter step so the query folds to the source
Incorrect
The query already has no transformations; the engine choice comes from the row-count threshold, not folding.
BTurn off staging for the query
Incorrect
Staging doesn't decide whether fast copy is used for a source this small.
CTurn on Require fast copy for the query
Correct
Require fast copy bypasses the size threshold, and the refresh stops if fast copy can't be used.
DChange the destination to a Fabric warehouse
Incorrect
Fast copy currently loads directly only to a lakehouse; a warehouse destination would need staging and a second query.
With fast copy allowed, a dataflow switches to the pipeline Copy activity backend automatically when the data passes a threshold: 100 MB of CSV or Parquet files in ADLS Gen2 or Blob storage, or 5 million rows in a database source. You can bypass the threshold by selecting Require fast copy, which also stops the refresh if fast copy can't be used. Fast copy currently loads directly only to a Lakehouse destination.
A Dataflow Gen2 uses incremental refresh with a monthly bucket size on InvoiceDate to load invoices into a lakehouse. Finance wants each month's rows to be extracted only after the month has ended, so that no partly complete month is ever loaded. Which setting should you turn on?
AOnly extract new data when the maximum value in this column changes
BRequire incremental refresh query to fully fold
COnly extract data for concluded periods
DExtract data from the past: 1 month
Show the answer and why
AOnly extract new data when the maximum value in this column changes
Incorrect
That required setting decides when a bucket is refreshed; it still loads the current, incomplete month.
BRequire incremental refresh query to fully fold
Incorrect
It validates that the query folds to the source; it doesn't hold back the current month.
COnly extract data for concluded periods
Correct
With a monthly bucket size, this setting extracts only complete months that contain no future data.
DExtract data from the past: 1 month
Incorrect
That setting controls how far back the initial load reaches, not whether an incomplete month is loaded.
Dataflow Gen2 incremental refresh divides data into buckets on a Date, DateTime or DateTimeZone column and refreshes a bucket when the maximum value of the change-detection column changes. The optional setting Only extract data for concluded periods limits extraction to periods that are complete, for example whole months with a monthly bucket size. Extract data from the past sets the range of the initial load.
Each night, a vendor drops CSV files into Files/orders of the RetailLH lakehouse in the Retail workspace. The rows must be loaded into dbo.Orders in the FinanceDW warehouse of the Finance workspace. The finance team writes T-SQL and wants neither a pipeline nor an external staging storage account. The engineer who runs the load has the Contributor role in both workspaces. Which statement fits?
AINSERT INTO dbo.Orders SELECT * FROM RetailLH.dbo.orders
BCOPY INTO dbo.Orders FROM 'https://onelake.dfs.fabric.microsoft.com/<workspaceId>/<itemId>/Files/orders/*.csv'
CCOPY INTO dbo.Orders FROM 'https://onelake.dfs.fabric.microsoft.com/Retail/RetailLH.Lakehouse/Files/orders/*.csv'
DCOPY INTO dbo.Orders from the ID-based OneLake path, with a shared access signature in the CREDENTIAL clause
Show the answer and why
AINSERT INTO dbo.Orders SELECT * FROM RetailLH.dbo.orders
Incorrect
Three-part names reach tables of items in the same workspace, not CSV files in the Files section of a lakehouse in another workspace.
BCOPY INTO dbo.Orders FROM 'https://onelake.dfs.fabric.microsoft.com/<workspaceId>/<itemId>/Files/orders/*.csv'
Correct
COPY INTO can load files from OneLake directly, with a path that uses the workspace and item IDs and the user's Microsoft Entra identity.
CCOPY INTO dbo.Orders FROM 'https://onelake.dfs.fabric.microsoft.com/Retail/RetailLH.Lakehouse/Files/orders/*.csv'
Incorrect
With OneLake as the source, paths must use workspace and item IDs; friendly workspace and item names aren't supported.
DCOPY INTO dbo.Orders from the ID-based OneLake path, with a shared access signature in the CREDENTIAL clause
Incorrect
For OneLake sources, only Microsoft Entra ID and the workspace identity are supported; SAS tokens, shared keys and connection strings aren't.
The COPY statement in a Fabric warehouse loads CSV, JSONL and Parquet files from Azure storage accounts and from OneLake, so files in a lakehouse's Files section can be ingested without an external staging account. With OneLake as the source, the path must use workspace and item IDs, the credential must be Microsoft Entra ID or the workspace identity, and a user who runs it with their own identity needs at least the Contributor role on both the source and the target workspace. T-SQL that reads tables with three-part names works only within the same workspace.
At 10:00 on a weekday, a developer publishes a change to a Dataflow Gen2 whose only schedule runs at 02:00. Minutes later, the operations team sees the dataflow's queries running against the source ERP database during business hours. What started this?
APublishing moves the next scheduled refresh to the publish time
BThe editor keeps refreshing the data preview after the dataflow is published
CThe 02:00 refresh failed, and failed refreshes retry at the next publish
DA successful publish starts an on-demand refresh of the dataflow
Show the answer and why
APublishing moves the next scheduled refresh to the publish time
Incorrect
The schedule stays as it is; the extra refresh is the on-demand one that publishing starts.
BThe editor keeps refreshing the data preview after the dataflow is published
Incorrect
Data previews run while you author; the queries seen after publishing come from the refresh it starts.
CThe 02:00 refresh failed, and failed refreshes retry at the next publish
Incorrect
Nothing ties retries to publishing; a successful publish itself starts the refresh.
DA successful publish starts an on-demand refresh of the dataflow
Correct
When a dataflow publish completes successfully, an on-demand refresh starts.
A dataflow refresh can be triggered on demand or by a refresh schedule of up to 48 slots a day. Besides selecting Refresh or running a pipeline with a Dataflow activity, a successful publish of a dataflow also starts an on-demand refresh. Plan publishes of dataflows that read busy sources with that in mind.
You're adding a daily schedule to a pipeline that must keep running for the foreseeable future. The schedule dialog asks for an end date. What should you do?
ASet the end date far in the future, such as 2099
BLeave the end date empty to create an open-ended schedule
CSet the end date to today and turn on auto-renew
DUse an event-based trigger instead, which has no end date
Show the answer and why
ASet the end date far in the future, such as 2099
Correct
Pipeline schedules need both a start and an end date, so a distant end date keeps it running long term.
BLeave the end date empty to create an open-ended schedule
Incorrect
There's no option for an open-ended schedule.
CSet the end date to today and turn on auto-renew
Incorrect
Schedules have no auto-renew; they end on their end date.
DUse an event-based trigger instead, which has no end date
Incorrect
An event trigger starts runs on events, not daily at a set time.
When you schedule a pipeline, you specify a schedule type, frequency, start and end dates and times, and a time zone. You must set both a start and an end date because there's no option for an open-ended schedule; to keep a pipeline running long term, set the end date far in the future, for example 01/01/2099. You can edit or stop the schedule at any time.
A Script activity in a pipeline must run CREATE TABLE and INSERT statements against a warehouse before a load. These statements don't return data. Which script type should you choose?
AQuery
BNonQuery
CStored procedure
DLookup
Show the answer and why
AQuery
Incorrect
Query is for statements that return a result set, such as SELECT.
BNonQuery
Correct
NonQuery runs statements that don't return data, such as INSERT, UPDATE, DELETE, CREATE and DROP.
CStored procedure
Incorrect
That's a separate activity, not a Script activity script type.
DLookup
Incorrect
Lookup is another activity that reads data; it isn't a Script activity setting.
The Script activity runs query and nonquery SQL scripts against data stores that support DML and DDL, such as Fabric Data Warehouse. In its settings you choose Query to get a data result from SELECT statements or NonQuery for statements that don't return data, such as INSERT, UPDATE, DELETE, CREATE and DROP.
A user with the Contributor role in a workspace tries to refresh a Dataflow Gen2 there on demand, and the refresh isn't allowed. She has access to all the dataflow's connections. What does she need?
AOwnership of every connection the dataflow uses
BA Power BI Pro license
CEdit permission shared on the dataflow item
DThe Member role or higher in the workspace
Show the answer and why
AOwnership of every connection the dataflow uses
Incorrect
Access to the connections is required, not ownership, and she already has access.
BA Power BI Pro license
Incorrect
The documented requirement is the workspace role and connection access, not a Pro license.
CEdit permission shared on the dataflow item
Incorrect
Item-level edit permission doesn't replace the Member role that refreshing requires.
DThe Member role or higher in the workspace
Correct
The user who triggers a dataflow refresh must have Member or higher access to the workspace and access to its connections.
To refresh a Dataflow Gen2, the user who triggers the refresh must have Member (or higher) access to the workspace and access to all connections the dataflow uses. The Contributor role doesn't meet that prerequisite, and neither a license nor an item-level permission replaces it.
You add a Stored procedure activity to a pipeline and select a warehouse procedure that has four parameters. What's the quickest way to add the parameter definitions to the activity?
AAdd each one with + New, typing its name, type and nullability
BDefine them as pipeline variables with the same names
CSelect Import to pull them from the procedure
DWrap the call in a Script activity instead
Show the answer and why
AAdd each one with + New, typing its name, type and nullability
Incorrect
That works, but it's the manual route; Import is quicker.
BDefine them as pipeline variables with the same names
Incorrect
Pipeline variables don't define the activity's procedure parameters.
CSelect Import to pull them from the procedure
Correct
Import brings in the parameters with their names and types, ready for values.
DWrap the call in a Script activity instead
Incorrect
A Script activity can run the call, but it doesn't import the procedure's parameter definitions.
In the Stored procedure activity's settings, after choosing a connection and a stored procedure, you can select Import to import the parameters from the stored procedure as it's stored in the data source, or add them manually with + New by providing name, data type and nullability. Each parameter then takes a value or a dynamic expression.