CertKeen
Microsoft Power BI & FabricBeta · expanding bank

Fabric Analytics Engineer (DP-600) Practice Exam

Practice questions for the Microsoft Certified: Fabric Analytics Engineer Associate (DP-600: Implementing Analytics Solutions Using Microsoft Fabric) certification: workspace roles, item sharing and permissions, row-level, column-level, object-level and folder-level security, dynamic data masking, sensitivity labels and endorsement; Git integration, Power BI projects and TMDL, deployment pipelines and rules, impact analysis, the XMLA endpoint and reusable assets; getting data with shortcuts, mirroring, gateways, pipelines and Dataflow Gen2, the OneLake catalog and Real-Time hub, choosing between lakehouse, warehouse, eventhouse and SQL database, and OneLake integration for eventhouses and semantic models; transforming data with T-SQL, PySpark and Power Query, star schemas, slowly changing dimensions, deduplication and Delta table maintenance; querying with the visual query editor, SQL, KQL and DAX; and semantic models, including storage modes, Direct Lake on OneLake and on SQL analytics endpoints with framing, automatic updates and fallback, relationships and bridge tables, DAX variables, iterators and window functions, calculation groups, dynamic format strings, field parameters, composite and large models, performance tuning and incremental refresh. Every question includes a written explanation.

100 questions · 12 free preview

$19 · lifetime access
Try free sample

Studying more than one? All Microsoft Power BI & Fabric exams for $29 · every exam for $79

Free sample questions

  1. Sample · question 1 · Reviewing access in the catalog Secure tab

    A security officer at Elmstead Water wants one place in Fabric to review workspace role assignments and OneLake security roles across many items, see which users have access to what, and create or edit OneLake security roles. Which experience should she use?

    • A.The Explore tab of the OneLake catalog
    • B.The Secure tab of the OneLake catalogcorrect
    • C.The Monitoring hub
    • D.The Admin monitoring workspace

    Why: The OneLake catalog's Secure tab gives a unified view of workspace roles and OneLake security roles across items, lets admins audit permissions and user access, and supports creating, editing and deleting security roles. The Explore tab is for finding and understanding items, the Monitoring hub tracks job runs, and the Admin monitoring workspace provides usage reports rather than role management.

    Open this question on its own page →
  2. Sample · question 2 · Shortcut caching for cross-cloud egress

    Data engineers repeatedly read the same Parquet files from a Google Cloud Storage bucket through an external shortcut, and the cross-cloud egress charges are growing. The files change only occasionally. What should you configure to reduce egress?

    • A.Convert the shortcut into an internal OneLake shortcut
    • B.Turn on OneLake availability for the bucket
    • C.Enable shortcut caching in the workspace's OneLake settings and choose a retention periodcorrect
    • D.Create a mirrored database for the bucket

    Why: Shortcut caching stores files read through supported external shortcuts, including Google Cloud Storage and Amazon S3, in a workspace-level cache for a retention period of 1 to 28 days, so repeated reads are served from OneLake instead of the remote provider. Internal shortcuts can point only to OneLake locations, OneLake availability is an eventhouse feature, and mirroring targets databases rather than storage buckets.

    Open this question on its own page →
  3. Sample · question 3 · Open mirroring landing zone for custom sources

    A software vendor's application tracks inserts, updates and deletes in its own database engine, which Fabric doesn't support as a mirroring source. The vendor wants that change data to be continuously merged into Delta tables in Fabric without building pipelines. What should the vendor use?

    • A.A Dataflow Gen2 with incremental refresh
    • B.An external OneLake shortcut to the application database
    • C.An open mirrored database, with the application writing change files to its landing zonecorrect
    • D.Metadata mirroring of the application's catalog

    Why: Open mirroring lets any application write change data, in the format the open mirroring specification defines, to the landing zone of a mirrored database. Fabric then merges the inserts, updates and deletes into Delta tables. Dataflows require scheduled refreshes, shortcuts can't target a database engine, and metadata mirroring only references data that already exists in a supported catalog.

    Open this question on its own page →
  4. Sample · question 4 · Distinct and conditional counts in KQL

    A KQL table named SignIns has Timestamp, UserId and Result columns. For each hour of the last seven days, you need the number of distinct users and the number of sign-ins with Result equal to Failed. Which query should you use?

    • A.SignIns | where Timestamp > ago(7d) | summarize Users = dcount(UserId), Failures = countif(Result == "Failed") by bin(Timestamp, 1h)correct
    • B.SignIns | where Timestamp > ago(7d) | summarize Users = count(UserId), Failures = count() by bin(Timestamp, 1h)
    • C.SignIns | where Timestamp > ago(7d) and Result == "Failed" | summarize Users = dcount(UserId), Failures = count() by bin(Timestamp, 1h)
    • D.SignIns | where Timestamp > ago(7d) | summarize Users = dcount(UserId), Failures = countif(Result == "Failed") by Timestamp

    Why: dcount returns the number of distinct users, and countif counts only rows that meet a condition, so both metrics can be computed in one summarize per hourly bin. Filtering to failed rows first would restrict the distinct user count to users who failed. count(UserId) counts rows rather than distinct users, and grouping by the raw Timestamp doesn't produce hourly buckets.

    Open this question on its own page →
  5. Sample · question 5 · Converting strings to dates in PySpark

    A PySpark DataFrame df has a string column OrderDateText with values such as 2026-03-14. You need a new column OrderDate of the date type for loading into a Delta table. Which statement should you use?

    • A.df = df.withColumnRenamed("OrderDateText", "OrderDate")
    • B.df = df.withColumn("OrderDate", to_date(col("OrderDateText"), "yyyy-MM-dd"))correct
    • C.df = df.withColumn("OrderDate", col("OrderDateText").cast("string"))
    • D.df = df.select("OrderDateText").alias("OrderDate")

    Why: withColumn adds a column, and to_date parses the string with the yyyy-MM-dd pattern into a date value. Renaming the column keeps it as a string, and casting to string doesn't change the type. Selecting with an alias also leaves the data as text and drops the other columns.

    Open this question on its own page →
  6. Sample · question 6 · Warehouse replacements for unsupported types

    You are migrating a SQL Server table to a Fabric warehouse. It contains a CustomerName nvarchar(100) column and a CreatedAt datetime column, neither of which is supported for warehouse tables. Which two data types should you use instead? (Select TWO.)

    • A.varchar(100) for CustomerNamecorrect
    • B.ntext for CustomerName
    • C.smalldatetime for CreatedAt
    • D.datetime2(6) for CreatedAtcorrect
    • E.datetimeoffset for CreatedAt

    Why: Fabric warehouse tables don't support nchar and nvarchar, so you use char and varchar, which store Unicode text with a UTF-8 collation. datetime and smalldatetime aren't supported for tables, and datetime2 is the replacement, with up to six digits of fractional-second precision. The varchar length is measured in bytes, so allow extra length if names include non-ASCII characters. ntext and datetimeoffset are also unsupported for persisted tables.

    Open this question on its own page →
  7. Sample · question 7 · Top item value with the INDEX function

    A card visual must display the gross margin of the most profitable customer among the customers currently selected by the report's slicers. Which measure uses a DAX window function to return this value?

    • A.Best Customer Margin = CALCULATE([Gross Margin], INDEX(-1, ALLSELECTED('Customer'[CustomerName]), ORDERBY([Gross Margin], DESC)))
    • B.Best Customer Margin = CALCULATE([Gross Margin], INDEX(2, ALLSELECTED('Customer'[CustomerName]), ORDERBY([Gross Margin], DESC)))
    • C.Best Customer Margin = CALCULATE([Gross Margin], INDEX(1, ALLSELECTED('Customer'[CustomerName]), ORDERBY([Gross Margin], DESC)))correct
    • D.Best Customer Margin = CALCULATE([Gross Margin], INDEX(1, ALL('Customer'[CustomerName]), ORDERBY('Customer'[CustomerName], ASC)))

    Why: INDEX returns the row at an absolute position in a relation, so position 1 with customers ordered by gross margin descending is the most profitable selected customer, and CALCULATE evaluates the measure for that customer. Position -1 counts from the end and returns the least profitable customer, and position 2 returns the runner-up. Ordering every customer alphabetically returns the first name in the list and ignores the slicer selection.

    Open this question on its own page →
  8. Sample · question 8 · Calculated columns in Direct Lake models

    In a Direct Lake on SQL analytics endpoint semantic model, a modeler tries to add a calculated column that concatenates City and Country in the Customer table, but the option isn't available. How should the requirement be met?

    • A.Switch the model to the large semantic model storage format
    • B.Add the column with a calculation group
    • C.Set the Direct Lake behavior property to DirectQueryOnly
    • D.Add the column to the Customer Delta table upstream, for example with a notebook or pipeline, and refresh the modelcorrect

    Why: Direct Lake on SQL analytics endpoints doesn't support calculated columns or calculated tables that reference Direct Lake tables, so data preparation such as adding derived columns belongs upstream in the Delta tables. After the column exists in the table, a refresh exposes it to the model. The storage format and fallback settings don't enable calculated columns, and calculation groups modify measures rather than add columns.

    Open this question on its own page →
  9. Sample · question 9 · Diagnosing fallback with TABLETRAITS

    Some report pages built on a Direct Lake on SQL analytics endpoint model are slower than expected, and you suspect that certain tables use DirectQuery fallback. Which DAX query shows the fallback reason for each table?

    • A.EVALUATE TABLETRAITS()correct
    • B.EVALUATE INFO.VIEW.TABLES()
    • C.EVALUATE COLUMNSTATISTICS()
    • D.EVALUATE SUMMARIZECOLUMNS('Sales'[Region])

    Why: Running EVALUATE TABLETRAITS() returns a DirectLakeFallbackInfo column that gives the fallback reason for each table, with None meaning the table runs in Direct Lake mode. INFO.VIEW.TABLES returns table metadata, COLUMNSTATISTICS returns column statistics such as cardinality, and a SUMMARIZECOLUMNS query only returns data.

    Open this question on its own page →
  10. Sample · question 10 · Default lakehouse rules for notebooks

    A notebook in the Development stage of a deployment pipeline is attached to the lakehouse DevLake as its default lakehouse. After deployment to Test, the notebook must use TestLake as its default lakehouse automatically. What should you configure?

    • A.A default lakehouse rule for the notebook in the Test stagecorrect
    • B.A parameter rule on the notebook in the Development stage
    • C.A data source rule for the notebook in the Test stage
    • D.An environment item attached to the notebook in the Test stage

    Why: Deployment pipelines support default lakehouse rules for notebooks, which set the lakehouse attached as default in the target stage every time content is deployed there. Data source and parameter rules apply to items such as semantic models, dataflows and paginated reports, and rules can't be created in the Development stage. An environment configures Spark settings and libraries rather than the default lakehouse.

    Open this question on its own page →
  11. Sample · question 11 · Opening PBIP projects without a pbip file

    Leah clones a Git repository that a Fabric workspace syncs to. The repository contains a SalesReport.Report folder and a Sales.SemanticModel folder, but no .pbip file. How can she open both the report and the semantic model for editing in Power BI Desktop?

    • A.Open the model.bim file in the Sales.SemanticModel folder
    • B.Open the definition.pbir file in the SalesReport.Report foldercorrect
    • C.Create a new .pbix file and import both folders
    • D.She can't, because Power BI Desktop requires the .pbip file

    Why: The .pbip file is only an optional shortcut to a report folder. Opening definition.pbir in the report folder opens the report and, when it has a relative reference to the semantic model, the model as well. A model file alone isn't how Power BI Desktop opens a project, and there's no import of project folders into a .pbix.

    Open this question on its own page →
  12. Sample · question 12 · Detect data changes in incremental refresh

    An incremental refresh policy refreshes the last 10 days of the Orders table on every run. Most days don't change, but some older days within the window are corrected occasionally. The source has a LastModified audit column. How can you refresh only the days whose data changed?

    • A.Enable Only refresh complete days
    • B.Enable Get the latest data in real time with DirectQuery
    • C.Reduce the archive period to 10 days
    • D.Enable Detect data changes and select the LastModified columncorrect

    Why: Detect data changes evaluates the maximum value of a chosen date/time column, such as an audit timestamp, for each period in the incremental window and refreshes only the periods where that value changed. The column should differ from the one used to filter on RangeStart and RangeEnd. Only refresh complete days controls partial-day handling, the real-time option adds a DirectQuery partition, and shortening the archive period deletes history.

    Open this question on its own page →

Like the sample?

Other practice exams