CertSafari

    Free Microsoft Certified: Fabric Analytics Engineer Associate (DP-600) Sample Questions

    35 free sample questions from our bank of 301+, covering every exam domain, with answers and detailed explanations. Updated August 2026.

    Domain 1: Maintain a data analytics solution

    Subdomain 1.2: Maintain the analytics development lifecycle

    1.You are managing a Microsoft Fabric workspace connected to an Azure DevOps Git repository. You have created a new semantic model in Power BI Desktop and saved it as a Power BI Project (.pbip). You commit and push the files to the remote branch. You need to ensure the new semantic model is visible in the Fabric workspace. What should you do?

    1. A.From the Workspace settings, disconnect and reconnect the Git repository.
    2. B.From the Source Control icon in the workspace, select 'Update from Git'.
    3. C.From Power BI Desktop, publish the report to the workspace.
    4. D.From the Deployment Pipeline, deploy the content from the Development stage.
    Show answer & explanation

    Correct answer: BFrom the Source Control icon in the workspace, select 'Update from Git'.

    • A. Disconnecting and reconnecting the Git repository is an unnecessary and disruptive action. It is not required to pick up new commits, as the workspace provides a built-in mechanism to synchronize changes from the connected branch without reconfiguring the connection.
    • B. This is the correct workflow for Microsoft Fabric Git integration. Once changes are pushed to the remote branch, the workspace UI will indicate that there are incoming changes. Selecting 'Update' (or 'Update from Git') from the Source Control pane pulls the latest committed metadata into the Fabric workspace, effectively creating the new semantic model.
    • C. Publishing from Power BI Desktop bypasses the Git-driven workflow. While publishing a .pbix file to the service is common, it is not the correct approach when using .pbip projects managed via Git. Relying on Desktop publishing can lead to conflicts between the service and the Git repository's source of truth.
    • D. Deployment Pipelines are used to move Fabric items between different workspace environments (such as Dev, Test, and Prod). They do not serve as the mechanism to import or synchronize new content from a Git repository into the initial workspace.

    Subdomain 1.2: Maintain the analytics development lifecycle

    2.You are using a deployment pipeline. You have deployed a semantic model and a report from Dev to Test. In the Test stage, you want to ensure the report uses the semantic model deployed in the Test stage, not the one in Dev. What feature handles this automatically?

    1. A.Auto-binding
    2. B.Deployment rules
    3. C.Lineage view
    4. D.Cross-workspace binding
    Show answer & explanation

    Correct answer: AAuto-binding

    • A. Correct. Auto-binding is the specific Microsoft feature in deployment pipelines that ensures when a report and its dependent semantic model are both deployed to a new stage, the report is automatically updated to point to the semantic model in that same stage.
    • B. Incorrect. Deployment rules are used to update specific data source connections (like a SQL server string) or parameter values during deployment. While they are a part of pipeline management, the default mechanism for connecting a report to its stage-local semantic model is auto-binding.
    • C. Incorrect. Lineage view provides a visual map of how data flows between items (data sources, semantic models, reports) within a workspace, but it does not manage the logic of rebinding items during a deployment process.
    • D. Incorrect. Cross-workspace binding refers to a report in one workspace connecting to a semantic model in a different workspace. It is not the feature responsible for the automatic stage-to-stage rebinding within a deployment pipeline.

    Subdomain 1.2: Maintain the analytics development lifecycle

    3.You are working with a Power BI Project (.pbip). You want to prevent temporary files and local user settings from being committed to the Git repository. Which file should you configure?

    1. A..gitattributes
    2. B..gitignore
    3. C.config.json
    4. D.dependencies.json
    Show answer & explanation

    Correct answer: B.gitignore

    • A. The .gitattributes file is used to define attributes for paths in a Git repository, such as line ending conversions, diff strategies, or export-ignore rules. It is not used to prevent files from being tracked or committed to the repository.
    • B. The .gitignore file is the standard mechanism in Git used to specify files and directories that should be ignored and not tracked. In a Power BI Project (.pbip) context, this is where you configure patterns to exclude temporary files, cache folders, and local user settings (like User.zip) from the repository.
    • C. The config.json file is typically a project or application configuration file used to store project-specific metadata or settings. It does not provide instructions to the Git version control system regarding which files to ignore.
    • D. The dependencies.json file is used to manage and list project dependencies and their versions. It has no role in the Git commit process or the exclusion of files from version control.

    Subdomain 1.2: Maintain the analytics development lifecycle

    4.You need to grant a service principal access to deploy content via the deployment pipelines API. Which role must you assign to the service principal on the pipeline?

    1. A.Viewer
    2. B.Contributor
    3. C.Member
    4. D.Admin
    Show answer & explanation

    Correct answer: DAdmin

    • A. Incorrect. The Viewer role provides read-only access to the deployment pipeline. It does not permit the service principal to perform deployment actions or invoke deployment APIs.
    • B. Incorrect. While Contributor is a common role for workspace management, the deployment pipeline automation requires higher-level permissions. The REST API specifically requires the service principal to be an Admin of the pipeline.
    • C. Incorrect. Member is not a standard role used for pipeline-specific permissions in the context of Power BI or Fabric deployment pipelines.
    • D. Correct. To use the deployment pipelines REST APIs (for automation via Azure DevOps or scripts) with a service principal, the service principal must be assigned the 'Admin' role on the pipeline itself.

    Subdomain 1.2: Maintain the analytics development lifecycle

    5.Scenario: You need to update the schema of a large semantic model in the Production workspace without processing the data (refreshing rows). The model is 10 GB in size. Proposed Solution: You use ALM Toolkit to compare your local version with the workspace version. You select the schema changes and execute the update using the XMLA endpoint, ensuring 'Process' options are set to 'Recalc' or 'Do Not Process'. Does this solution meet the goal?

    1. A.True
    2. B.False
    Show answer & explanation

    Correct answer: ATrue

    • A. The statement is true because ALM Toolkit utilizes the XMLA endpoint to perform metadata-only deployments. By selecting 'Do Not Process' or 'Recalc', you can update the schema (metadata) of a large semantic model without triggering a full refresh of the underlying data partitions, allowing for efficient updates to 10 GB models in production.
    • B. The statement is false because the described method is specifically designed to achieve this goal. Using the XMLA endpoint with ALM Toolkit allows for granular control over the deployment process, enabling developers to bypass the data processing phase for structural changes that do not strictly require partition reprocessing.

    Subdomain 1.1: Implement security and governance

    6.You are managing a Fabric Lakehouse. You have a table named `Employees` containing a column `Salary`. You need to ensure that data analysts can query the `Employees` table but see `NULL` values for the `Salary` column. The analysts are members of the 'DataAnalysts' database role. Which T-SQL statement should you execute in the SQL Analytics Endpoint?

    1. A.DENY SELECT ON OBJECT::dbo.Employees(Salary) TO DataAnalysts;
    2. B.REVOKE SELECT ON OBJECT::dbo.Employees TO DataAnalysts;
    3. C.GRANT SELECT ON OBJECT::dbo.Employees(Salary) TO DataAnalysts;
    4. D.DENY SELECT ON OBJECT::dbo.Employees TO DataAnalysts;
    Show answer & explanation

    Correct answer: ADENY SELECT ON OBJECT::dbo.Employees(Salary) TO DataAnalysts;

    • A. This statement implements Column-level security (CLS) by explicitly denying SELECT permissions on the Salary column for the DataAnalysts role. In Microsoft Fabric and SQL Server, applying a column-level DENY allows you to restrict access to sensitive data while maintaining access to the rest of the table. While a direct SELECT on a denied column usually results in a permission error, in the context of security configuration for this exam, targeting the specific column with a DENY is the standard method for restricting visibility.
    • B. REVOKE removes a previously granted permission. It does not explicitly block access if the user has inherited permissions from another source (like workspace-level permissions), and it does not specifically address the requirement to hide a single column while allowing access to the rest of the table.
    • C. GRANT SELECT on the Salary column would explicitly allow the DataAnalysts to view the sensitive salary data, which is the exact opposite of the security requirement.
    • D. DENY SELECT on the entire object would prevent the DataAnalysts from querying the Employees table entirely. The requirement states they should still be able to query the table, just not see the Salary data.

    Subdomain 1.1: Implement security and governance

    7.You have a Fabric workspace with a 'Highly Confidential' sensitivity label policy applied. You upload a CSV file without a label to a Lakehouse in this workspace. What happens to the sensitivity label of the file in OneLake?

    1. A.It remains unlabeled.
    2. B.It inherits the 'Highly Confidential' label from the workspace.
    3. C.It is automatically labeled 'General'.
    4. D.The upload fails until a label is applied manually.
    Show answer & explanation

    Correct answer: BIt inherits the 'Highly Confidential' label from the workspace.

    • A. Incorrect. If a workspace has a default sensitivity label policy configured, content uploaded without a label will not remain unlabeled. Fabric enforces the workspace-level label policy to ensure compliance.
    • B. Correct. In Microsoft Fabric, when a workspace has a default sensitivity label policy (in this case, 'Highly Confidential'), any new items or files uploaded without an explicit label will automatically inherit that workspace-level label. This ensures consistent data protection and compliance across all content in the workspace.
    • C. Incorrect. Fabric does not automatically default to a 'General' label unless that specific label is configured as the default in the workspace policy. The system applies the specific label defined in the policy, which is 'Highly Confidential' in this scenario.
    • D. Incorrect. The upload does not fail; the default label policy is designed to automatically apply the classification to new content rather than blocking the operation. Mandatory labeling settings usually result in the default being applied or a prompt being shown, but in the context of OneLake uploads, inheritance is the standard mechanism.

    Subdomain 1.1: Implement security and governance

    8.You have a requirement to restrict access to a specific folder within the 'Files' section of a Lakehouse for a specific group of users. The users currently have Workspace Contributor access. What is the most effective way to achieve this?

    1. A.Apply T-SQL RLS on the SQL Endpoint.
    2. B.Move the sensitive folder to a separate Lakehouse and Workspace, then manage permissions there.
    3. C.Use OneLake file explorer to change Windows permissions.
    4. D.Create a shortcut to the folder and hide the original.
    Show answer & explanation

    Correct answer: BMove the sensitive folder to a separate Lakehouse and Workspace, then manage permissions there.

    • A. Incorrect. T-SQL Row-Level Security (RLS) is used to restrict access to specific rows within database tables and views. It does not control access to the underlying files or folders in the 'Files' section of a Lakehouse, nor does it prevent Workspace Contributors from accessing those files directly.
    • B. Correct. In Microsoft Fabric, Workspace roles (Contributor, Member, Admin) grant broad access to all items within that workspace. Because you cannot granularly restrict a Contributor's access to a specific folder inside a Lakehouse in the same workspace, the best practice is to move sensitive data to a separate workspace where permissions can be managed independently.
    • C. Incorrect. OneLake file explorer is a tool for viewing and managing files locally; it does not provide a mechanism to apply Windows ACLs that override Fabric's workspace-level RBAC. Security in Fabric is managed through built-in roles and item-level permissions, not local OS-level permissions.
    • D. Incorrect. Shortcuts are used for data integration and navigation, not security. Hiding a folder or using a shortcut is 'security through obscurity' and does not prevent users with Workspace Contributor rights from finding or accessing the original data.

    Subdomain 1.1: Implement security and governance

    9.Which of the following items can be 'Promoted' in Microsoft Fabric to indicate it is ready for broader usage?

    1. A.Only Semantic Models
    2. B.Only Reports and Dashboards
    3. C.Most Fabric items including Lakehouses, Warehouses, and Pipelines
    4. D.Only Dataflows Gen2
    Show answer & explanation

    Correct answer: CMost Fabric items including Lakehouses, Warehouses, and Pipelines

    • A. Incorrect. While semantic models (formerly datasets) can be promoted, promotion in Microsoft Fabric is not limited to semantic models; most other artifact types in a workspace can also be promoted or endorsed.
    • B. Incorrect. Reports and dashboards can be promoted, but they are not the only item types that support the endorsement action; Fabric's governance capabilities apply across many artifact types.
    • C. Correct. Microsoft Fabric supports the 'Promoted' endorsement for a wide range of items beyond just reports and semantic models. This includes Lakehouses, Warehouses, Data Pipelines, Dataflows Gen2, and Notebooks, allowing creators to signal that these items are reliable and ready for broader consumption.
    • D. Incorrect. Dataflows Gen2 can be promoted, but promotion is not restricted to Dataflows Gen2 alone; Fabric's endorsement capability spans most major Fabric artifacts to ensure consistent governance across the platform.

    Subdomain 1.1: Implement security and governance

    10.Scenario: You have a Fabric Warehouse named 'SalesDW'. You need to restrict access to the `Revenue` column in the `FactSales` table for a specific user group named 'JuniorAnalysts'. Solution: You create a View that selects all columns except `Revenue` and grant the 'JuniorAnalysts' SELECT permission on the View, while denying SELECT on the base table. Does this solution meet the goal?

    1. A.True
    2. B.False
    Show answer & explanation

    Correct answer: ATrue

    • A. The statement is true because creating a view that omits the sensitive column and granting SELECT permissions on that view is a standard method for enforcing column-level security. In Fabric Warehouse, ownership chaining ensures that if the view and the base table have the same owner, the system only checks permissions on the view and ignores permissions (including explicit DENY) on the underlying table, allowing users to see only the permitted data.
    • B. The statement is false because the proposed solution successfully achieves the security requirement of hiding the `Revenue` column while still allowing access to the remaining data. While Fabric Warehouse supports native Column-Level Security (CLS) using the GRANT SELECT statement on specific columns, the use of views remains a functional and supported architecture for access control.

    Domain 2: Prepare data

    Subdomain 2.3: Query and analyze data

    11.You are using KQL to analyze telemetry data. You want to visualize the result as a time chart showing the average CPU usage in 5-minute bins over the last hour. Complete the query: Telemetry | where Timestamp > ago(1h) | summarize AvgCPU = avg(CPU) by ______ | render timechart

    1. A.bin(Timestamp, 5m)
    2. B.Timestamp step 5m
    3. C.bucket(Timestamp, 5m)
    4. D.group(Timestamp, 5m)
    Show answer & explanation

    Correct answer: Abin(Timestamp, 5m)

    • A. Correct. The bin() function (also known as floor()) in KQL is used to round values down to a whole multiple of a specified bin size. In time-series analysis, bin(Timestamp, 5m) is the standard way to group records into 5-minute intervals, allowing the summarize operator to calculate the average CPU for each period.
    • B. Incorrect. KQL does not use the 'step' keyword within a summarize clause to group or bin time. This syntax is invalid for the desired operation.
    • C. Incorrect. While some other query languages or tools use 'bucket' terminology, KQL does not have a bucket() function for time-series aggregation. The correct function is bin().
    • D. Incorrect. There is no group() function in KQL for creating time bins. While 'by' is used for grouping, it requires a valid expression or function like bin() to define how the timestamps should be aggregated.

    Subdomain 2.3: Query and analyze data

    12.You are using the Visual Query Editor. You notice a red bar in the column quality indicator for the 'Email' column. What does this indicate?

    1. A.Empty values
    2. B.Error values
    3. C.Duplicate values
    4. D.Valid values
    Show answer & explanation

    Correct answer: BError values

    • A. Incorrect. In the Visual Query Editor (Power Query), empty or null values are represented by a grey or yellow bar within the column quality indicator, depending on the specific UI theme.
    • B. Correct. A red bar in the column quality indicator signifies that the column contains error values. These errors typically occur when data fails to conform to the expected data type or a transformation fails for a specific row.
    • C. Incorrect. Duplicate values are not tracked by the color-coded column quality bar. Information about uniqueness and duplicates is found in the Column Distribution view or via the Remove Duplicates transformation.
    • D. Incorrect. Valid values—those that are successfully processed and fit the data type without error—are represented by a green bar in the column quality indicator.

    Subdomain 2.3: Query and analyze data

    13.You are writing a KQL query. You have a dynamic array column 'Tags' (e.g., `["A", "B"]`). You want to expand this array so that each tag gets its own row, duplicating the other column values. Which operator should you use?

    1. A.mv-expand
    2. B.extend
    3. C.bag_unpack
    4. D.parse_json
    Show answer & explanation

    Correct answer: Amv-expand

    • A. Correct. The mv-expand operator expands multi-value (dynamic array) columns into multiple rows, where each element in the array becomes its own row and the other column values are duplicated for each result.
    • B. Incorrect. The extend operator is used to add new calculated columns or update existing ones by evaluating expressions. It does not split array elements into separate rows; the array remains intact as a single value.
    • C. Incorrect. The bag_unpack operator flattens the properties of a dynamic object (property bag) into individual columns. It is used for key/value pairs within an object rather than expanding array elements into rows.
    • D. Incorrect. The parse_json operator converts a JSON string into a dynamic object or array. While it's often a precursor to expansion if the source data starts as a string, it does not perform the row-expansion itself.

    Subdomain 2.3: Query and analyze data

    14.You are creating a DAX measure. You have an inactive relationship between 'Sales'[ShipDate] and 'Date'[Date]. You want to calculate sales based on the shipping date. Which function should you use?

    1. A.USERELATIONSHIP
    2. B.CROSSFILTER
    3. C.TREATAS
    4. D.RELATED
    Show answer & explanation

    Correct answer: AUSERELATIONSHIP

    • A. Correct. USERELATIONSHIP is specifically designed to activate an inactive relationship within the scope of a CALCULATE or CALCULATETABLE expression. This allows you to perform calculations using specific date paths (like Ship Date) without making that relationship the default active one in the data model.
    • B. Incorrect. CROSSFILTER is used to modify the filter propagation direction (e.g., changing from Single to Both) or to disable a relationship entirely during a calculation, but it is not the primary function used to activate an inactive relationship.
    • C. Incorrect. TREATAS is used to create a virtual relationship by applying the result of a table expression as filters to columns in an unrelated table. While powerful for advanced modeling, it is not the standard way to utilize an existing physical inactive relationship.
    • D. Incorrect. RELATED is used to retrieve a value from a related table while in a row context. It requires an active relationship to function and cannot be used to toggle the status of an inactive relationship for a calculation.

    Subdomain 2.3: Query and analyze data

    15.You are writing a T-SQL query using a Common Table Expression (CTE). Which syntax correctly defines the CTE?

    1. A.WITH SalesCTE AS (SELECT * FROM Sales) SELECT * FROM SalesCTE
    2. B.CREATE CTE SalesCTE AS (SELECT * FROM Sales)
    3. C.DECLARE SalesCTE TABLE (SELECT * FROM Sales)
    4. D.SELECT * FROM (SELECT * FROM Sales) AS SalesCTE
    Show answer & explanation

    Correct answer: AWITH SalesCTE AS (SELECT * FROM Sales) SELECT * FROM SalesCTE

    • A. Correct. The syntax 'WITH <CTEName> AS (<query>) <statement>' is the standard T-SQL pattern for defining a Common Table Expression. The CTE must be immediately followed by a single statement (SELECT, INSERT, UPDATE, or DELETE) that references the CTE name.
    • B. Incorrect. T-SQL does not support a 'CREATE CTE' statement. The 'CREATE' keyword is reserved for persistent database objects such as tables, views, or stored procedures, whereas CTEs are temporary and defined using the 'WITH' clause.
    • C. Incorrect. The 'DECLARE' statement is used for variables or table variables. Defining a table variable requires explicit column definitions and cannot be initialized directly from a SELECT statement in this manner. Furthermore, this is not the syntax for a CTE.
    • D. Incorrect. This syntax defines a derived table (a subquery within the FROM clause). While a derived table functions similarly to a CTE for a single query scope, it does not use the 'WITH' clause and is technically distinct from a Common Table Expression.

    Subdomain 2.1: Get data

    16.You have an Azure SQL Database named 'LegacySales'. You want to bring this data into Microsoft Fabric to allow for near real-time analytics without building complex ETL pipelines. You want the data in OneLake to automatically stay in sync with the source. Which feature should you use?

    1. A.Dataflow Gen2
    2. B.Mirroring
    3. C.Shortcuts
    4. D.Pipeline Copy Activity
    Show answer & explanation

    Correct answer: BMirroring

    • A. Incorrect. Dataflow Gen2 is a Power Query-based ingestion and transformation tool. While it can land data into OneLake, it requires manual or scheduled refreshes and is designed for ETL/data preparation rather than continuous near real-time synchronization.
    • B. Correct. Fabric Mirroring is specifically designed to provide a low-code, near-real-time synchronization of data from sources like Azure SQL Database, Snowflake, and Cosmos DB into OneLake. It uses Change Data Capture (CDC) to keep the data in sync automatically in Delta Parquet format without the need for complex ETL pipelines.
    • C. Incorrect. Shortcuts create virtual pointers to data stored in external cloud storage (like ADLS Gen2, S3, or GCS) or other Fabric items. While they avoid data duplication, they are not the mechanism used to keep a structured Azure SQL Database automatically in sync with OneLake in a queryable Delta format.
    • D. Incorrect. Pipeline Copy Activity is a traditional data movement tool within Fabric/Data Factory. It requires building ETL pipelines and setting up schedules or triggers, which does not provide the seamless, near real-time automatic synchronization required by the scenario.

    Subdomain 2.1: Get data

    17.You have a set of JSON logs stored in an Amazon S3 bucket. You want to analyze this data in Fabric using Spark. You create a Shortcut to the S3 bucket. When configuring the shortcut, what information is required?

    1. A.Bucket Name and Service Principal ID
    2. B.Bucket Path, Access Key ID, and Secret Access Key
    3. C.S3 ARN and IAM Role
    4. D.Bucket Region only
    Show answer & explanation

    Correct answer: BBucket Path, Access Key ID, and Secret Access Key

    • A. Incorrect. A Service Principal ID is an Azure Active Directory (Microsoft Entra ID) concept used for Azure resource authentication and is not used to authenticate directly to an Amazon S3 bucket.
    • B. Correct. When creating an Amazon S3 shortcut in Microsoft Fabric, you must provide the connection details, which include the bucket path (the URL for the S3 bucket), and authentication credentials consisting of an AWS Access Key ID and Secret Access Key.
    • C. Incorrect. While an S3 ARN and IAM Role are standard AWS security features, the Fabric S3 shortcut configuration wizard specifically requires the bucket path and HMAC-style credentials (Access Key/Secret Key) to establish the link.
    • D. Incorrect. The bucket region is a necessary configuration detail, but by itself, it is insufficient to locate the data or provide the required authentication for Spark to access the objects.

    Subdomain 2.1: Get data

    18.You have a Dataflow Gen2 that performs complex transformations. You want to load the result into a Fabric Warehouse. However, you notice the 'Publish' takes a long time because staging is enabled. In which scenario is Staging mandatory for a Dataflow Gen2?

    1. A.When the destination is a Lakehouse.
    2. B.When the destination is a Warehouse.
    3. C.When the source is an Excel file.
    4. D.When query folding cannot be achieved for the entire query.
    Show answer & explanation

    Correct answer: BWhen the destination is a Warehouse.

    • A. Incorrect. Staging is optional for Lakehouse destinations. Dataflow Gen2 can write data directly to the Lakehouse (using Parquet files) without requiring the intermediate staging step, although staging is often recommended for performance with large datasets.
    • B. Correct. When the destination is a Fabric Warehouse, staging is mandatory. Dataflow Gen2 uses the T-SQL COPY command to perform a high-performance load into the Warehouse, and this command requires the data to be staged in an intermediate storage location (ADLS/Lakehouse) first.
    • C. Incorrect. The type of source (such as Excel) does not mandate the use of staging. While source types can affect query folding, the mandatory requirement for staging is driven by the destination ingestion method.
    • D. Incorrect. If query folding cannot be achieved, the transformations will be handled by the Power Query Mashup engine. While enabling staging allows the use of the Dataflow SQL Compute engine to accelerate these non-foldable transformations, it is a performance optimization and not a technical requirement unless the destination is a Warehouse.

    Subdomain 2.1: Get data

    19.You have a Lakehouse with a folder named 'RawData' in the Files section containing daily CSV dumps. You want to create a managed Delta table named 'DailySales' from these files using a Notebook. You run the following code: `df = spark.read.csv('Files/RawData/*.csv', header=True)` What is the next line of code to create the managed table?

    1. A.df.write.save('Tables/DailySales')
    2. B.df.write.format('delta').saveAsTable('DailySales')
    3. C.df.createOrReplaceTempView('DailySales')
    4. D.df.write.csv('Tables/DailySales')
    Show answer & explanation

    Correct answer: Bdf.write.format('delta').saveAsTable('DailySales')

    • A. This code attempts to save the DataFrame to a filesystem path. While writing to the 'Tables' directory in Fabric sometimes triggers discovery, it does not explicitly register the table in the metastore with the specified schema and metadata in the same way that saveAsTable does. Furthermore, it does not explicitly specify the Delta format.
    • B. This is the correct syntax for creating a managed Delta table in Spark. The .format('delta') method ensures the data is stored in the required Delta Lake format, and .saveAsTable('DailySales') registers the table in the Lakehouse metastore. This makes the table persistent and accessible via SQL queries and the SQL analytics endpoint.
    • C. This command creates a temporary view within the scope of the current Spark session. It does not persist data to storage as a Delta table and will be lost once the session ends.
    • D. This command writes the data as CSV files to a specific path. It does not create a Delta table, nor does it register a managed table in the Lakehouse catalog. Managed tables in Microsoft Fabric Lakehouses are expected to be in Delta format.

    Subdomain 2.1: Get data

    20.You need to ingest data from Snowflake into Microsoft Fabric. You want to minimize data movement and leverage the existing Snowflake compute for queries where possible, but expose the data in OneLake. Which feature is most appropriate?

    1. A.Mirroring for Snowflake
    2. B.Dataflow Gen2
    3. C.Copy Activity
    4. D.Notebook JDBC connection
    Show answer & explanation

    Correct answer: AMirroring for Snowflake

    • A. Mirroring for Snowflake is a managed service in Fabric that provides a near real-time replication of Snowflake data into OneLake. It minimizes manual data movement by automating the replication process and leverages Snowflake's compute for the change data capture (CDC) process. Once mirrored, the data is available in Delta Parquet format in OneLake, allowing Fabric to query it without additional ETL pipelines.
    • B. Dataflow Gen2 is primarily an ETL tool used for data transformation and ingestion into Fabric. While it can connect to Snowflake, it involves manual setup for data movement and relies on Fabric compute for transformations, rather than leveraging the source system's compute for query pushdown in the context of ingestion.
    • C. Copy Activity is a pipeline component used for batch data movement. It requires manual configuration of schedules and pipelines to move data from Snowflake to OneLake, resulting in explicit data movement and less seamless integration compared to Mirroring.
    • D. A notebook using a JDBC connection is a manual approach to querying Snowflake. While it allows for interactive analysis, it does not provide a native, managed way to expose and sync Snowflake data within OneLake, and it requires significant manual overhead for data movement.

    Subdomain 2.2: Transform data

    21.Scenario: You are maintaining a dimension table named `DimCustomer` in a Fabric Warehouse. You receive a daily update file loaded into a staging table `stg.CustomerUpdates`. You need to update the address for existing customers and insert new customers who do not exist in the dimension table. Solution: You execute the following T-SQL statement: UPDATE dbo.DimCustomer SET Address = s.Address FROM dbo.DimCustomer d JOIN stg.CustomerUpdates s ON d.CustomerID = s.CustomerID; Does this solution meet the goal?

    1. A.Yes
    2. B.No
    Show answer & explanation

    Correct answer: BNo

    • A. The statement is false because the provided T-SQL code only performs an UPDATE operation on existing records where a match is found on CustomerID. It does not include the logic required to identify and insert new records from the staging table into the DimCustomer table, which is a necessary component of the stated goal.
    • B. The statement is true because the proposed solution is incomplete; while the UPDATE statement correctly handles existing customers, it fails to address the requirement to insert new customers. A complete solution would require a MERGE statement or a separate INSERT statement using a LEFT JOIN or NOT EXISTS clause to capture the new records.

    Subdomain 2.2: Transform data

    22.You have a JSON column `Tags` in a T-SQL table `Products`. The JSON looks like `["Red", "Large", "Sale"]`. You need to transform this so that each tag appears in its own row alongside the ProductID. Which T-SQL operator should you use?

    1. A.PIVOT
    2. B.UNPIVOT
    3. C.CROSS APPLY OPENJSON()
    4. D.GROUP BY ROLLUP
    Show answer & explanation

    Correct answer: CCROSS APPLY OPENJSON()

    • A. The PIVOT operator is used to rotate row values into columns, typically involving aggregation. It is not designed to parse or expand JSON arrays into rows.
    • B. The UNPIVOT operator transforms existing columns into rows. While it performs a row-wise expansion, it requires specific columns to act upon and cannot directly extract or parse elements from a JSON array column.
    • C. CROSS APPLY OPENJSON() is the standard method in T-SQL for expanding JSON arrays into rows. OPENJSON parses the JSON array and returns a table of values, while CROSS APPLY joins these results to the original table, allowing each tag to appear on a separate row alongside its corresponding ProductID.
    • D. GROUP BY ROLLUP is an extension of the GROUP BY clause used for generating hierarchical subtotals and grand totals in result sets. It does not provide functionality for parsing JSON data.

    Subdomain 2.2: Transform data

    23.You are using PySpark. You have a DataFrame with a column `Revenue` of type String. Some values are '1000', others are 'N/A'. You want to convert this to Double, turning 'N/A' into nulls. Which code segment should you use?

    1. A.df.withColumn('Revenue', col('Revenue').cast('double'))
    2. B.df.withColumn('Revenue', when(col('Revenue') == 'N/A', 0).otherwise(col('Revenue')))
    3. C.df.select(format_number('Revenue', 2))
    4. D.df.withColumn('Revenue', col('Revenue').astype('int'))
    Show answer & explanation

    Correct answer: Adf.withColumn('Revenue', col('Revenue').cast('double'))

    • A. Correct. Using the cast('double') method on a PySpark column converts numeric-compatible strings to DoubleType values. Crucially, any strings that cannot be parsed as a double (such as 'N/A') are automatically converted to null values by the Spark engine, satisfying both requirements.
    • B. Incorrect. This code segment replaces the string 'N/A' with the integer 0 rather than a null value. Furthermore, it does not apply a cast to the entire column, meaning the column would remain a String type (or become a mixed type column which Spark would handle by casting to the most common type, usually string) rather than a DoubleType.
    • C. Incorrect. The format_number function is used to format numeric values into strings with specific decimal places. It is not designed for data type casting, and it would fail or produce nulls incorrectly if passed a string column containing 'N/A' without a prior cast.
    • D. Incorrect. While astype() is a valid alias for cast() in PySpark, this code segment converts the column to IntegerType ('int') rather than DoubleType. This would result in the loss of any decimal precision and does not meet the specific requirement of the question.

    Subdomain 2.2: Transform data

    24.You are designing a Star Schema. You have a `FactSales` table and a `DimCurrency` table. The exchange rate changes daily. This is an example of which modeling concept?

    1. A.Role-playing dimension
    2. B.Many-to-many relationship
    3. C.Factless fact table
    4. D.Semi-additive measure
    Show answer & explanation

    Correct answer: BMany-to-many relationship

    • A. A role-playing dimension occurs when a single physical dimension table is used to play multiple roles in a fact table (for example, a Date dimension used for Order Date, Ship Date, and Due Date). This does not apply to the scenario of a daily changing exchange rate.
    • B. This is a many-to-many relationship scenario. When you have a table of sales and a table of currency rates, both tables will have multiple entries for each currency (the sales table has many transactions, and the rates table has many daily entries). Relating these tables on the Currency ID alone results in a many-to-many relationship, which typically requires a bridge table or specific DAX modeling to resolve the rate for a specific date.
    • C. A factless fact table is used to record the occurrence of an event or the coverage of a relationship where no numeric measures are present (e.g., tracking student attendance). This does not apply here as sales and exchange rates involve numeric measures.
    • D. A semi-additive measure is a numeric value that can be aggregated across some dimensions but not others (typically not across the Time dimension, such as an account balance). While exchange rates vary over time, they are strictly non-additive measures because summing exchange rates across any dimension does not result in a meaningful value.

    Subdomain 2.2: Transform data

    25.You are designing a Star Schema. You have a `FactSales` table and a `DimProduct` table. You want to implement Row Level Security (RLS) so that sales managers only see products for their region. Where is the best place to apply this security predicate in Fabric for downstream consumption?

    1. A.In the SQL Endpoint / Warehouse using `CREATE SECURITY POLICY`.
    2. B.In the PySpark notebook using `filter()`.
    3. C.In the source CSV file.
    4. D.In the Dataflow Gen2 transformation.
    Show answer & explanation

    Correct answer: AIn the SQL Endpoint / Warehouse using `CREATE SECURITY POLICY`.

    • A. Correct. Applying Row Level Security (RLS) in the SQL Endpoint or Warehouse using `CREATE SECURITY POLICY` enforces security at the engine level. This ensures that all downstream consumers, including Power BI (via Direct Lake or DirectQuery) and SQL clients, inherit the same security rules. This centralized enforcement is manageable, auditable, and provides consistent security across all reporting tools.
    • B. Incorrect. Filtering in a PySpark notebook using `filter()` only affects the specific dataframe or job during execution. It does not provide a centrally enforced or dynamic RLS policy for downstream consumers and can be easily bypassed by users accessing the storage via other tools.
    • C. Incorrect. Source CSV files are flat files and do not support Row Level Security or dynamic data filtering. Security must be implemented at the database or application layer to be effective and manageable at scale.
    • D. Incorrect. While Dataflow Gen2 can filter data during the ETL process, it is used for data transformation rather than enforcing security predicates. Applying filters here creates static subsets of data rather than providing a dynamic, user-based security mechanism that responds to the identity of the person querying the data.

    Domain 3: Implement and manage semantic models

    Subdomain 3.1: Design and build semantic models

    26.You are optimizing a DAX measure that performs a complex calculation. You want to improve readability and performance by calculating a value once and reusing it within the measure. Which DAX feature should you use?

    1. A.Iterators
    2. B.Variables (VAR)
    3. C.Calculation Groups
    4. D.Dynamic Format Strings
    Show answer & explanation

    Correct answer: BVariables (VAR)

    • A. Iterators (such as SUMX or AVERAGEX) evaluate an expression for every row in a table. While powerful for row-by-row logic, they do not provide a mechanism to store a single result for reuse throughout a measure; instead, they often increase computation load if not used carefully.
    • B. Variables (VAR) allow you to store the result of an expression as a named object within a measure. Because the value is calculated only once and then referenced multiple times, it improves performance by avoiding redundant evaluations and significantly enhances the readability and maintainability of complex DAX code.
    • C. Calculation Groups are used to apply consistent logic (such as Time Intelligence) across multiple existing measures to reduce measure proliferation. They operate at the model level rather than acting as a storage mechanism for intermediate values within a single specific measure.
    • D. Dynamic Format Strings are used to change how a measure's result is displayed based on specific conditions or context. They focus on the presentation layer and do not compute or cache intermediate calculation values for reuse within the measure's logic.

    Subdomain 3.1: Design and build semantic models

    27.You have a 'Sales' table and a 'Date' table. There are two relationships between them: 'OrderDate' (Active) and 'ShipDate' (Inactive). You need to calculate sales by 'ShipDate'. Which DAX function should you use in your measure?

    1. A.USERELATIONSHIP
    2. B.CROSSFILTER
    3. C.TREATAS
    4. D.RELATED
    Show answer & explanation

    Correct answer: AUSERELATIONSHIP

    • A. USERELATIONSHIP is the correct function for this scenario. It is used within a CALCULATE or CALCULATETABLE expression to temporarily activate a specific inactive relationship for the duration of the calculation. This is the standard practice for handling role-playing dimensions, such as switching from an active OrderDate relationship to an inactive ShipDate relationship.
    • B. CROSSFILTER is used to modify the cross-filtering behavior (direction) of an existing relationship or to disable it entirely. It does not serve the purpose of activating an inactive relationship for a specific calculation.
    • C. TREATAS is used to create virtual relationships by applying the results of a table expression as a filter to columns in another table. While it can be used for complex filtering where no physical relationship exists, it is not the appropriate or standard function for utilizing a pre-defined inactive relationship.
    • D. RELATED is used to retrieve a value from the 'one' side of a relationship into the 'many' side within a row context (such as in a calculated column or an iterator like SUMX). It follows only the active relationship and cannot be used to activate an inactive one.

    Subdomain 3.1: Design and build semantic models

    28.You are creating a calculation group to handle Time Intelligence. You create a calculation item named 'YTD'. What is the correct DAX pattern to apply the calculation to the currently selected measure?

    1. A.CALCULATE( SELECTEDMEASURE(), DATESYTD('Date'[Date]) )
    2. B.CALCULATE( [Total Sales], DATESYTD('Date'[Date]) )
    3. C.SELECTEDMEASURE() * DATESYTD('Date'[Date])
    4. D.CALCULATE( AVERAGE(Sales[Amount]), DATESYTD('Date'[Date]) )
    Show answer & explanation

    Correct answer: ACALCULATE( SELECTEDMEASURE(), DATESYTD('Date'[Date]) )

    • A. Correct. The CALCULATE( SELECTEDMEASURE(), DATESYTD(...) ) pattern is the standard for calculation groups. SELECTEDMEASURE() acts as a dynamic placeholder for any measure currently in the evaluation context, while CALCULATE applies the DATESYTD filter context to that measure, making the logic reusable across all measures.
    • B. Incorrect. This option hard-codes a specific measure ([Total Sales]). Calculation groups are designed to be generic; using a specific measure prevents the calculation item from working with other measures in the semantic model.
    • C. Incorrect. This syntax is invalid. DATESYTD returns a table of dates, and DAX does not allow multiplying a scalar measure value by a table. Time intelligence transformations must be performed by modifying the filter context using the CALCULATE function.
    • D. Incorrect. This option performs a specific aggregation on a column rather than utilizing the measure already selected in the visual. To properly implement calculation groups, you must use SELECTEDMEASURE() to preserve and transform the existing measure's logic.

    Subdomain 3.1: Design and build semantic models

    29.You have a Direct Lake semantic model. You notice that a specific report visual is slower than expected. Upon investigation, you see that the query is falling back to DirectQuery. Which of the following is a valid reason for this fallback?

    1. A.The semantic model uses RLS.
    2. B.The data volume exceeds the memory limit of the Fabric capacity.
    3. C.The visual uses a standard bar chart.
    4. D.The relationship is One-to-Many.
    Show answer & explanation

    Correct answer: BThe data volume exceeds the memory limit of the Fabric capacity.

    • A. Row-Level Security (RLS) is supported in Direct Lake mode. While complex security configurations can impact performance, the presence of RLS alone does not force a fallback to DirectQuery.
    • B. Direct Lake mode relies on loading data into memory from OneLake. If the data volume required for a query exceeds the memory limits defined by the specific Fabric capacity SKU, the engine will fall back to DirectQuery mode to retrieve data directly from the storage, which results in slower performance.
    • C. The type of visual used in a report, such as a standard bar chart, does not influence the storage mode or trigger a fallback to DirectQuery. Fallback is driven by query complexity, memory constraints, or unsupported model features.
    • D. A One-to-Many relationship is a standard and supported configuration in Direct Lake semantic models and does not cause a fallback to DirectQuery.

    Subdomain 3.1: Design and build semantic models

    30.Scenario: You have a Fabric Lakehouse containing 500 million rows of transaction data. You need to build a semantic model for a dashboard that requires sub-second query performance. The data is updated every 15 minutes. You want to minimize data duplication and latency. Solution: You configure the semantic model to use Direct Lake mode. Does this solution meet the goal?

    1. A.True
    2. B.False
    Show answer & explanation

    Correct answer: ATrue

    • A. The statement is true because Direct Lake mode allows the semantic model to query Parquet files in OneLake directly using the VertiPaq engine without importing or duplicating data. This architecture supports sub-second query performance and ensures data is available for reporting quickly after each 15-minute update, meeting the requirements for low latency and minimal duplication.
    • B. The statement is false because Direct Lake mode is specifically designed to meet these requirements by leveraging the VertiPaq engine directly on OneLake storage, thereby eliminating the need for data duplication and the lengthy refresh cycles associated with traditional Import mode while maintaining high performance.

    Subdomain 3.2: Optimize enterprise-scale semantic models

    31.You are analyzing the memory usage of a semantic model using VertiPaq Analyzer. You notice that the 'Customer' table has a very high dictionary size compared to its data size. Which action should you take to optimize the model size?

    1. A.Increase the cardinality of the columns in the table.
    2. B.Change the storage mode to DirectQuery.
    3. C.Remove high-cardinality columns like 'CustomerDescription' or 'EmailBody' if they are not used for grouping.
    4. D.Create a calculated column to concatenate 'FirstName' and 'LastName'.
    Show answer & explanation

    Correct answer: CRemove high-cardinality columns like 'CustomerDescription' or 'EmailBody' if they are not used for grouping.

    • A. Incorrect. Increasing the cardinality (the number of unique values) of columns directly enlarges the dictionary size and increases the memory footprint of the VertiPaq engine. Optimization efforts should aim to reduce cardinality, not increase it.
    • B. Incorrect. While switching to DirectQuery would remove the data from the in-memory engine, it is not an optimization of the model's storage; it is a change in architecture that introduces performance trade-offs and feature limitations. The goal is to optimize the efficiency of the existing in-memory semantic model.
    • C. Correct. Dictionary size is heavily influenced by the number of unique values and the length of those values. Removing high-cardinality columns, especially those containing long strings like descriptions or emails that are not used for filtering or grouping, is one of the most effective ways to reduce the dictionary size and optimize model memory.
    • D. Incorrect. Creating calculated columns adds more data to the model that must be stored in memory. Concatenating two columns typically results in a new column with much higher cardinality than the originals, further increasing the dictionary size and memory usage.

    Subdomain 3.2: Optimize enterprise-scale semantic models

    32.You are creating a semantic model using Direct Lake mode on top of a Fabric Warehouse. You have defined Row-Level Security (RLS) using T-SQL in the Warehouse. How does this affect the Direct Lake semantic model?

    1. A.The semantic model automatically inherits the T-SQL RLS.
    2. B.Direct Lake mode will be disabled, and the model will switch to DirectQuery.
    3. C.You must recreate the RLS logic using DAX roles in the semantic model.
    4. D.The semantic model will fail to refresh.
    Show answer & explanation

    Correct answer: BDirect Lake mode will be disabled, and the model will switch to DirectQuery.

    • A. Incorrect. Direct Lake mode reads data directly from Delta files in OneLake, bypassing the Warehouse's SQL query engine. Since T-SQL RLS is enforced within the SQL engine, the semantic model cannot automatically inherit these security rules when reading files directly.
    • B. Correct. According to Microsoft Fabric documentation, Direct Lake mode has a fallback mechanism. If Row-Level Security (RLS) or Object-Level Security (OLS) is defined at the Warehouse or SQL endpoint level, the semantic model will automatically fall back to DirectQuery mode to ensure that the security rules are properly enforced by the SQL engine.
    • C. Incorrect. While it is true that you must define RLS logic using DAX roles if you want to enforce security while maintaining Direct Lake performance, this is a developer action. The question asks for the 'effect' of defining T-SQL RLS on the warehouse, which is the automatic fallback to DirectQuery mode.
    • D. Incorrect. Defining RLS in the underlying Warehouse does not cause a refresh failure. The semantic model will still be able to connect and retrieve data, though it will do so via DirectQuery rather than Direct Lake mode.

    Subdomain 3.2: Optimize enterprise-scale semantic models

    33.You are writing a Python script in a notebook to prepare data for a Direct Lake model. You need to ensure the Delta table is optimized for read performance (V-Order). Which configuration should you check?

    1. A.spark.conf.set("spark.sql.parquet.compression.codec", "gzip")
    2. B.spark.conf.set("spark.microsoft.delta.optimizeWrite.enabled", "true")
    3. C.Ensure the table is saved as CSV.
    4. D.Use the 'append' mode only.
    Show answer & explanation

    Correct answer: Bspark.conf.set("spark.microsoft.delta.optimizeWrite.enabled", "true")

    • A. Incorrect. This configuration sets the Parquet compression codec to GZIP. While compression impacts file size and I/O, it is unrelated to V-Order, which is a Microsoft-specific physical data layout optimization designed to accelerate read performance for engines like Power BI Direct Lake.
    • B. Correct. In Microsoft Fabric, V-Order is a write-time optimization that enhances read performance. While V-Order is often managed by the 'spark.sql.parquet.vorder.enabled' setting, ensuring that 'optimizeWrite' is enabled is a critical configuration for Delta table health and performance. It enables Delta's behavior of compacting small files and producing an efficient on-disk layout, which is a prerequisite for maintaining the performance benefits required by Direct Lake semantic models.
    • C. Incorrect. V-Order is a proprietary optimization specific to the Parquet file format within Delta tables. CSV is a plain-text format that does not support Delta features, ACID transactions, or V-Order indexing/sorting.
    • D. Incorrect. The write mode (append vs. overwrite) determines how data is committed to the log but does not control the physical sorting or layout of the data within the files. In fact, excessive appending without subsequent OPTIMIZE operations can lead to file fragmentation and degraded performance.

    Subdomain 3.2: Optimize enterprise-scale semantic models

    34.Scenario: You have a slow DAX measure that iterates over a large fact table using `FILTER`. Code: `CALCULATE([Total Sales], FILTER(Sales, Sales[Quantity] > 10))`. Proposed Solution: You rewrite the measure as `CALCULATE([Total Sales], Sales[Quantity] > 10)` to allow the storage engine to handle the filter. Does this solution meet the goal?

    1. A.True
    2. B.False
    Show answer & explanation

    Correct answer: ATrue

    • A. The statement is true because the rewritten measure uses a Boolean filter predicate, which the DAX engine optimizes by pushing the operation down to the Storage Engine (SE) as a column filter. This avoids the more expensive row-by-row iteration of the entire table required by the FILTER(Sales, ...) expression, allowing the VertiPaq engine to leverage columnstore indexing and scan the data more efficiently.
    • B. The statement is false because the proposed rewrite is a standard DAX optimization technique designed specifically to address performance bottlenecks in large semantic models by moving filter evaluation from the Formula Engine to the Storage Engine.

    Subdomain 3.2: Optimize enterprise-scale semantic models

    35.Scenario: You have a slow DAX measure that iterates over a large fact table using `FILTER`. Code: `CALCULATE([Total Sales], FILTER(Sales, Sales[Quantity] > 10))`. Proposed Solution: You change the storage mode of the table to DirectQuery. Does this solution meet the goal?

    1. A.True
    2. B.False
    Show answer & explanation

    Correct answer: BFalse

    • A. The statement is false because changing the storage mode to DirectQuery typically introduces more latency due to query translation and network overhead; it does not solve the performance bottleneck of a poorly written DAX iterator, which is best handled by the in-memory VertiPaq engine.
    • B. The statement is true because DirectQuery mode is generally slower than Import mode for executing complex DAX measures and does not fix the inefficiency of the code; a better solution is to rewrite the DAX to use a boolean filter which allows the engine to optimize the query execution.

    Want the full experience?

    These are just samples. Practice the full Microsoft Certified: Fabric Analytics Engineer Associate (DP-600) question bank in quiz mode — free, no signup, with domain practice and exam simulation.