<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>Data Engineering Community Blog articles</title>
    <link>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/bg-p/de_comm_blogs</link>
    <description>Data Engineering Community Blog articles</description>
    <pubDate>Wed, 11 Nov 2026 17:13:44 GMT</pubDate>
    <dc:creator>de_comm_blogs</dc:creator>
    <dc:date>2026-11-11T17:13:44Z</dc:date>
    <item>
      <title>Kimball or Data Vault? How to select your Data Model that can be Optimised for your Business?</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/Kimball-or-Data-Vault-How-to-select-your-Data-Model-that-can-be/ba-p/5404199</link>
      <description>&lt;P&gt;Choosing between Kimball and Data Vault is often framed as a contest between two modelling styles. But they solve different problems. The more useful question is: &lt;STRONG&gt;what does your data platform need to optimise for?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Kimball: Make analysis easier&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Kimball dimensional modelling structures data around business processes, facts and dimensions. Denormalised dimensions help analysts understand the data and write straightforward queries.&lt;/P&gt;
&lt;P&gt;Surrogate keys, often integers, identify dimension records and support the tracking of changes over time. When a dimension’s history matters, a fact should reference the version that was valid when the business event occurred.&lt;/P&gt;
&lt;P&gt;Kimball also supports enterprise-wide consistency through conformed dimensions and the enterprise bus architecture. Its strength is bringing data closer to the people who use it: reporting is intuitive, joins are easier to understand, and business-facing solutions can be delivered quickly.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Data Vault: Make integration and change easier&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Data Vault separates the model into three core structures:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Hubs - store business keys.&lt;/LI&gt;
&lt;LI&gt;Links - capture relationships between business entities.&lt;/LI&gt;
&lt;LI&gt;Satellites - hold descriptive attributes and their history.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Deterministic hash keys can reduce reliance on centrally generated sequence keys, supporting parallel ingestion across sources. The approach is designed to preserve source-aligned history, improve traceability &amp;amp; adapt as sources change.&lt;/P&gt;
&lt;P&gt;That flexibility comes with a trade-off. A Data Vault typically involves more tables, orchestration and complexity between raw data and analyst-ready data. Business Vault logic, Point-in-Time tables, bridges and dimensional marts may be needed to make the data convenient for consumption.&lt;/P&gt;
&lt;P&gt;Hash keys also depend on a shared, consistently applied standard. Pipelines need to agree on details such as casing, whitespace, null handling, delimiters, column order, encoding and source scope. Without that agreement, the same business key can produce different hashes.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Often, the answer is both&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Kimball optimises for analytical consumption. Data Vault optimises for integration, traceability and resilience to change. These priorities are different, but they are not mutually exclusive.&lt;/P&gt;
&lt;P&gt;Many enterprise platforms use a vault to preserve source-aligned history and integrate evolving systems, then build dimensional models to provide a governed, query-friendly view for analysis.&lt;/P&gt;
&lt;P&gt;For a new Fabric platform, the decision should reflect the realities of the project: source complexity, audit and lineage requirements, delivery speed, team maturity and the simplicity analysts need. The best model is not the one that is fashionable; it is the one that fits the responsibility your data architecture must fulfil.&lt;/P&gt;</description>
      <pubDate>Tue, 10 Nov 2026 19:33:27 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/Kimball-or-Data-Vault-How-to-select-your-Data-Model-that-can-be/ba-p/5404199</guid>
      <dc:creator>Vinodh247</dc:creator>
      <dc:date>2026-11-10T19:33:27Z</dc:date>
    </item>
    <item>
      <title>Where Data Meets AI Extending Azure Databricks Investments with Microsoft Fabric</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/Where-Data-Meets-AI-Extending-Azure-Databricks-Investments-with/ba-p/5393311</link>
      <description>&lt;P&gt;When organizations discuss enterprise AI, the conversation almost always begins with foundation models, prompts, and agents. Yet in practice, every production enterprise AI initiative succeeds or fails based on how well it answers three equally critical questions:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;STRONG&gt;Where does the trusted enterprise data come from?&lt;/STRONG&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;How does business intelligence and context get created from that data?&lt;/STRONG&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Where will business users ultimately experience and consume that intelligence?&lt;/STRONG&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;This is the modern Azure journey: &lt;STRONG&gt;Data → Intelligence → Experience&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;And at the very start of this journey sits a foundational architectural principle that guides everything in this post:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Modernization does not mean forced migration.&lt;/STRONG&gt;&lt;BR /&gt;&lt;EM&gt;Don't change a customer's existing Azure Databricks architecture just to introduce Microsoft Fabric or AI. Instead, demonstrate what additional Microsoft capabilities can be layered around their existing investment with zero data duplication.&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;H2&gt;Why "Why Would We Change Our Architecture?" Is the Right Question&lt;/H2&gt;&lt;P&gt;If an enterprise has spent years building curated Medallion architectures (Bronze, Silver, Gold), Lakeflow / Delta Live Tables (DLT) pipelines, and fine-grained governance in &lt;STRONG&gt;Azure Databricks Unity Catalog&lt;/STRONG&gt;, asking them to rip-and-replace or duplicate pipelines just to light up Power BI Direct Lake or Microsoft Foundry agents is a non-starter.&lt;/P&gt;&lt;P&gt;A modern lakehouse strategy shouldn't say: &lt;EM&gt;"Here is how to leave Databricks."&lt;/EM&gt;&lt;BR /&gt;Instead, it should prove: &lt;STRONG&gt;"Here is how an organization already invested in Azure Databricks can extend that architecture with Microsoft Fabric, OneLake, and Microsoft Foundry—while minimizing architectural disruption and avoiding unnecessary data movement."&lt;/STRONG&gt;&lt;/P&gt;&lt;H3&gt;Data Is 1/3 of the Story: The 3-Act Framework&lt;/H3&gt;&lt;P&gt;As we designed our end-to-end reference implementation, we structured the architecture around three distinct acts. Your Databricks and Fabric connectivity foundation is &lt;STRONG&gt;Act 1&lt;/STRONG&gt;—the essential 1/3 that unlocks the entire downstream AI and user experience:&lt;/P&gt;&lt;P&gt;&lt;A class="lia-external-url" href="https://raw.githubusercontent.com/anujpandey2/Databricks-Blogs/2fda4c01be139dd54742bb9d9af90593a7c106c4/images/3-act-architecture-diagram.svg" target="_blank"&gt;https://raw.githubusercontent.com/anujpandey2/Databricks-Blogs/2fda4c01be139dd54742bb9d9af90593a7c106c4/images/3-act-architecture-diagram.svg&lt;/A&gt;&lt;/P&gt;&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Act&lt;/th&gt;&lt;th&gt;Pillar&lt;/th&gt;&lt;th&gt;Guiding Principle&lt;/th&gt;&lt;th&gt;Key Question Answered&lt;/th&gt;&lt;th&gt;Core Technologies&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Act 1 (1/3)&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;STRONG&gt;DATA&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;EM&gt;Meet customers where their data already lives.&lt;/EM&gt;&lt;/td&gt;&lt;td&gt;Where is my enterprise data, and how can the broader Microsoft ecosystem work with it without copying it?&lt;/td&gt;&lt;td&gt;Azure Databricks, Unity Catalog, Mirrored Catalog, Microsoft Fabric, OneLake&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Act 2 (2/3)&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;STRONG&gt;INTELLIGENCE&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;EM&gt;Turn trusted business data into intelligence.&lt;/EM&gt;&lt;/td&gt;&lt;td&gt;How can AI models and agents reason over governed enterprise ontologies and metrics rather than raw schemas?&lt;/td&gt;&lt;td&gt;&lt;STRONG&gt;Fabric IQ&lt;/STRONG&gt; (Ontology, Graph &amp;amp; Semantic Models), &lt;STRONG&gt;Fabric Data Agents&lt;/STRONG&gt;, &lt;STRONG&gt;Microsoft Foundry&lt;/STRONG&gt;, Azure OpenAI&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Act 3 (3/3)&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;STRONG&gt;EXPERIENCE&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;EM&gt;Bring intelligence to where work happens.&lt;/EM&gt;&lt;/td&gt;&lt;td&gt;Where and how will business users actually consume this intelligence without knowing the underlying plumbing?&lt;/td&gt;&lt;td&gt;Microsoft 365 Copilot, Microsoft Teams, Power BI, Custom APIs/Apps&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;&lt;H2&gt;State of the Union (As of November 2026): Azure Databricks &amp;amp; Microsoft Fabric Connectivity&lt;/H2&gt;&lt;P&gt;As of late 2026, Azure Databricks and Microsoft Fabric interoperability has matured into a &lt;STRONG&gt;true bidirectional, zero-copy ecosystem&lt;/STRONG&gt; built on open standards (Delta Lake, Apache Iceberg, and Unity Catalog Open APIs).&lt;/P&gt;&lt;P&gt;Here is the complete landscape of how the two platforms connect today:&lt;/P&gt;&lt;H3&gt;1. Inbound to Fabric: Mirroring Azure Databricks Unity Catalog (Generally Available)&lt;/H3&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;How it works:&lt;/STRONG&gt; Fabric connects directly to your Azure Databricks Unity Catalog metastore using the Unity Catalog Open APIs. It creates a &lt;STRONG&gt;Mirrored Azure Databricks catalog&lt;/STRONG&gt; item in Fabric and automatically generates OneLake shortcuts (Databricks type shortcuts) pointing to the underlying ADLS Gen2 Delta tables.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Zero-Copy &amp;amp; Auto-Sync:&lt;/STRONG&gt; &lt;STRONG&gt;No data is moved or duplicated.&lt;/STRONG&gt; When schemas, tables, materialized views, or streaming tables are added or dropped in Databricks Unity Catalog, Fabric automatically synchronizes the metadata (typically propagating changes within seconds to a few minutes).&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Streaming Tables &amp;amp; Materialized Views Support:&lt;/STRONG&gt; By enabling TBLPROPERTIES ('pipelines.externalMetadata.enabled' = 'true') on your DLT / Lakeflow pipelines or standalone objects, even Databricks Materialized Views and Streaming Tables can be mirrored directly into Fabric.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Built-in Consumption:&lt;/STRONG&gt; Every Mirrored Azure Databricks catalog item automatically provisions a &lt;STRONG&gt;SQL Analytics Endpoint&lt;/STRONG&gt; (for T-SQL queries, views, and warehousing), supports &lt;STRONG&gt;OneLake table shortcuts&lt;/STRONG&gt; into Fabric Lakehouses, and powers &lt;STRONG&gt;Power BI Direct Lake&lt;/STRONG&gt; semantic models and &lt;STRONG&gt;Fabric Data Agents&lt;/STRONG&gt;.&lt;/LI&gt;&lt;/UL&gt;&lt;H3&gt;2. Outbound from Fabric: OneLake Catalog Federation in Azure Databricks (Preview / Beta)&lt;/H3&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;How it works:&lt;/STRONG&gt; Going the other direction, Azure Databricks &lt;STRONG&gt;Lakehouse Federation&lt;/STRONG&gt; now natively supports &lt;STRONG&gt;OneLake Catalog Federation&lt;/STRONG&gt; (CREATE CONNECTION ... TYPE onelake and CREATE FOREIGN CATALOG).&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Zero-Copy Access from Databricks Compute:&lt;/STRONG&gt; Data engineers and data scientists running on &lt;STRONG&gt;Databricks Runtime 18.0+&lt;/STRONG&gt; (or &lt;STRONG&gt;DBR 19.0+&lt;/STRONG&gt; using workspace-specific endpoints &amp;lt;workspace-id&amp;gt;.z&amp;lt;xy&amp;gt;.dfs.fabric.microsoft.com) and &lt;STRONG&gt;SQL Warehouses (2025.40+)&lt;/STRONG&gt; can query Fabric &lt;STRONG&gt;Lakehouse&lt;/STRONG&gt; and &lt;STRONG&gt;Warehouse&lt;/STRONG&gt; tables directly using standard three-part Unity Catalog names (fabric_catalog.schema.table) with zero data copying.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Unstructured Data Volume Support:&lt;/STRONG&gt; Setting create_volume_for_lakehouse_files 'true' automatically mounts the Fabric Lakehouse /Files directory as a read-only Unity Catalog Volume (/Volumes/&amp;lt;catalog-name&amp;gt;/onelake-folders/files/) for Spark binary/Parquet/PDF processing in Databricks.&lt;/LI&gt;&lt;/UL&gt;&lt;H3&gt;3. Shared Storage: OneLake &amp;amp; ADLS Gen2 Shortcuts&lt;/H3&gt;&lt;UL&gt;&lt;LI&gt;Both platforms can continue to read/write to existing &lt;STRONG&gt;ADLS Gen2&lt;/STRONG&gt; storage accounts, or Databricks can mount/read/write directly to OneLake endpoints (abfss://&amp;lt;workspace&amp;gt;@onelake.dfs.fabric.microsoft.com/) using Entra ID Service Principals, Managed Identities (via Access Connectors for Azure Databricks), or credential passthrough.&lt;/LI&gt;&lt;/UL&gt;&lt;H2&gt;What Our E2E Interoperability Implementation Proves (The 5 Architectural Proofs)&lt;/H2&gt;&lt;P&gt;To make this concrete—following the philosophy of &lt;STRONG&gt;Build Once → Prove It → Document It → Enable Others&lt;/STRONG&gt;—our end-to-end walkthrough is designed to prove five non-negotiable enterprise requirements:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;STRONG&gt;Existing Databricks investment remains meaningful:&lt;/STRONG&gt; We start with a realistic Azure Databricks environment where data engineers curate Bronze, Silver, and Gold tables via Delta Live Tables (DLT) / Lakeflow pipelines registered in Unity Catalog.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Interoperability is real (not slideware):&lt;/STRONG&gt; We configure live Unity Catalog Mirroring into Fabric and OneLake Catalog Federation back into Databricks.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Unnecessary data movement is eliminated:&lt;/STRONG&gt; We explicitly show what stays in Azure Databricks and ADLS Gen2 (100% of the physical Parquet/Delta files) versus what gets federated into Fabric (metadata and zero-copy pointers).&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Fabric layers immediate business value:&lt;/STRONG&gt; Rather than stopping at &lt;EM&gt;"I can see my Databricks table in Fabric,"&lt;/EM&gt; we layer a &lt;STRONG&gt;Power BI Direct Lake semantic model&lt;/STRONG&gt;, &lt;STRONG&gt;Copilot in Power BI&lt;/STRONG&gt;, and a &lt;STRONG&gt;Fabric Data Agent&lt;/STRONG&gt; on top of the mirrored Databricks tables.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Governance and security boundaries are preserved:&lt;/STRONG&gt; We document exact authentication, network firewall rules (Workspace Identity + Trusted Workspace Access), and where Unity Catalog vs. OneLake security policies are enforced.&lt;/LI&gt;&lt;/OL&gt;&lt;H2&gt;End-to-End Walkthrough: One Business Scenario, Multiple Personas&lt;/H2&gt;&lt;P&gt;Let's walk through a unified enterprise scenario across four personas—&lt;STRONG&gt;Data Engineer&lt;/STRONG&gt;, &lt;STRONG&gt;Analytics Engineer / BI Analyst&lt;/STRONG&gt;, &lt;STRONG&gt;AI Developer&lt;/STRONG&gt;, and &lt;STRONG&gt;Business User&lt;/STRONG&gt;—answering a single executive business question:&lt;/P&gt;&lt;P&gt;&lt;EM&gt;"Why are sales declining and customer churn rising in our target segments, and which products and retention actions should we prioritize?"&lt;/EM&gt;&lt;/P&gt;&lt;H3&gt;Act 1 — DATA: Extending the Existing Azure Databricks Estate into Microsoft Fabric&lt;/H3&gt;&lt;H4&gt;Step 1: Curate Enterprise Data in Azure Databricks (Data Engineer Persona)&lt;/H4&gt;&lt;P&gt;Our data engineering team already runs its core ingestion and Medallion transformations in &lt;STRONG&gt;Azure Databricks&lt;/STRONG&gt;. We do &lt;STRONG&gt;not&lt;/STRONG&gt; rewrite these pipelines in Fabric.&lt;/P&gt;&lt;P&gt;From the Azure Portal, we launch our existing Unity Catalog-enabled Azure Databricks workspace and sign in with Microsoft Entra ID:&lt;/P&gt;&lt;P&gt;Please refer to this Github link : &lt;A href="https://github.com/anujpandey2/Databricks-Blogs/tree/main" target="_blank"&gt;anujpandey2/Databricks-Blogs: The Modern Azure Journey: Where Data Meets AI — Azure Databricks &amp;amp; Microsoft Fabric Interoperability Blog and Reference Architecture&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 05 Nov 2026 14:45:28 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/Where-Data-Meets-AI-Extending-Azure-Databricks-Investments-with/ba-p/5393311</guid>
      <dc:creator>AnujPandey</dc:creator>
      <dc:date>2026-11-05T14:45:28Z</dc:date>
    </item>
    <item>
      <title>Unified Data Access Pattern Across Fabric</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/Unified-Data-Access-Pattern-Across-Fabric/ba-p/5378859</link>
      <description>&lt;P&gt;Have you ever seen a situation when in an ETL pipeline engineers create a not strictly necessary dataset only because they can use a tool such as a Spark or SQL notebook to process data in that dataset? I have and I don't think this is a best practice when data is replicated just to satisfy a tool selection preference. In this post I'll explain how Microsoft Fabric solves this problem by providing a &lt;STRONG&gt;unified way&lt;/STRONG&gt; to access data in various formats by using &lt;STRONG&gt;Lakehouse table shortcuts&lt;/STRONG&gt;.&lt;/P&gt;
&lt;H4&gt;Storage Choice Should Not Dictate the Exploration Tool&lt;/H4&gt;
&lt;P&gt;What is a &lt;STRONG&gt;Lakehouse table shortcut&lt;/STRONG&gt;? You can read the official definition &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/fabric/onelake/onelake-shortcuts" target="_blank" rel="noopener"&gt;here&lt;/A&gt;(&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/fabric/onelake/onelake-shortcuts" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/en-us/fabric/onelake/onelake-shortcuts&lt;/A&gt;), but a short explanation is they are very similar to Windows file shortcuts and allow accessing various tabular data sources in Fabric in a universal way as if they were &lt;STRONG&gt;Lakehouse delta tables&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;Just imagine sources like SQL database or Warehouse tables and KQL tables, which all require different native tools to work with. A table shortcut makes various sources stored on OneLake in Delta format appear in a Lakehouse as delta tables and immediately accessible from a Spark Notebook or a SQL script via a Lakehouse SQL endpoint.&lt;/P&gt;
&lt;P&gt;This is not a magic trick, and a table shortcut does not copy data behind the scene. When you create a table shortcut in a Lakehouse data is not duplicated but instead a new reading path becomes available through a Lakehouse API and associated SQL endpoint. A table shortcut looks like a Lakehouse delta table and can be accessed with the same tools, though it still points to the source data, and you can use your familiar tool of choice to work with that data source.&lt;/P&gt;
&lt;LI-SPOILER label="Note"&gt;
&lt;P&gt;In this article I'll cover &lt;STRONG&gt;table shortcuts&lt;/STRONG&gt; only. There are also File shortcuts in Fabric but they are a different case.&lt;/P&gt;
&lt;/LI-SPOILER&gt;
&lt;H4&gt;The Tree Decision Criteria&lt;/H4&gt;
&lt;P&gt;Now that you understand the concept of the Table shortcuts, &lt;STRONG&gt;how do you decide&lt;/STRONG&gt; if you want to use a Lakehouse table shortcut for a particular data source that you need to explore? I start from answering these three questions:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;P&gt;Is the data source format and location supported by a table shortcut?&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;Will a Spark or T-SQL Notebook be a sensible choice for this data source exploration scenario?&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;Are there any hard road blocks such as permissions, latency, or performance for using a table shortcut?&lt;/P&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;If I &lt;STRONG&gt;pass on all three questions&lt;/STRONG&gt; my choice is clear: &lt;STRONG&gt;create a table shortcut&lt;/STRONG&gt; and start exploring the data.&lt;BR /&gt;Now let's talk about a few scenarios where a Lakehouse table shortcut could be a useful choice.&lt;/P&gt;
&lt;H4&gt;1. SQL Database and Warehouse&lt;/H4&gt;
&lt;P&gt;From the first glance it's not obvious why you would want to use a table shortcut for a SQL database or a Warehouse. Both already support exploration with T-SQL, so the shortcut has to earn its place. &lt;BR /&gt;For me, the strongest reason is that the work needs something that T-SQL does not do well, usually Python-based exploration or processing. Reusing existing &lt;EM&gt;PySpark&lt;/EM&gt; code or working with the data as &lt;EM&gt;DataFrames&lt;/EM&gt; next to other Lakehouse tables fall in the same category.&lt;/P&gt;
&lt;H5&gt;Why I Use It&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P&gt;Explore the data with PySpark without creating a duplicate table first.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;Profile or transform the data before deciding what a curated result should look like.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;H5&gt;Where It Shines&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;Exploratory analysis in Python.&lt;/LI&gt;
&lt;LI&gt;Data-quality checks that are easier to express in code.&lt;/LI&gt;
&lt;LI&gt;Data shaping for a larger Spark workflow.&lt;/LI&gt;
&lt;LI&gt;Complex joins and transformations that combine SQL source data with native Lakehouse tables in Spark.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H5&gt;What to Keep in Mind&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;A SQL database and a Warehouse &lt;STRONG&gt;are not the same&lt;/STRONG&gt; kind of source. A SQL database is &lt;STRONG&gt;transactional,&amp;nbsp;&lt;/STRONG&gt;
&lt;P&gt;but its data is mirrored to OneLake as Delta files, so analytics reads against the mirrored copy don't load the primary workload. &lt;SPAN style="color: rgb(50, 49, 48);"&gt;A Warehouse is built for analytical queries, so that concern is even smaller.&lt;/SPAN&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;Treat shortcut-backed access as &lt;STRONG&gt;read-only&lt;/STRONG&gt; for this pattern.&lt;/LI&gt;
&lt;LI&gt;Shortcut behavior may change, so confirm against current documentation.&lt;/LI&gt;
&lt;/UL&gt;
&lt;img /&gt;
&lt;H4&gt;2. Mirrored SQL Database&lt;/H4&gt;
&lt;P&gt;A mirrored SQL database can also be queried with T-SQL via a SQL Endpoint, so it could belong in the first scenario. But I give it its own section because its role is different. A mirror is a projection of an external data source into &lt;STRONG&gt;OneLake&lt;/STRONG&gt; not the actual data source such as SQL database or a Warehouse. This distinction makes it closer to a raw data landing area that requires ingestion first.&lt;/P&gt;
&lt;P&gt;This is where using a shortcut gets exciting. A Lakehouse shortcut to the mirrored tables lets you read the data &lt;STRONG&gt;without running any ingestion workload&lt;/STRONG&gt;. The shortcut removes the copy operations and brings the data into a bronze layer, from where it can be further cleaned or transformed as needed.&lt;/P&gt;
&lt;img /&gt;
&lt;H5&gt;Why I Use It&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;Enable Spark and T-SQL to read replicated source data without another ingestion job.&lt;/LI&gt;
&lt;LI&gt;Use the mirror as a starting point for initial data exploration.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H5&gt;Where It Shines&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;Early exploration of source data before the medallion design is settled.&lt;/LI&gt;
&lt;LI&gt;Checking data quality against the source before any transformation.&lt;/LI&gt;
&lt;LI&gt;Supplying data for a Silver layer for transformation without an initial ingestion.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H5&gt;What to Keep in Mind&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;A shortcut saves the copy operation, but downstream may still require their own tables.&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;The mirror reflects the current state of the source. Delta history is kept only for the retention period, which defaults to one day for newer mirrored databases, so materialize snapshots if you need longer history.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;Replication is near real time, but latency depends on the source, region, and change volume. Check the current figures before promising freshness.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4&gt;3. Lakehouse: The Simplest Data Sharing Case&lt;/H4&gt;
&lt;P&gt;A Lakehouse-to-Lakehouse shortcut is the easiest case. The team owning the data keeps the table where it is, and another team creates a table shortcut in their own Lakehouse. Both teams work with the same Delta table &lt;STRONG&gt;without creating a copy&lt;/STRONG&gt;.&lt;/P&gt;
&lt;img /&gt;
&lt;H5&gt;Why I Use It&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;Keep a table in the Lakehouse that owns it while another team uses it.&lt;/LI&gt;
&lt;LI&gt;Join Delta tables from different Lakehouses via shortcuts in Spark or through the SQL analytics endpoint with simplified syntax.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H5&gt;Where It Shines&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;Cross-workspace analytics, where a central team needs a domain's curated table.&lt;/LI&gt;
&lt;LI&gt;Domain-oriented ownership, where each team publishes its tables and others consume them.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H5&gt;What to Keep in Mind&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;A shortcut doesn't grant access. The calling user needs read permission on the target table.&lt;/LI&gt;
&lt;LI&gt;Schema changes sync automatically, but timing can vary. A new shortcut may take time to show up.&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;Deleting a shortcut leaves the target untouched.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;Shortcut names with spaces aren't recognized as Delta tables.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;The workspace lineage view only shows shortcuts within the same workspace.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4&gt;4. KQL Database: Same Goal, Different Mechanics&lt;/H4&gt;
&lt;P&gt;KQL Database in an Eventhouse isn't just another Delta table shortcut. Data is stored in the KQL database, not OneLake. To make a KQL table visible to other Fabric engines, you turn on OneLake availability, which creates a Delta copy of that table in OneLake. The platform maintains that copy, so this path isn't zero-copy the way a Lakehouse shortcut is but the result is similar: a table shortcut for that KQL table can be created in a Lakehouse.&lt;/P&gt;
&lt;img /&gt;&lt;LI-SPOILER label="Disclaimer"&gt;
&lt;P&gt;This section covers only delta shortcuts for KQL tables and not KQL native shortcuts. KQL database can create its own shortcut to a OneLake delta source but this is a native KQL feature and not covered in this article.&lt;/P&gt;
&lt;/LI-SPOILER&gt;
&lt;H5&gt;Why I Use It&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;Keep ingestion in the KQL database but expose the same data in the Lakehouse, without building a second ingestion job.&lt;/LI&gt;
&lt;LI&gt;Explore the table in the Lakehouse with Spark or T-SQL, the same way you explore any other Delta table.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H5&gt;Where It Shines&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;Analysts who work in Spark or T-SQL can read the time-series data without KQL database access, when the shortcut uses a delegated identity.&lt;/LI&gt;
&lt;LI&gt;Power BI reports in Direct Lake mode can read the time-series data from the Lakehouse.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H5&gt;What to Keep In Mind&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;The Delta copy is a managed replica of the KQL table and there is always a delay, so this isn't a real-time view.&lt;/LI&gt;
&lt;LI&gt;If OneLake availability is turned off and back on the replica is removed and rebuilt. During this period data is not available via a shortcut.&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;The access model is different from other sources because additional permissions are needed on the KQL database.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;To learn more about OneLake availability for KQL &lt;A class="lia-external-url" href="https://learn.microsoft.com/fabric/real-time-intelligence/event-house-onelake-availability" target="_blank"&gt;check out this article&lt;/A&gt;.&lt;/P&gt;
&lt;H4&gt;When I Would Still Create Another Dataset&lt;/H4&gt;
&lt;P&gt;A shortcut is my preference, not a rule. I still create a separate dataset when the data is filtered, transformed and enriched and not an exact copy. Additional considerations may include performance optimization, data isolation and governance.&lt;/P&gt;
&lt;H4&gt;Final Thoughts&lt;/H4&gt;
&lt;P&gt;Table shortcuts in Fabric are extremely powerful and may enable many scenarios with unexpected data access paths. While it's important to manage your data redundancy and eliminate unnecessary copy operations the final architecture of your data estate may be much more complex than a simple choice of using a table shortcut.&lt;/P&gt;
&lt;P&gt;I am curios, where in your Fabric estate are you duplicating data mainly to change tools, and what would make a shortcut-based access path a better choice?&lt;/P&gt;
&lt;P&gt;Drop your thoughts and comments below.&lt;/P&gt;</description>
      <pubDate>Tue, 03 Nov 2026 14:34:14 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/Unified-Data-Access-Pattern-Across-Fabric/ba-p/5378859</guid>
      <dc:creator>apturlov</dc:creator>
      <dc:date>2026-11-03T14:34:14Z</dc:date>
    </item>
    <item>
      <title>Code review isn't enough for data pipelines</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/Code-review-isn-t-enough-for-data-pipelines/ba-p/5385769</link>
      <description>&lt;P&gt;Last year around April, there was a production issue in our data engineering system and we had to roll back a recently merged pull request. This pull request had minor code changes and was reviewed and approved by me and one more person on my team. The change was made in the code of one of the upstream tables of a pipeline, which resulted in a schema violation in a downstream table. The downstream table was part of a separate pipeline, hence it was missed by the data engineer who raised the pull request.&lt;/P&gt;
&lt;P&gt;The change was quite small - and therefore tempting to approve quickly and be done with. Ideally, I should have looked at the pipeline runs in the development environment and verified all the downstream tables’ schema contracts and data. But practically speaking, this is a cumbersome and time-consuming task. Therefore, on busy days this usually gets skipped.&lt;/P&gt;
&lt;P&gt;Post that incident, whenever I reviewed PRs, I tried to look at the changes at the data level as well - at least whenever time permitted. I took more time to review (which was of course a bit frustrating both for the PR author and the reviewer). This habit turned into a project over time. I have recently open-sourced it to help others in the data engineering community. This article covers that project.&lt;/P&gt;
&lt;H2&gt;Software teams have a safety net. Data teams mostly don’t.&lt;/H2&gt;
&lt;P&gt;In software engineering, a pull request triggers a build that runs a full suite of tests to ensure every component is working correctly and nothing is breaking due to the current set of changes. The build and the test results give an objective signal to the reviewer about the changes. It also helps newcomers to the team, who may not yet know all the components fully, to author their changes or review others' changes properly.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;On the other hand, PRs raised in data engineering teams often have gaps in this process. A data engineer makes the code changes, creates/updates/deletes tables in the dev environment, tests the changes by running the pipelines and running other data quality tests. The first gap is here itself - &lt;STRONG&gt;governance&lt;/STRONG&gt;. Unlike software engineering PRs, where there are coded tests for almost every related component that are run during the build, there are hardly any such tests set up to run automatically before merging any changes to production. There are usually no written schema contracts that the tests are run against. It depends on the practices followed in the team and the goodwill of the developer as to how thoroughly these tests are done.&lt;/P&gt;
&lt;P&gt;The second major gap is lack of &lt;STRONG&gt;automation&lt;/STRONG&gt;. The pull request itself does not trigger any build as such - one that tests all the code, pipeline runs, impact on downstream tables, etc. As I mentioned at the beginning of the article, the reviewer has to check the runs manually in the dev branch and, at times, run the tests to ensure nothing is breaking downstream.&lt;/P&gt;
&lt;P&gt;The third gap is lack of &lt;STRONG&gt;visibility&lt;/STRONG&gt; for new team members who do not have sufficient experience or knowledge about the team's data estate. They may miss out on testing some of the tables while making the changes or reviewing others' changes.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Most data teams have data quality checks in place to identify any issues in production and minimise the risk of corrupting data in any of the downstream tables. These are fine, but they catch the issues in production, which is the fourth and final gap - lack of &lt;STRONG&gt;proactiveness&lt;/STRONG&gt;. Although we catch the issues in production through these checks, in most cases the damage is partly already done - be it delayed runtimes, failure to meet SLAs or simply wasted compute in rerunning some of the pipelines.&lt;/P&gt;
&lt;H2&gt;DEBIT - Data Engineering Build Impact Testing&lt;/H2&gt;
&lt;P&gt;In order to close the above gaps, I built &lt;STRONG&gt;DEBIT&lt;/STRONG&gt;. On every pull request raised in our team, this framework runs the tests needed automatically at both the code level and the data level. It identifies the tables impacted, checks their contracts mentioned in YAML files, figures out what the downstream and upstream tables for these impacted tables are, and then runs the tests on the actual data in dev environments. Finally, it stores those results and displays them in the PR build log for the reviewer to inspect.&lt;/P&gt;
&lt;P&gt;It targets Microsoft Fabric and lakehouse workflows, but the core is plain Python with no cloud dependency. The repo includes templates for GitHub Actions and Azure DevOps.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN class="lia-text-color-21"&gt;DEBIT is open source under the MIT license: &lt;STRONG&gt;&lt;A href="https://github.com/pratap-is-here/debit" target="_blank"&gt;github.com/pratap-is-here/debit&lt;/A&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H3&gt;An Important Note&lt;/H3&gt;
&lt;P&gt;The framework does not replace any testing that the PR author must do. It supports it by bringing governance to the whole process of moving any changes from dev to prod, by ensuring increased thoroughness and efficiency as well as reducing the review workload on the reviewers. So the PR author is still strongly recommended to do the testing on appropriate data and, if needed, copy some of the data from prod to dev before testing.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;DEBIT assumes the developer has already tested in dev against the latest prod data. If they haven’t, the validations fail, and it becomes visible in the PR.&lt;/STRONG&gt;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;That's deliberate. &lt;STRONG&gt;DEBIT checks that testing happened. It doesn't replace it.&lt;/STRONG&gt;&lt;/P&gt;
&lt;H3&gt;2 Phases&lt;/H3&gt;
&lt;P&gt;Every PR runs through 2 phases.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&lt;STRONG&gt;Phase 1 is an offline hard gate.&lt;/STRONG&gt; It validates the table declarations in the PR template, reads the git diff to find the affected tables, checks the registry for completeness, cross-checks the lineage for consistency, expands the scope along the lineage graph, and verifies that every table in scope has a complete contract. It needs no cloud access.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Phase 2 is optional and live.&lt;/STRONG&gt; It builds a contract payload from the table registry, triggers a Fabric notebook through the Jobs API, and runs row count, freshness, schema and custom checks. It then reads the results back from OneLake and prints a structured pass/fail report. By default it warns instead of blocking, and you can switch it to a hard gate.&lt;/P&gt;
&lt;P&gt;I made Phase 1 the hard gate because it’s deterministic and runs offline. The live checks depend on a Fabric run, so I wanted them to start as warnings until a team trusts them.&lt;/P&gt;
&lt;H3&gt;Lineage decides the Scope&lt;/H3&gt;
&lt;P&gt;Testing everything on every PR is slow, and testing only the changed table misses the damage downstream. So the PR author chooses how far validation reaches.&lt;/P&gt;
&lt;P&gt;Each table lists its direct downstream consumers in a YAML file, and upstream is worked out from that at runtime. The author picks one of four modes in the PR description.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;In the diagram, Silver F is the table the PR touched. &lt;STRONG&gt;Affected only&lt;/STRONG&gt; validates just F. &lt;STRONG&gt;Upstream&lt;/STRONG&gt; adds everything F reads from, six tables in all. &lt;STRONG&gt;Downstream&lt;/STRONG&gt; adds what reads from F, three tables. &lt;STRONG&gt;Full lineage&lt;/STRONG&gt; covers both directions, eight tables. Silver G and Gold J sit beside F in the graph, not above or below it, so they stay out of scope.&lt;/P&gt;
&lt;H3&gt;Metadata over Code&lt;/H3&gt;
&lt;P&gt;All the rules live in YAML, not in hardcoded logic.\&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Five core files are part of the metadata:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;subset_scope.yml: This file tells which tables, pipelines or notebooks are governed.&lt;/LI&gt;
&lt;LI&gt;table_registry.yml: This file covers the per table contracts.&lt;/LI&gt;
&lt;LI&gt;table_lineage.yml: This file mentions the downstream lineage.&lt;/LI&gt;
&lt;LI&gt;notebook_outputs.yml and pipeline_outputs.yml: These files tell which tables each notebook and pipeline produces.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Two more handle execution freshness and custom check notebooks.&lt;/P&gt;
&lt;P&gt;Here’s what a contract looks like, trimmed from the synthetic example in the repo:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;silver.fact_orders:
  min_rows: 1000
  freshness_hours: 24
  freshness_column: order_date
  schema:
    required_columns:
      - order_id
      - customer_id
      - order_amount
      - order_date
  not_null_columns:
    - order_id
    - customer_id
  checks:
    - name: order_amount_non_negative
      sql: "SELECT COUNT(1) FROM {table} WHERE order_amount IS NOT NULL AND order_amount &amp;lt; 0"
      expect_eq: 0
&lt;/LI-CODE&gt;
&lt;P&gt;There's no Python to write. Changing a threshold is a visible edit in a PR, with a name and a reason attached. A newer engineer can read the file to see what healthy means for a table.&lt;/P&gt;
&lt;H3&gt;Rolling it out&lt;/H3&gt;
&lt;P&gt;You don’t have to cover everything at once.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;You can start with a set of pilot tables and adjust the checks and framework based on your team’s requirements. Once you are confident with the updates, you can expand to more tables by simply updating the metadata files. &lt;STRONG&gt;Assets that are outside the scope will remain untouched.&lt;/STRONG&gt;&lt;/P&gt;
&lt;H3&gt;Did it help?&lt;/H3&gt;
&lt;P&gt;On our team, it cut PR review time by roughly &lt;STRONG&gt;40%&lt;/STRONG&gt; and production incidents by roughly &lt;STRONG&gt;25 to 30%&lt;/STRONG&gt;.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Treat those as our experience, not a benchmark. Your tables, your review habits and your starting point will differ.&lt;/P&gt;
&lt;H3&gt;What it doesn’t do&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;It assumes developers test in dev first. If the dev run is sloppy, DEBIT can only tell you that, not fix it.&lt;/LI&gt;
&lt;LI&gt;A contract is only as good as what you write into it. Too tight and the checks raise false alarms, too loose and they miss real problems, so the numbers need upkeep.&lt;/LI&gt;
&lt;LI&gt;The live checks only support Fabric today.&lt;/LI&gt;
&lt;LI&gt;YAML can’t express everything, so there’s a custom SQL check as an escape hatch. I’d rather keep those few, or the files turn into code.&lt;/LI&gt;
&lt;LI&gt;I built it for my own team, so expect rough edges.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Try it&lt;/H2&gt;
&lt;P&gt;You don't need cloud access to try it. The bundled example and the whole test suite run offline.&lt;/P&gt;
&lt;img /&gt;&lt;LI-CODE lang=""&gt;git clone https://github.com/pratap-is-here/debit
cd debit
pip install -r requirements.txt
python examples/run_validation_example.py
python -m pytest -q
&lt;/LI-CODE&gt;
&lt;P&gt;The example walks one changed table through all four scope modes and prints a pass for each. The tests should report 114 passed.&lt;/P&gt;
&lt;P&gt;DEBIT is open source under the MIT license: &lt;STRONG&gt;github.com/pratap-is-here/debit&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;If you review data PRs, I’d like to hear what’s missing. And if a field in the metadata files is awkward for your tables, open an issue with a small example of what you’d rather write. A real table that doesn’t fit is more useful to me than a star.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Views are my own.&lt;/EM&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 03 Nov 2026 14:33:03 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/Code-review-isn-t-enough-for-data-pipelines/ba-p/5385769</guid>
      <dc:creator>PratapIsHere-23</dc:creator>
      <dc:date>2026-11-03T14:33:03Z</dc:date>
    </item>
    <item>
      <title>Cross-Tenant Delegated OneLake Shortcut in Microsoft Fabric | End-to-End Tutorial</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/Cross-Tenant-Delegated-OneLake-Shortcut-in-Microsoft-Fabric-End/ba-p/5380030</link>
      <description>&lt;P&gt;In this video, I walk through how to architect and implement a Cross-Tenant Delegated OneLake Shortcut in Microsoft Fabric. Discover how organisations can securely access and consume data stored in another Microsoft Fabric tenant without physically copying, moving, or replicating the data. Through a practical, step-by-step demonstration, you'll learn how to:&lt;/P&gt;&lt;P&gt;✅ Configure connectivity between two Microsoft Fabric tenants&lt;/P&gt;&lt;P&gt;✅ Implement delegated authentication for secure access&lt;/P&gt;&lt;P&gt;✅ Create a Cross-Tenant OneLake Shortcut&lt;/P&gt;&lt;P&gt;✅ Share data across organisational boundaries while maintaining governance and security&lt;/P&gt;&lt;P&gt;✅ Create Semantic model and Power BI report in the consumer tenant 🔍 What You'll Learn&lt;/P&gt;&lt;P&gt;✅ Understanding Cross-Tenant Delegated OneLake Shortcuts&lt;/P&gt;&lt;P&gt;✅ Microsoft Fabric multi-tenant data architecture&lt;/P&gt;&lt;P&gt;✅ Producer and Consumer tenant architecture design&lt;/P&gt;&lt;P&gt;✅ Configuring cross-tenant access in Microsoft Fabric&lt;/P&gt;&lt;P&gt;✅ Setting up delegated authentication using an Organisational Account or Service Principal&lt;/P&gt;&lt;P&gt;✅ Configuring workspace permissions and OneLake security&lt;/P&gt;&lt;P&gt;✅ Creating a Cross-Tenant OneLake Shortcut&lt;/P&gt;&lt;P&gt;✅ Accessing data across tenants without data duplication&lt;/P&gt;&lt;P&gt;✅ Security considerations and best practices for cross-tenant data sharing&lt;/P&gt;&lt;P&gt;🎯 Who Should Watch? This tutorial is ideal for:&lt;/P&gt;&lt;P&gt;🔹 Microsoft Fabric Data Engineers&lt;/P&gt;&lt;P&gt;🔹 Data Architects&lt;/P&gt;&lt;P&gt;🔹 Cloud Engineers&lt;/P&gt;&lt;P&gt;🔹 Analytics and Platform Teams&lt;/P&gt;&lt;P&gt;🔹 Anyone building secure multi-tenant data-sharing solutions&lt;/P&gt;&lt;P&gt;If you're learning Microsoft Fabric and want to understand how OneLake Shortcuts enable governed data sharing across organisational boundaries, this is a tutorial you don't want to miss. 💡 One of the biggest advantages of OneLake Shortcuts is the ability to eliminate unnecessary data duplication while maintaining security, governance, and a single source of truth across tenants.&lt;/P&gt;&lt;P&gt;🎥 Watch the video&lt;/P&gt;&lt;P&gt;https://www.youtube.com/watch?v=ihlWLRiia7Q&amp;amp;t=693s&lt;/P&gt;&lt;P&gt;and let me know your thoughts in the comments. 👍 If you find the content valuable, please Like, Share, and Subscribe for more practical tutorials on:&lt;/P&gt;&lt;P&gt;✅ Microsoft Fabric ✅ Azure Data Engineering&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;✅ Data Architecture&lt;/P&gt;&lt;P&gt;✅ Modern Data Platforms&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A href="https://www.youtube.com/hashtag/microsoftfabric" target="_blank"&gt;#MicrosoftFabric&lt;/A&gt; &lt;A href="https://www.youtube.com/hashtag/onelake" target="_blank"&gt;#OneLake&lt;/A&gt; &lt;A href="https://www.youtube.com/hashtag/onelakeshortcut" target="_blank"&gt;#OneLakeShortcut&lt;/A&gt; &lt;A href="https://www.youtube.com/hashtag/crosstenant" target="_blank"&gt;#CrossTenant&lt;/A&gt; &lt;A href="https://www.youtube.com/hashtag/delegatedauthentication" target="_blank"&gt;#DelegatedAuthentication&lt;/A&gt; &lt;A href="https://www.youtube.com/hashtag/microsoftfabrictutorial" target="_blank"&gt;#MicrosoftFabricTutorial&lt;/A&gt; &lt;A href="https://www.youtube.com/hashtag/dataengineering" target="_blank"&gt;#DataEngineering&lt;/A&gt; &lt;A href="https://www.youtube.com/hashtag/dataarchitecture" target="_blank"&gt;#DataArchitecture&lt;/A&gt; &lt;A href="https://www.youtube.com/hashtag/microsoftazure" target="_blank"&gt;#MicrosoftAzure&lt;/A&gt; &lt;A href="https://www.youtube.com/hashtag/azuredataengineering" target="_blank"&gt;#AzureDataEngineering&lt;/A&gt; &lt;A href="https://www.youtube.com/hashtag/lakehouse" target="_blank"&gt;#Lakehouse&lt;/A&gt; &lt;A href="https://www.youtube.com/hashtag/datasharing" target="_blank"&gt;#DataSharing&lt;/A&gt; &lt;A href="https://www.youtube.com/hashtag/serviceprincipal" target="_blank"&gt;#ServicePrincipal&lt;/A&gt; &lt;A href="https://www.youtube.com/hashtag/datasecurity" target="_blank"&gt;#DataSecurity&lt;/A&gt; &lt;A href="https://www.youtube.com/hashtag/cloudcomputing" target="_blank"&gt;#CloudComputing&lt;/A&gt; &lt;A href="https://www.youtube.com/hashtag/fabriclakehouse" target="_blank"&gt;#FabricLakehouse&lt;/A&gt; &lt;A href="https://www.youtube.com/hashtag/dataplatform" target="_blank"&gt;#DataPlatform&lt;/A&gt; &lt;A href="https://www.youtube.com/hashtag/bigdata" target="_blank"&gt;#BigData&lt;/A&gt; &lt;A href="https://www.youtube.com/hashtag/microsoftmvp" target="_blank"&gt;#MicrosoftMVP&lt;/A&gt; &lt;A href="https://www.youtube.com/hashtag/databricksmvp" target="_blank"&gt;#DatabricksMVP&lt;/A&gt; &lt;A href="https://www.youtube.com/hashtag/abioladavid" target="_blank"&gt;#AbiolaDavid&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 02 Nov 2026 14:58:02 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/Cross-Tenant-Delegated-OneLake-Shortcut-in-Microsoft-Fabric-End/ba-p/5380030</guid>
      <dc:creator>abiola_david</dc:creator>
      <dc:date>2026-11-02T14:58:02Z</dc:date>
    </item>
    <item>
      <title>AI-Powered Fabric Optimization with Humans in Control</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/AI-Powered-Fabric-Optimization-with-Humans-in-Control/ba-p/5377473</link>
      <description>&lt;P&gt;As Microsoft Fabric becomes central to business reporting and data engineering, inefficient workloads can affect more than execution time. They can consume shared capacity, compete with critical processes, and increase the effort required to keep analytics reliable and cost-effective. Identifying an optimization opportunity is valuable, but turning it into a trusted change requires evidence, clear ownership, and human judgment.&lt;/P&gt;
&lt;P&gt;This solution brings together Azure SRE Agent, Microsoft Fabric, and GitHub to connect investigation with an explicit approval workflow. The agent analyzes workloads and proposes improvements, while a human reviewer decides whether those changes should proceed.&lt;/P&gt;
&lt;P&gt;The central question is simple: How can we use AI to accelerate Fabric optimization without handing it unrestricted control over workloads or code?&lt;/P&gt;
&lt;P&gt;The answer is a workflow in which the agent investigates, the human approves, and server-side functions validate and execute the permitted repository operations.&lt;/P&gt;
&lt;H2 data-line="12"&gt;What This Solution Enables&lt;/H2&gt;
&lt;P data-line="15"&gt;The&amp;nbsp;&lt;STRONG&gt;SRE Recommendation Approvals&lt;/STRONG&gt;&amp;nbsp;demo provides a reviewable path from a performance or capacity finding to a proposed Git change:&lt;/P&gt;
&lt;UL data-line="17"&gt;
&lt;LI data-line="17"&gt;&lt;STRONG&gt;Evidence-based investigation&lt;/STRONG&gt;&amp;nbsp;using Fabric definitions, execution monitoring, and Fabric Unified Admin Monitoring (FUAM) data.&lt;/LI&gt;
&lt;LI data-line="18"&gt;&lt;STRONG&gt;A dedicated approval inbox&lt;/STRONG&gt;&amp;nbsp;where reviewers can inspect the findings, rationale, estimated impact, and proposed changes.&lt;/LI&gt;
&lt;LI data-line="19"&gt;&lt;STRONG&gt;An explicit human decision&lt;/STRONG&gt;&amp;nbsp;before a branch is created or approved edits are committed.&lt;/LI&gt;
&lt;LI data-line="20"&gt;&lt;STRONG&gt;Traceability&lt;/STRONG&gt;&amp;nbsp;through the recommendation ID, reviewer identity, decision comment, branch, and resulting commit.&lt;/LI&gt;
&lt;LI data-line="21"&gt;&lt;STRONG&gt;A deliberate stop before deployment&lt;/STRONG&gt;, leaving merge, publication, and Fabric workspace synchronization outside the automated flow.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-line="23"&gt;&lt;STRONG&gt;Approving a recommendation authorizes the proposed repository changes. It does not authorize an automatic production deployment.&lt;/STRONG&gt;&lt;/P&gt;
&lt;H2 data-line="27"&gt;Architecture Built Around Clear Responsibilities&lt;/H2&gt;
&lt;P data-line="30"&gt;The design separates analysis, human decisions, and repository writes rather than giving one agent responsibility for every action.&lt;/P&gt;
&lt;H3 data-line="32"&gt;Azure SRE Agent: investigate and explain&lt;/H3&gt;
&lt;P data-line="34"&gt;The agent uses Fabric MCP, documented read-only APIs, and workload-specific skills to inspect the target workspace and item. Official Fabric skill documents are read through configured Code Access to the&amp;nbsp;microsoft/skills-for-fabric&amp;nbsp;repository.&lt;/P&gt;
&lt;P data-line="36"&gt;FUAM adds consumption and capacity context through a read-only SQL endpoint connection. The agent must distinguish observations from likely causes and estimated benefits, check data freshness, and avoid presenting daily usage aggregates as exact measurements for an individual run.&lt;/P&gt;
&lt;P data-line="38"&gt;Investigation does not run notebooks or pipelines, alter data, or change live Fabric settings. Managed identity provides Fabric API access; the agent does not receive the GitHub PAT used for repository writes.&lt;/P&gt;
&lt;H3 data-line="40"&gt;A Fabric app: make the human decision visible&lt;/H3&gt;
&lt;P data-line="42"&gt;The approval experience is a Fabric SSO-protected app built with the Rayfin SDK. It presents a recommendation inbox and a detail panel containing the explanation, Markdown findings, proposed changes, and decision history.&lt;/P&gt;
&lt;P data-line="44"&gt;Reviewers can add a comment and explicitly confirm&amp;nbsp;&lt;STRONG&gt;Approve&lt;/STRONG&gt;&amp;nbsp;or&amp;nbsp;&lt;STRONG&gt;Reject&lt;/STRONG&gt;. Server-side decision Functions derive reviewer identity from the platform-issued caller context rather than trusting identity fields supplied by the browser.&lt;/P&gt;
&lt;P data-line="46"&gt;The app's SQL database records the recommendation and its outcome. Its persisted decision states are intentionally simple:&amp;nbsp;&lt;STRONG&gt;Pending, Approved, and Rejected&lt;/STRONG&gt;.&lt;/P&gt;
&lt;H3 data-line="48"&gt;Native Fabric UDFs: validate repository operations&lt;/H3&gt;
&lt;P data-line="50"&gt;Two Python User Data Functions support the agent workflow:&lt;/P&gt;
&lt;UL data-line="52"&gt;
&lt;LI data-line="52"&gt;log_recommendation&amp;nbsp;records the proposal, originating SRE thread, and discovered Git target.&lt;/LI&gt;
&lt;LI data-line="53"&gt;commit_change_set&amp;nbsp;checks the stored approval, exact recommendation branch, and permitted item paths before writing the change set.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-line="55"&gt;The app's decision Functions create the branch on approval. The Python commit UDF subsequently writes the approved edits using its separately configured GitHub credential. PAT values remain server-side.&lt;/P&gt;
&lt;P data-line="57"&gt;These checks do not replace code review: the agent must stay within the approved scope, and reviewers still assess the resulting diff before merge.&lt;/P&gt;
&lt;H3 data-line="59"&gt;GitHub: keep changes reviewable and isolated&lt;/H3&gt;
&lt;P data-line="61"&gt;Each recommendation stores the investigated workspace's&amp;nbsp;&lt;STRONG&gt;repository, base branch, and Git folder&lt;/STRONG&gt;. The workflow never assumes that the workload belongs in the approvals app's own repository, and an existing approval is not silently retargeted when a workspace's Git connection changes.&lt;/P&gt;
&lt;P data-line="63"&gt;Approved edits go to a dedicated recommendation branch. Pull request creation is&amp;nbsp;&lt;STRONG&gt;off by default&lt;/STRONG&gt;&amp;nbsp;and requires an explicit reviewer request.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Azure, Fabric, and GitHub architecture diagram:&lt;/STRONG&gt;&lt;/P&gt;
&lt;img /&gt;
&lt;H2 data-line="69"&gt;From Investigation to Approved Change&lt;/H2&gt;
&lt;P data-line="72"&gt;At a conceptual level, the workflow is:&lt;/P&gt;
&lt;OL data-line="74"&gt;
&lt;LI data-line="74"&gt;&lt;STRONG&gt;Request an investigation.&lt;/STRONG&gt;&amp;nbsp;A user identifies the Fabric workload and analysis period in an SRE Agent conversation.&lt;/LI&gt;
&lt;LI data-line="75"&gt;&lt;STRONG&gt;Collect evidence.&lt;/STRONG&gt;&amp;nbsp;The agent inspects definitions and monitoring, checks relevant FUAM data, and explains the findings and their limitations.&lt;/LI&gt;
&lt;LI data-line="76"&gt;&lt;STRONG&gt;Record a recommendation when requested.&lt;/STRONG&gt;&amp;nbsp;The agent discovers the workspace's Git connection and invokes&amp;nbsp;log_recommendation, preserving the real conversation thread and Git target.&lt;/LI&gt;
&lt;LI data-line="77"&gt;&lt;STRONG&gt;Review the proposal.&lt;/STRONG&gt;&amp;nbsp;A human examines what will change, why it is recommended, and the expected impact in the approval app.&lt;/LI&gt;
&lt;LI data-line="78"&gt;&lt;STRONG&gt;Approve or reject.&lt;/STRONG&gt;&amp;nbsp;Approval creates a branch from the stored base and sends the decision back to the originating SRE thread. Rejection notifies that thread without modifying GitHub.&lt;/LI&gt;
&lt;LI data-line="79"&gt;&lt;STRONG&gt;Implement only the approved scope.&lt;/STRONG&gt;&amp;nbsp;Following approval, the agent invokes&amp;nbsp;commit_change_set; the UDF validates the record and target before creating a non-force commit.&lt;/LI&gt;
&lt;LI data-line="80"&gt;&lt;STRONG&gt;Report the outcome.&lt;/STRONG&gt;&amp;nbsp;Commit metadata is stored with the recommendation, and the agent reports the confirmed result in the original conversation. A PR URL is included only when a PR was explicitly requested and created.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P data-line="82"&gt;The recommendation remains&amp;nbsp;&lt;STRONG&gt;Approved&lt;/STRONG&gt;&amp;nbsp;after the commit. The commit SHA and optional PR URL provide implementation details without introducing a separate deployment status.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Αpproval and rejection workflow:&lt;/STRONG&gt;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2 data-line="88"&gt;Why This Matters for the Business&lt;/H2&gt;
&lt;P data-line="91"&gt;The opportunity is not simply to generate optimization suggestions faster. It is to reduce the manual handoffs between identifying a problem, understanding its business relevance, assigning a decision, and preparing a reviewable fix.&lt;/P&gt;
&lt;P data-line="93"&gt;For platform and engineering teams, this creates a consistent place to discuss performance and capacity trade-offs. For workload owners, it keeps the proposed scope and decision visible. For organizations adopting AI-assisted operations, it demonstrates a practical division of responsibility:&amp;nbsp;&lt;STRONG&gt;AI supports analysis and implementation; people retain authority over change.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P data-line="95"&gt;Any claimed improvement still needs validation. Reduced runtime or CU consumption does not automatically translate into lower invoices, and estimated benefits should be measured against an agreed baseline after the normal deployment process.&lt;/P&gt;
&lt;H2 data-line="99"&gt;Implementation and Practical Scope&lt;/H2&gt;
&lt;P data-line="102"&gt;This article describes a&amp;nbsp;&lt;STRONG&gt;demo reference implementation&lt;/STRONG&gt;, not a production-hardened autonomous operations platform. Notebook optimization is the initial demonstration focus, with pipeline investigation and item-specific change handling providing a foundation for broader scenarios.&lt;/P&gt;
&lt;P data-line="104"&gt;Important boundaries include:&lt;/P&gt;
&lt;UL data-line="106"&gt;
&lt;LI data-line="106"&gt;Git targeting currently supports initialized connections to repositories hosted on&amp;nbsp;github.com, not every Git provider or custom GitHub domain.&lt;/LI&gt;
&lt;LI data-line="107"&gt;Live Fabric definitions can differ from repository content. A non-matching edit should be investigated, not used as permission to broaden the approved change.&lt;/LI&gt;
&lt;LI data-line="108"&gt;Investigation permissions use a Contributor baseline in the demo; instructions constrain behavior but are not a substitute for technical access controls.&lt;/LI&gt;
&lt;LI data-line="109"&gt;The UI prevents repeated submissions within the current page, but the workflow does not provide distributed locking or guaranteed exactly-once processing across concurrent requests.&lt;/LI&gt;
&lt;LI data-line="110"&gt;The SQL record provides workflow traceability, not an immutable compliance audit trail.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-line="112"&gt;Before production adoption, teams should assess least-privilege access, credential lifecycle, concurrency and recovery, audit requirements, and their existing release controls.&lt;/P&gt;
&lt;P data-line="114"&gt;The source and setup guidance are available in the &lt;A href="https://github.com/DimKal-Org/fabric-sre-approvals-demo" target="_blank"&gt;DimKal-Org/fabric-sre-approvals-demo&lt;/A&gt; repository, including:&lt;/P&gt;
&lt;UL data-line="116"&gt;
&lt;LI data-line="116"&gt;The Fabric app, SQL entity, and decision Functions.&lt;/LI&gt;
&lt;LI data-line="117"&gt;The native Python UDF implementation.&lt;/LI&gt;
&lt;LI data-line="118"&gt;Agent instructions and companion skills for Fabric investigation, FUAM analysis, and the recommendation workflow.&lt;/LI&gt;
&lt;LI data-line="119"&gt;Local tests, configuration guidance, and editable architecture diagrams.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2 data-line="125"&gt;Who This Pattern Is For&lt;/H2&gt;
&lt;UL data-line="128"&gt;
&lt;LI data-line="128"&gt;&lt;STRONG&gt;Fabric platform teams&lt;/STRONG&gt;&amp;nbsp;investigating reliability and shared-capacity pressure.&lt;/LI&gt;
&lt;LI data-line="129"&gt;&lt;STRONG&gt;Data engineers&lt;/STRONG&gt;&amp;nbsp;who want actionable recommendations with explicit review boundaries.&lt;/LI&gt;
&lt;LI data-line="130"&gt;&lt;STRONG&gt;SRE and FinOps practitioners&lt;/STRONG&gt;&amp;nbsp;connecting technical evidence with operational and consumption priorities.&lt;/LI&gt;
&lt;LI data-line="131"&gt;&lt;STRONG&gt;Architects evaluating agentic operations&lt;/STRONG&gt;&amp;nbsp;without removing human ownership of change.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-line="138"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P data-line="138"&gt;&lt;STRONG&gt;The goal is not to remove humans from Fabric operations. It is to give them better evidence, clearer choices, and a controlled path from insight to change.&lt;/STRONG&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 27 Oct 2026 14:10:51 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/AI-Powered-Fabric-Optimization-with-Humans-in-Control/ba-p/5377473</guid>
      <dc:creator>dimkalamaras</dc:creator>
      <dc:date>2026-10-27T14:10:51Z</dc:date>
    </item>
    <item>
      <title>Reassigning a Workspace in the Microsoft Fabric Admin Portal</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/Reassigning-a-Workspace-in-the-Microsoft-Fabric-Admin-Portal/ba-p/5365868</link>
      <description>&lt;H1&gt;Reassigning a Workspace in the Microsoft Fabric Admin Portal&lt;/H1&gt;&lt;P&gt;When working with Microsoft Fabric, workspaces are an important part of organising and managing analytics content. A workspace can contain items such as Lakehouses, Warehouses, Notebooks, Data Pipelines, semantic models, and Power BI reports.&lt;/P&gt;&lt;P&gt;Depending on how a workspace is configured, it can be assigned to different types of capacity. There may be situations where a workspace that was originally running on a Power BI Pro shared environment needs to be moved to a Microsoft Fabric Capacity.&lt;/P&gt;&lt;P&gt;In this article, I'll show how to reassign a workspace to a Fabric Capacity using the &lt;STRONG&gt;Microsoft Fabric Admin Portal&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;For this demonstration, I have a workspace named &lt;STRONG&gt;task wk&lt;/STRONG&gt;, which is currently assigned to the &lt;STRONG&gt;Power BI Pro&lt;/STRONG&gt; workspace type.&lt;/P&gt;&lt;img /&gt;&lt;H2&gt;Current Workspace Configuration&lt;/H2&gt;&lt;P&gt;I have already created the following workspace:&lt;/P&gt;&lt;P&gt;Workspace Name: &lt;STRONG&gt;task wk &lt;/STRONG&gt;Workspace Type: Power BI Pro&lt;/P&gt;&lt;P&gt;At the moment, &lt;STRONG&gt;task wk &lt;/STRONG&gt;is not assigned to my Fabric Capacity.&lt;/P&gt;&lt;P&gt;The objective is to move this same workspace from its current Power BI Pro setup and assign it to a Fabric Capacity.&lt;/P&gt;&lt;P&gt;Rather than creating a new workspace, I can simply reassign the existing workspace.&lt;/P&gt;&lt;H2&gt;Open the Fabric Admin Portal&lt;/H2&gt;&lt;P&gt;The first step is to open the &lt;STRONG&gt;Microsoft Fabric Admin Portal&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;From the Fabric interface, open the settings menu and select &lt;STRONG&gt;Admin portal&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;The Admin Portal provides administrators with tenant-level management capabilities, including the ability to manage workspaces and their capacity assignments.&lt;/P&gt;&lt;P&gt;For this task, I need to work with the &lt;STRONG&gt;Workspaces&lt;/STRONG&gt; section.&lt;/P&gt;&lt;img /&gt;&lt;H2&gt;Go to the Workspaces Tab&lt;/H2&gt;&lt;P&gt;Inside the Fabric Admin Portal, select &lt;STRONG&gt;Workspaces&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;This section provides a view of the workspaces available within the Fabric tenant.&lt;/P&gt;&lt;P&gt;I can search for my workspace by name rather than scrolling through the entire list.&lt;/P&gt;&lt;P&gt;In my case, I'm looking for:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;task wk&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Once I locate the workspace, I can see its current configuration.&lt;/P&gt;&lt;P&gt;The workspace is currently associated with the &lt;STRONG&gt;Power BI Pro&lt;/STRONG&gt; workspace type.&lt;/P&gt;&lt;img /&gt;&lt;H2&gt;Select Reassign Workspace&lt;/H2&gt;&lt;P&gt;To change the capacity assignment, I select the &lt;STRONG&gt;ellipsis (...)&lt;/STRONG&gt; next to &lt;STRONG&gt;task wk&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;This opens a menu containing actions that can be performed on the workspace.&lt;/P&gt;&lt;P&gt;From the menu, I select:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Reassign workspace&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;This is the option I need to change the workspace's capacity assignment.&lt;/P&gt;&lt;img /&gt;&lt;H2&gt;Select the Fabric Capacity&lt;/H2&gt;&lt;P&gt;After selecting &lt;STRONG&gt;Reassign workspace&lt;/STRONG&gt;, Fabric presents the available capacity options.&lt;/P&gt;&lt;P&gt;From here, I select the &lt;STRONG&gt;Fabric Capacity&lt;/STRONG&gt; that I want to assign to the workspace.&lt;/P&gt;&lt;P&gt;The important thing is to make sure I select the correct capacity, particularly if the organisation has multiple Fabric capacities.&lt;/P&gt;&lt;P&gt;Once the appropriate Fabric Capacity has been selected, I confirm the reassignment.&lt;/P&gt;&lt;P&gt;Fabric then updates the workspace's capacity assignment.&lt;/P&gt;&lt;img /&gt;&lt;H2&gt;Verifying the Workspace&lt;/H2&gt;&lt;P&gt;After completing the reassignment, I can return to the &lt;STRONG&gt;Workspaces&lt;/STRONG&gt; section in the Admin Portal and check &lt;STRONG&gt;task wk&lt;/STRONG&gt; again.&lt;/P&gt;&lt;img /&gt;&lt;P&gt;The workspace should now show that it is assigned to the selected &lt;STRONG&gt;Fabric Capacity&lt;/STRONG&gt; rather than its previous Power BI Pro setup.&lt;/P&gt;&lt;img /&gt;&lt;P&gt;The workspace itself has not been recreated. The existing workspace and its contents remain in place; what has changed is the capacity to which the workspace is assigned.&lt;/P&gt;&lt;P&gt;This is useful because I don't need to migrate all the workspace items into a new workspace simply because I want to change the capacity.&lt;/P&gt;&lt;H2&gt;Why Reassign a Workspace?&lt;/H2&gt;&lt;P&gt;There are several reasons why an organisation might want to reassign a workspace to Fabric Capacity.&lt;/P&gt;&lt;P&gt;One common reason is to make Fabric capabilities available to the workspace.&lt;/P&gt;&lt;P&gt;For example, an organisation may start with a traditional Power BI workspace and later adopt Microsoft Fabric. Moving the workspace to an appropriate Fabric Capacity can be part of that transition.&lt;/P&gt;&lt;P&gt;Capacity assignment can also be useful when an organisation wants to manage workloads using dedicated capacity rather than relying on shared capacity.&lt;/P&gt;&lt;H2&gt;A Simple Before and After&lt;/H2&gt;&lt;P&gt;In this example, the change can be summarised as:&lt;/P&gt;&lt;P&gt;Before &lt;STRONG&gt;task wk --&amp;gt;&lt;/STRONG&gt;&amp;nbsp;Power BI Pro&lt;/P&gt;&lt;P&gt;After the reassignment:&lt;/P&gt;&lt;P&gt;After &lt;STRONG&gt;task wk --&amp;gt;&lt;/STRONG&gt;&amp;nbsp;Fabric Capacity&lt;/P&gt;&lt;P&gt;The workspace name remains the same, and I don't have to create another workspace just to make the change.&lt;/P&gt;&lt;H2&gt;Things to Consider&lt;/H2&gt;&lt;P&gt;Before reassigning a workspace, it is worth checking that you have the appropriate administrative permissions and that the target Fabric Capacity is available.&lt;/P&gt;&lt;P&gt;It is also important to understand the implications of moving a workspace between capacity types, especially in an organisation where capacity usage, governance, and licensing are carefully managed.&lt;/P&gt;&lt;P&gt;The exact options available in the Admin Portal can also depend on the tenant configuration and the permissions of the administrator.&lt;/P&gt;</description>
      <pubDate>Thu, 10 Sep 2026 13:38:41 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/Reassigning-a-Workspace-in-the-Microsoft-Fabric-Admin-Portal/ba-p/5365868</guid>
      <dc:creator>abiola_david</dc:creator>
      <dc:date>2026-09-10T13:38:41Z</dc:date>
    </item>
    <item>
      <title>Switching Lakehouses in a Microsoft Fabric Notebook</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/Switching-Lakehouses-in-a-Microsoft-Fabric-Notebook/ba-p/5364371</link>
      <description>&lt;P&gt;When working with Microsoft Fabric Notebooks, it is common to work with data that lives in more than one Lakehouse. Instead of creating a separate Notebook for every Lakehouse, Microsoft Fabric allows you to attach multiple Lakehouses to the same Notebook and switch between them when needed.&lt;/P&gt;&lt;P&gt;In this article, I’ll demonstrate this using two Lakehouses: &lt;STRONG&gt;Sales&lt;/STRONG&gt; and &lt;STRONG&gt;Marketing&lt;/STRONG&gt;. The Sales Lakehouse contains a dbo.sales_analytics table, while the Marketing Lakehouse contains a dbo.marketing_analytics table.&lt;/P&gt;&lt;H2&gt;Connecting Multiple Lakehouses to a Notebook&lt;/H2&gt;&lt;P&gt;I started by creating a Fabric Notebook and attaching both the &lt;STRONG&gt;Sales&lt;/STRONG&gt; and &lt;STRONG&gt;Marketing&lt;/STRONG&gt; Lakehouses to it.&lt;/P&gt;&lt;img /&gt;&lt;img /&gt;&lt;P&gt;Once both Lakehouses are connected, they become available within the Notebook environment. This means I can work with data from either Lakehouse without having to create separate Notebooks.&lt;/P&gt;&lt;P&gt;For example, the Sales Lakehouse contains:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;dbo.sales_analytics&lt;/STRONG&gt;&lt;/P&gt;&lt;img /&gt;&lt;P&gt;while the Marketing Lakehouse contains:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;dbo.marketing_analytics&lt;/STRONG&gt;&lt;/P&gt;&lt;img /&gt;&lt;P&gt;The important part here is that both Lakehouses are connected to the same Notebook.&lt;/P&gt;&lt;H2&gt;Switching Between Lakehouses&lt;/H2&gt;&lt;P&gt;One useful feature of Fabric Notebooks is the ability to switch the active Lakehouse from within the Notebook interface.&lt;/P&gt;&lt;P&gt;Marketing Lakehouse is the current Lakehouse with pin indicator. If I intend to switch, I can select the &lt;STRONG&gt;Sales&lt;/STRONG&gt; Lakehouse as the active Lakehouse and work with the sales_analytics table. To switch, right-click on the Sales Lakehouse (or click on the ellipsis). Then, I can click &lt;STRONG&gt;Select as default lakehouse&lt;/STRONG&gt;&lt;/P&gt;&lt;img /&gt;&lt;P&gt;As seen below, the Sales Lakehouse has been promoted to the top of the Marketing Lakehouse.&lt;/P&gt;&lt;img /&gt;&lt;P&gt;I can also switch the active Sales Lakehouse back to &lt;STRONG&gt;Marketing&lt;/STRONG&gt; and work with the marketing_analytics table, all within the same Notebook.&lt;/P&gt;&lt;P&gt;This can be particularly useful when building data engineering or analytics workflows where data is distributed across multiple Lakehouses.&lt;/P&gt;&lt;H2&gt;Working with the Sales Lakehouse&lt;/H2&gt;&lt;P&gt;After switching the active Lakehouse to &lt;STRONG&gt;Sales&lt;/STRONG&gt;, I can access the sales data from the Notebook.&lt;/P&gt;&lt;P&gt;For example:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;df = spark.sql("SELECT * FROM Sales.dbo.sales_analytics LIMIT 10") &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;display(df)&lt;/STRONG&gt;&lt;/P&gt;&lt;img /&gt;&lt;P&gt;Because &lt;STRONG&gt;Sales&lt;/STRONG&gt; is the active Lakehouse, the table can be referenced directly using its table name.&lt;/P&gt;&lt;P&gt;I don't need to create another Notebook just to work with the Sales Lakehouse.&lt;/P&gt;&lt;H3&gt;Query Marketing Analytics Table&lt;/H3&gt;&lt;P&gt;Note, I don't necessary need to switch to the &lt;STRONG&gt;Marketing Lakehouse &lt;/STRONG&gt;before I can query the inherent marketing_analytics table!&lt;/P&gt;&lt;P&gt;For example, I can simply author the SparkSQL code shown before to read the data from the marketing_analytics&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;df = spark.sql("SELECT * FROM Marketing.dbo.marketing_analytics LIMIT 10") &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;display(df)&lt;/STRONG&gt;&lt;/P&gt;&lt;img /&gt;&lt;P&gt;Being able to switch Lakehouses makes the Notebook much more flexible because I can move between different Lakehouse environments without leaving the Notebook or creating additional Notebooks.&lt;/P&gt;&lt;H2&gt;Why Switching Lakehouses Is Useful&lt;/H2&gt;&lt;P&gt;At first, this might seem like a small feature, but it can be very useful when designing Fabric data engineering solutions.&lt;/P&gt;&lt;P&gt;For example, imagine an organisation has separate Lakehouses for different business domains:&lt;/P&gt;&lt;P&gt;Sales Lakehouse └── dbo.sales_analytics Marketing Lakehouse └── dbo.marketing_analytics&lt;/P&gt;&lt;P&gt;A single Notebook can be connected to both Lakehouses. Depending on the task I'm performing, I can switch between them and work with the appropriate data.&lt;/P&gt;&lt;P&gt;This can help reduce the number of Notebooks required in a Fabric workspace and make development more convenient.&lt;/P&gt;&lt;P&gt;It can also be useful when demonstrating Fabric capabilities, developing data transformation logic, or working with multiple business-domain Lakehouses.&lt;/P&gt;&lt;H2&gt;One Notebook, Multiple Lakehouses&lt;/H2&gt;&lt;P&gt;The key takeaway is that a Fabric Notebook doesn't necessarily have to be tied to just one Lakehouse.&lt;/P&gt;&lt;P&gt;By connecting multiple Lakehouses and switching the active Lakehouse when required, I can use a single Notebook to work with data across different Lakehouse environments.&lt;/P&gt;&lt;P&gt;In this example, I started with the &lt;STRONG&gt;Sales&lt;/STRONG&gt; Lakehouse, queried dbo.sales_analytics, switched to the &lt;STRONG&gt;Marketing&lt;/STRONG&gt; Lakehouse, and then queried dbo.marketing_analytics — all from the same Fabric Notebook.&lt;/P&gt;&lt;P&gt;This provides a simple and convenient way to work across multiple Lakehouses while keeping related development activities within a single Notebook.&lt;/P&gt;</description>
      <pubDate>Thu, 03 Sep 2026 14:06:26 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/Switching-Lakehouses-in-a-Microsoft-Fabric-Notebook/ba-p/5364371</guid>
      <dc:creator>abiola_david</dc:creator>
      <dc:date>2026-09-03T14:06:26Z</dc:date>
    </item>
    <item>
      <title>From ADF Inventory to a Fabric Operating Model: A Practical Migration Playbook (Part 2)</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/From-ADF-Inventory-to-a-Fabric-Operating-Model-A-Practical/ba-p/5360767</link>
      <description>&lt;P&gt;A practical guide to building a portable, metadata-driven ingestion framework for Microsoft Fabric. Learn how JSON configuration, Pipelines or Airflow orchestration, watermarks, retries, and audit tables work together to make data ingestion scalable and safe.&lt;/P&gt;</description>
      <pubDate>Mon, 24 Aug 2026 13:45:19 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/From-ADF-Inventory-to-a-Fabric-Operating-Model-A-Practical/ba-p/5360767</guid>
      <dc:creator>ssrithar</dc:creator>
      <dc:date>2026-08-24T13:45:19Z</dc:date>
    </item>
    <item>
      <title>From ADF Inventory to a Fabric Operating Model: A Practical Migration Playbook</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/From-ADF-Inventory-to-a-Fabric-Operating-Model-A-Practical/ba-p/5356387</link>
      <description>&lt;P&gt;Migrating from Azure Data Factory to Microsoft Fabric is not a one-for-one conversion. This practical playbook helps you assess existing workloads, choose the right Fabric pattern—Mirroring, Copy jobs, Pipelines, or Notebooks—and validate the move safely through metadata-driven design, reconciliation, and phased cutover.&lt;/P&gt;</description>
      <pubDate>Tue, 11 Aug 2026 13:47:18 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/From-ADF-Inventory-to-a-Fabric-Operating-Model-A-Practical/ba-p/5356387</guid>
      <dc:creator>ssrithar</dc:creator>
      <dc:date>2026-08-11T13:47:18Z</dc:date>
    </item>
    <item>
      <title>Understanding SHOWPLAN_ALL in Fabric SQL</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/Understanding-SHOWPLAN-ALL-in-Fabric-SQL/ba-p/5333681</link>
      <description>&lt;P&gt;As data engineers, we spend a significant amount of time writing SQL queries to ingest, transform, and analyze data. However, producing the correct result is only half the story. Equally important is understanding&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;how the SQL Server Query Optimizer executes our queries&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;One of the most effective ways to inspect the optimizer's decisions is by using&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;SHOWPLAN_ALL.&lt;/P&gt;&lt;P&gt;In this article, I'll demonstrate how to use&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;SHOWPLAN_ALL&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;in SQL Server and Microsoft Fabric SQL Database, explain what it does, discuss a common pitfall, and show you how to resolve it.&lt;/P&gt;&lt;H2&gt;What is SHOWPLAN_ALL?&lt;/H2&gt;&lt;P&gt;SHOWPLAN_ALL&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;is a session-level SQL Server setting that instructs the query optimizer to return the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;estimated execution plan&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;instead of executing the query.&lt;/P&gt;&lt;P&gt;Rather than returning data, SQL Server provides detailed information about the physical operators it intends to use, allowing us to understand how the query will be processed before it runs.&lt;/P&gt;&lt;P&gt;This is particularly useful when:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;Investigating slow-running queries.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Understanding optimizer decisions.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Identifying expensive operations such as sorts and scans.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Comparing different query implementations.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Tuning SQL for better performance.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Unlike PostgreSQL, MySQL, Oracle, or Databricks SQL, which support variations of the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;EXPLAIN&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;command, SQL Server relies on&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;SHOWPLAN_ALL&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;and graphical execution plans.&lt;/P&gt;&lt;H2&gt;Orders Table&lt;/H2&gt;&lt;P&gt;For this walkthrough, I'll use anorders&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;table in Fabric SQL&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;CREATE TABLE orders
(
    order_id INT PRIMARY KEY NOT NULL,
    order_date DATE NOT NULL,
    customer VARCHAR(20) NOT NULL,
    amount INT NOT NULL
);&lt;/PRE&gt;&lt;P&gt;&lt;SPAN&gt;After populating the table with data, I'll calculate a running total using a window function.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;img /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Sample Query&lt;/STRONG&gt;&lt;/P&gt;&lt;PRE&gt;SELECT
    order_id,
    order_date,
    customer,
    amount,
    SUM(amount) OVER
    (
        ORDER BY order_date, order_id
    ) AS running_total
FROM orders
ORDER BY customer, order_date, order_id;&lt;/PRE&gt;&lt;P&gt;&lt;SPAN&gt;Without any execution plan settings enabled, SQL Server executes the query normally and returns the dataset.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;img /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Viewing the Estimated Execution Plan&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;To inspect how SQL Server intends to execute the query, enable&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;SHOWPLAN_ALL.&lt;/P&gt;&lt;PRE&gt;SET SHOWPLAN_ALL ON;
GO

SELECT
    order_id,
    order_date,
    customer,
    amount,
    SUM(amount) OVER
    (
        ORDER BY order_date, order_id
    ) AS running_total
FROM orders
ORDER BY customer, order_date, order_id;
GO&lt;/PRE&gt;&lt;P&gt;&lt;SPAN&gt;Instead of returning rows from the&amp;nbsp;&lt;/SPAN&gt;orders&lt;SPAN&gt;&amp;nbsp;table, SQL Server returns an estimated execution plan describing the physical operations that would be performed.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;img /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;SPAN&gt;Although the exact operators depend on the optimizer and available indexes, the execution plan typically resembles the following sequence:&lt;/SPAN&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;P&gt;Read the data from the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;orders&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;table.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Perform any required sorting for the window function.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Compute the running total using the Window Aggregate operator.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Apply the final&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;ORDER BY.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Return the results.&lt;/P&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;This visibility into the optimizer's decision-making process is invaluable when diagnosing performance issues.&lt;/P&gt;&lt;H2&gt;A Common Pitfall&lt;/H2&gt;&lt;P&gt;One of the most common mistakes developers make is assuming that&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;SHOWPLAN_ALL&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;only affects the next query.&lt;/P&gt;&lt;P&gt;It doesn't.&lt;/P&gt;&lt;P&gt;SHOWPLAN_ALL&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;is a&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;session-level setting&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;Once enabled,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;every subsequent query in the same session returns an execution plan instead of executing&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;For example, after running:&lt;/P&gt;&lt;PRE&gt;SET SHOWPLAN_ALL ON;
GO&lt;/PRE&gt;&lt;P&gt;&lt;SPAN&gt;Even a simple query such as:&lt;/SPAN&gt;&lt;/P&gt;&lt;PRE&gt;SELECT *
FROM orders;&lt;/PRE&gt;&lt;P&gt;&lt;SPAN&gt;returns the execution plan rather than the table data as seen below&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;img /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;SPAN&gt;If you're unaware that&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;SHOWPLAN_ALL&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;is still enabled, it can be quite confusing because every query appears to "stop working."&lt;/SPAN&gt;&lt;/P&gt;&lt;H2&gt;&lt;STRONG&gt;The Solution&lt;/STRONG&gt;&lt;/H2&gt;&lt;P&gt;The fix is straightforward.&lt;/P&gt;&lt;P&gt;Disable the session setting.&lt;/P&gt;&lt;PRE&gt;SET SHOWPLAN_ALL OFF;
GO&lt;/PRE&gt;&lt;P&gt;&lt;SPAN&gt;After turning it off, SQL Server immediately resumes normal execution.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;img /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Running the same query again returns the expected dataset.&lt;/P&gt;&lt;H2&gt;Why This Happens&lt;/H2&gt;&lt;P&gt;Many SQL Server settings persist for the duration of the current session.&lt;/P&gt;&lt;P&gt;SHOWPLAN_ALL&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;is one of them.&lt;/P&gt;&lt;P&gt;Other commonly used session-level settings include:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;SHOWPLAN_XML&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;STATISTICS IO&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;STATISTICS TIME&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;NOCOUNT&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Understanding session scope is important when troubleshooting unexpected SQL Server behavior, particularly during performance tuning.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;As data volumes continue to grow, query performance becomes increasingly important.&lt;/P&gt;&lt;P&gt;Execution plans provide insights that cannot be obtained simply by reading the SQL statement.&lt;/P&gt;&lt;P&gt;They help answer questions such as:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;Is SQL Server performing a Table Scan or an Index Seek?&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Is an unnecessary Sort operation occurring?&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Which operator consumes the highest estimated cost?&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Is the optimizer using a Window Aggregate efficiently?&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Can the query be rewritten to reduce resource consumption?&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;These are exactly the questions that distinguish writing SQL from engineering performant SQL solutions.&lt;/P&gt;&lt;H2&gt;Key Takeaways&lt;/H2&gt;&lt;P&gt;If you regularly work with SQL Server or Microsoft Fabric SQL Database, keep the following in mind:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;SHOWPLAN_ALL&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;returns the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;estimated execution plan&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;without executing the query.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;It is a&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;session-level setting&lt;/STRONG&gt;, not a one-time command.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Every query continues returning execution plans until the setting is explicitly disabled.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Use&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;SET SHOWPLAN_ALL OFF&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;to restore normal query execution.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Learning to interpret execution plans is an essential performance tuning skill for data engineers and database professionals.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;H2&gt;Final Thoughts&lt;/H2&gt;&lt;P&gt;Window functions, Common Table Expressions (CTEs), and complex analytical queries are becoming increasingly common in modern data platforms. While writing these queries correctly is important, understanding how the SQL Server Query Optimizer executes them is what enables us to build scalable and efficient data solutions.&lt;/P&gt;&lt;P&gt;SHOWPLAN_ALL&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;offers a simple yet powerful way to inspect the optimizer's strategy before a query is executed. Combined with graphical execution plans and tools such as&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;STATISTICS IO&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;and&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;STATISTICS TIME, it forms an essential part of every data engineer's SQL performance tuning toolkit.&lt;/P&gt;&lt;P&gt;The next time you're optimizing a query, don't just verify that it returns the correct result—take a few minutes to examine&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;how&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;SQL Server plans to execute it. The insights you gain can often reveal opportunities for significant performance improvements.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 03 Aug 2026 19:00:00 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/Understanding-SHOWPLAN-ALL-in-Fabric-SQL/ba-p/5333681</guid>
      <dc:creator>abiola_david</dc:creator>
      <dc:date>2026-08-03T19:00:00Z</dc:date>
    </item>
    <item>
      <title>Microsoft Fabric Just Made Quick Data Explorer Much Easier</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/Microsoft-Fabric-Just-Made-Quick-Data-Explorer-Much-Easier/ba-p/5334002</link>
      <description>&lt;P&gt;Tired of creating temporary notebooks just to troubleshoot a pipeline or check a table? Meet the Lakehouse Query Explorer—Microsoft Fabric’s new lightweight Spark SQL editor built for rapid exploratory work.&lt;/P&gt;</description>
      <pubDate>Mon, 03 Aug 2026 14:11:34 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/Microsoft-Fabric-Just-Made-Quick-Data-Explorer-Much-Easier/ba-p/5334002</guid>
      <dc:creator>Murtaza_Ghafoor</dc:creator>
      <dc:date>2026-08-03T14:11:34Z</dc:date>
    </item>
    <item>
      <title>Choosing the Right Way to Run Python in Microsoft Fabric</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/Choosing-the-Right-Way-to-Run-Python-in-Microsoft-Fabric/ba-p/5303928</link>
      <description>&lt;H2 class="heading-element" dir="auto" tabindex="-1"&gt;&lt;SPAN&gt;Fabric gives us several ways to run Python, and at first they can look overlapping.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;In this post, I share the practical decision model I use to choose the right option based on execution mode, compute engine, and data access path.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;If you are code-first and want fewer wrong turns when moving from exploration to production, this guide is for you.&lt;/SPAN&gt;&lt;/H2&gt;</description>
      <pubDate>Tue, 21 Jul 2026 13:45:43 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/Choosing-the-Right-Way-to-Run-Python-in-Microsoft-Fabric/ba-p/5303928</guid>
      <dc:creator>apturlov</dc:creator>
      <dc:date>2026-07-21T13:45:43Z</dc:date>
    </item>
    <item>
      <title>Breaking Barriers: Azure Databricks Unity Catalog Tables Can Now Be Stored Directly in OneLake</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/Breaking-Barriers-Azure-Databricks-Unity-Catalog-Tables-Can-Now/ba-p/5222684</link>
      <description>&lt;P&gt;Seamlessly Read &amp;amp; Write data to OneLake from Azure Databricks with Unity Catalog governance in place!&lt;/P&gt;</description>
      <pubDate>Mon, 22 Jun 2026 14:09:32 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/Breaking-Barriers-Azure-Databricks-Unity-Catalog-Tables-Can-Now/ba-p/5222684</guid>
      <dc:creator>Srisakthi</dc:creator>
      <dc:date>2026-06-22T14:09:32Z</dc:date>
    </item>
    <item>
      <title>Playing the Zork game in Fabric as a Fabric App</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/Playing-the-Zork-game-in-Fabric-as-a-Fabric-App/ba-p/5194033</link>
      <description>&lt;P&gt;&lt;SPAN&gt;Whether you are a pro-coder or a software maker, the new Fabric Apps feature offers an easy and powerful way to vibe code custom software applications and host them within Fabric.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Although Fabric is a very serious SaaS platform, I now have the tools to play the Zork game&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;within Fabric!&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;I just deployed the Fabric App Hello World template and asked GitHub Copilot to merge the Visual Zorker&lt;/SPAN&gt; &lt;SPAN&gt;into the Fabric App. Then, I only had to deploy it again. All in five minutes tops.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Let's check out how this is done.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 08 Jun 2026 13:39:19 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/Playing-the-Zork-game-in-Fabric-as-a-Fabric-App/ba-p/5194033</guid>
      <dc:creator>svelde</dc:creator>
      <dc:date>2026-06-08T13:39:19Z</dc:date>
    </item>
    <item>
      <title>Direct Lake Is Changing the Lakehouse vs Warehouse Debate in Microsoft Fabric</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/Direct-Lake-Is-Changing-the-Lakehouse-vs-Warehouse-Debate-in/ba-p/5190897</link>
      <description>&lt;P&gt;Most Fabric discussions still focus on Lakehouse versus Warehouse.&lt;/P&gt;&lt;P&gt;I believe that's increasingly the wrong question.&lt;/P&gt;&lt;P&gt;Thanks to Direct Lake, many organizations can now go directly from Lakehouse to Power BI without introducing a Warehouse layer. But there are important trade-offs and hidden performance considerations that every Fabric architect should understand before making that choice.&lt;/P&gt;&lt;P&gt;Let's dive into what really drives the decision.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 01 Jun 2026 13:55:33 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/Direct-Lake-Is-Changing-the-Lakehouse-vs-Warehouse-Debate-in/ba-p/5190897</guid>
      <dc:creator>Tamanchu</dc:creator>
      <dc:date>2026-06-01T13:55:33Z</dc:date>
    </item>
    <item>
      <title>The Fabric Admin Trap: Scaling Your Cleanup</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/The-Fabric-Admin-Trap-Scaling-Your-Cleanup/ba-p/5189366</link>
      <description>&lt;P&gt;We’ve all been there. It’s Friday afternoon, and you’re looking at your Microsoft Fabric tenant. It’s cluttered with dozens of abandoned test workspaces, half-finished projects, and “oops, I forgot to delete this” environments.&amp;nbsp;You open the portal. You click. You wait for the page to refresh. You click again. You feel the rage slowly building. As admins, we are supposed to be power users, but we often spend more time navigating UI menus than actually managing our data. I decided enough was enough and turned to the Microsoft Fabric CLI (fab) to take back control. But the path to automation wasn’t a straight line.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 27 May 2026 13:41:05 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/The-Fabric-Admin-Trap-Scaling-Your-Cleanup/ba-p/5189366</guid>
      <dc:creator>Pragati11</dc:creator>
      <dc:date>2026-05-27T13:41:05Z</dc:date>
    </item>
    <item>
      <title>A reference architecture for private API access from Microsoft Fabric</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/A-reference-architecture-for-private-API-access-from-Microsoft/ba-p/5187597</link>
      <description>&lt;P&gt;&lt;STRONG&gt;Calling private APIs from Microsoft Fabric — a reference architecture with Managed Private Endpoints and Azure Functions&lt;/STRONG&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 22 May 2026 15:12:10 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/A-reference-architecture-for-private-API-access-from-Microsoft/ba-p/5187597</guid>
      <dc:creator>dimkalamaras</dc:creator>
      <dc:date>2026-05-22T15:12:10Z</dc:date>
    </item>
    <item>
      <title>Fabric Data Agents - The Orchestration Playbook for M365 or Teams experience</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/Fabric-Data-Agents-The-Orchestration-Playbook-for-M365-or-Teams/ba-p/5185498</link>
      <description>&lt;P&gt;&lt;SPAN&gt;You’ve built a Fabric Data Agent - now where should users interact with it? This post compares the major orchestration paths across the native Fabric experience, Microsoft 365 Copilot, and Teams bot orchestration, with a practical lens on fit, identity, and user experience&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 20 May 2026 18:27:45 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/Fabric-Data-Agents-The-Orchestration-Playbook-for-M365-or-Teams/ba-p/5185498</guid>
      <dc:creator>hasrikak</dc:creator>
      <dc:date>2026-05-20T18:27:45Z</dc:date>
    </item>
    <item>
      <title>Materialized Lake Views in Microsoft Fabric: Making Engineering Work Easier</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/Materialized-Lake-Views-in-Microsoft-Fabric-Making-Engineering/ba-p/5184066</link>
      <description>&lt;P&gt;Managing data does not have to be painful. Learn how Materialized Lake Views in Microsoft Fabric combine simple SQL with automated updates to keep your data ready and your costs at lower levels.&lt;/P&gt;</description>
      <pubDate>Mon, 18 May 2026 14:40:57 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering-Community-Blog/Materialized-Lake-Views-in-Microsoft-Fabric-Making-Engineering/ba-p/5184066</guid>
      <dc:creator>Murtaza_Ghafoor</dc:creator>
      <dc:date>2026-05-18T14:40:57Z</dc:date>
    </item>
  </channel>
</rss>

