<?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>topic Re: Metadata-driven ETL in Fabric: Warehouse vs Lakehouse (best practice for scaling dims/facts?) in Data Engineering</title>
    <link>https://community.fabric.microsoft.com/t5/Data-Engineering/Metadata-driven-ETL-in-Fabric-Warehouse-vs-Lakehouse-best/m-p/5179282#M16145</link>
    <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.fabric.microsoft.com/t5/user/viewprofilepage/user-id/802637"&gt;@Ira_27&lt;/a&gt;&amp;nbsp;,&lt;BR /&gt;&lt;BR /&gt;Just wanted to check if the response provided was helpful. If further assistance is needed, please reach out.&lt;BR /&gt;Thank you.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 07 May 2026 11:24:52 GMT</pubDate>
    <dc:creator>v-veshwara-msft</dc:creator>
    <dc:date>2026-05-07T11:24:52Z</dc:date>
    <item>
      <title>Metadata-driven ETL in Fabric: Warehouse vs Lakehouse (best practice for scaling dims/facts?)</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering/Metadata-driven-ETL-in-Fabric-Warehouse-vs-Lakehouse-best/m-p/5176915#M16095</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;We are currently in the phase of implementing &lt;SPAN class=""&gt;&lt;SPAN class=""&gt;Microsoft Fabric&lt;/SPAN&gt;&lt;/SPAN&gt; and are evaluating whether to use &lt;STRONG&gt;Fabric Warehouse vs Lakehouse&lt;/STRONG&gt; for our dimensional model.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;We completed a POC using &lt;STRONG&gt;Warehouse&lt;/STRONG&gt;, where we successfully implemented a &lt;STRONG&gt;metadata-driven ETL framework&lt;/STRONG&gt;:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Fabric Pipeline queries a metadata/control table for job dependencies and execution order&lt;/LI&gt;&lt;LI&gt;Each metadata record defines which stored procedure to execute&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Pattern used:&lt;/P&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;PRE&gt;&lt;SPAN&gt;Landing Zone (Lakehouse) → Conformed Views (Warehouse) → Stored Procedures (Warehouse)&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;This approach has worked well for loading both &lt;STRONG&gt;dimensions and facts&lt;/STRONG&gt; in a scalable and orchestrated way.&lt;/P&gt;&lt;HR /&gt;&lt;H3&gt;&lt;SPAN&gt;&lt;STRONG&gt;Current Challenge (Lakehouse POC)&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/H3&gt;&lt;P&gt;We are now exploring a similar approach using &lt;STRONG&gt;Lakehouse for storing dimensions and facts&lt;/STRONG&gt;, but are running into some design questions:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;STRONG&gt;Notebook Design &amp;amp; Scalability&lt;/STRONG&gt;&lt;UL&gt;&lt;LI&gt;With ~100 dimensions and ~30 facts, is it a best practice to create &lt;STRONG&gt;one notebook per dimension/fact&lt;/STRONG&gt;, or&lt;/LI&gt;&lt;LI&gt;Should we be building &lt;STRONG&gt;generic, parameterized notebooks&lt;/STRONG&gt; driven by metadata?&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Handling Transformations &amp;amp; Joins&lt;/STRONG&gt;&lt;UL&gt;&lt;LI&gt;In Warehouse, we used conformed views to encapsulate joins and business logic&lt;/LI&gt;&lt;LI&gt;In Lakehouse, since views have limitations, what is the recommended approach?&lt;UL&gt;&lt;LI&gt;Materialized Silver tables?&lt;/LI&gt;&lt;LI&gt;Dynamic SQL generation from metadata?&lt;/LI&gt;&lt;LI&gt;Some hybrid pattern?&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Orchestration Pattern&lt;/STRONG&gt;&lt;UL&gt;&lt;LI&gt;Has anyone successfully implemented a &lt;STRONG&gt;fully metadata-driven ETL framework in Lakehouse&lt;/STRONG&gt; (similar to stored-proc-driven patterns in Warehouse)?&lt;/LI&gt;&lt;LI&gt;If yes, how are you managing:&lt;UL&gt;&lt;LI&gt;Dependencies&lt;/LI&gt;&lt;LI&gt;Reusability&lt;/LI&gt;&lt;LI&gt;Debugging and lineage&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;General Architecture Guidance&lt;/STRONG&gt;&lt;UL&gt;&lt;LI&gt;For enterprise-scale dimensional modeling in Fabric, is the recommended approach:&lt;UL&gt;&lt;LI&gt;Pure Lakehouse&lt;/LI&gt;&lt;LI&gt;Pure Warehouse&lt;/LI&gt;&lt;LI&gt;Or a hybrid (Lakehouse for ingestion + Warehouse for serving)?&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;HR /&gt;&lt;H3&gt;&lt;SPAN&gt;&lt;STRONG&gt;Goal&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/H3&gt;&lt;P&gt;We are trying to design a &lt;STRONG&gt;robust, scalable, metadata-driven orchestration framework&lt;/STRONG&gt; that can support:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;100+ dimensions&lt;/LI&gt;&lt;LI&gt;30+ fact tables&lt;/LI&gt;&lt;LI&gt;Reusable ETL logic&lt;/LI&gt;&lt;LI&gt;Clear dependency management&lt;/LI&gt;&lt;/UL&gt;</description>
      <pubDate>Sat, 02 May 2026 23:23:17 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering/Metadata-driven-ETL-in-Fabric-Warehouse-vs-Lakehouse-best/m-p/5176915#M16095</guid>
      <dc:creator>Ira_27</dc:creator>
      <dc:date>2026-05-02T23:23:17Z</dc:date>
    </item>
    <item>
      <title>Re: Metadata-driven ETL in Fabric: Warehouse vs Lakehouse (best practice for scaling dims/facts?)</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering/Metadata-driven-ETL-in-Fabric-Warehouse-vs-Lakehouse-best/m-p/5177231#M16104</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.fabric.microsoft.com/t5/user/viewprofilepage/user-id/802637"&gt;@Ira_27&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;
&lt;P&gt;Thanks for reaching out to Microsoft Fabric Community.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To address your core concern first: your existing Warehouse pattern is solid and you don't need to abandon it. The recommended approach for enterprise-scale dimensional modeling in Fabric is actually a hybrid -- Lakehouse for ingestion and transformation, Warehouse for the serving layer. Both share OneLake under the hood and use Delta format, so the interoperability is seamless. You can shortcut Silver Lakehouse tables directly into the Warehouse and keep all your existing stored procedures and conformed views exactly as they are. Microsoft's own FastTrack team published a metadata-driven pipeline pattern that follows this same structure, worth going through in detail: &lt;A href="https://techcommunity.microsoft.com/blog/fasttrackforazureblog/metadata-driven-pipelines-for-microsoft-fabric/3891651" target="_blank"&gt;Metadata Driven Pipelines for Microsoft Fabric | Microsoft Community Hub&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;On the notebook design question -- with 100+ dimensions and 30 facts, creating one notebook per entity will become a maintenance problem quickly. The right approach would be a small set of generic, parameterized notebooks (one for SCD1/2 dim loads, one for fact loads, one for silver materialization) that read all their configuration from your control table at runtime. The notebook is the engine; the metadata row is the config. This is covered well in the official decision guide here: &lt;A href="https://learn.microsoft.com/en-us/fabric/fundamentals/decision-guide-lakehouse-warehouse" target="_blank"&gt;Microsoft Fabric Decision Guide: Choose between Warehouse and Lakehouse - Microsoft Fabric | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For transformations and joins in Lakehouse -- since the SQL analytics endpoint is read-only, you can't replicate Warehouse views directly. The cleanest workaround is materializing Silver as Delta tables via Spark notebooks, then either shortcutting those into the Warehouse for your conformed view logic, or using Spark SQL managed views within the Lakehouse SQL endpoint for lighter joins. The shortcut approach is particularly useful because it means zero data movement and your Warehouse views can point straight at Lakehouse data.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For dependency management and parallel execution, look into notebookutils.notebook.runMultiple() -- it lets you define a DAG directly in a notebook, specifying which notebooks run in parallel and which wait on others. This is more reliable than trying to parallelize notebook calls inside a Pipeline ForEach, which runs into Spark session concurrency limits.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/fabric/data-engineering/notebookutils/notebookutils-notebook-run?tabs=python" target="_blank"&gt;NotebookUtils notebook run and orchestration for Fabric - Microsoft Fabric | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Also worth noting: pipeline variable libraries are now GA in Fabric and were specifically designed to support metadata-driven pipeline patterns -- &lt;A href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blogs/New-Innovations-for-Fabric-Data-Factory-Orchestration-at-Fabric/ba-p/5172581" target="_blank"&gt;New Innovations for Fabric Data Factory Orchestrat... - Microsoft Fabric Community&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For lineage and debugging, logging execution details (rows read/inserted/updated, pipeline run ID, status) to a dedicated control Lakehouse table from within each notebook gives you a clean audit trail that works well with Fabric's built-in monitoring.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Hope this helps. Please reach out for further assistance.&lt;/P&gt;
&lt;P&gt;Thank you.&lt;/P&gt;</description>
      <pubDate>Mon, 04 May 2026 06:12:09 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering/Metadata-driven-ETL-in-Fabric-Warehouse-vs-Lakehouse-best/m-p/5177231#M16104</guid>
      <dc:creator>v-veshwara-msft</dc:creator>
      <dc:date>2026-05-04T06:12:09Z</dc:date>
    </item>
    <item>
      <title>Re: Metadata-driven ETL in Fabric: Warehouse vs Lakehouse (best practice for scaling dims/facts?)</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering/Metadata-driven-ETL-in-Fabric-Warehouse-vs-Lakehouse-best/m-p/5179282#M16145</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.fabric.microsoft.com/t5/user/viewprofilepage/user-id/802637"&gt;@Ira_27&lt;/a&gt;&amp;nbsp;,&lt;BR /&gt;&lt;BR /&gt;Just wanted to check if the response provided was helpful. If further assistance is needed, please reach out.&lt;BR /&gt;Thank you.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 07 May 2026 11:24:52 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering/Metadata-driven-ETL-in-Fabric-Warehouse-vs-Lakehouse-best/m-p/5179282#M16145</guid>
      <dc:creator>v-veshwara-msft</dc:creator>
      <dc:date>2026-05-07T11:24:52Z</dc:date>
    </item>
  </channel>
</rss>

