<script data-pm-proxy="intercept"></script><?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Head First Data]]></title><description><![CDATA[Let's make some music from the data together! I'm Nikola, Data Mozart, Microsoft Data Platform MVP, O'Reilly and Pluralsight author. I'm writing (mostly) about the Microsoft data platform - Power BI and Microsoft Fabric. Visca Barca! ]]></description><link>https://datamozart.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!LBBr!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feaf03a59-cf71-4c93-9895-d76a8f189e9b_1024x1024.png</url><title>Head First Data</title><link>https://datamozart.substack.com</link></image><generator>Substack</generator><lastBuildDate>Wed, 02 Sep 2026 21:23:57 GMT</lastBuildDate><atom:link href="/__u/datamozart.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Nikola Ilic]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[datamozart@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[datamozart@substack.com]]></itunes:email><itunes:name><![CDATA[Nikola Ilic]]></itunes:name></itunes:owner><itunes:author><![CDATA[Nikola Ilic]]></itunes:author><googleplay:owner><![CDATA[datamozart@substack.com]]></googleplay:owner><googleplay:email><![CDATA[datamozart@substack.com]]></googleplay:email><googleplay:author><![CDATA[Nikola Ilic]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Variable libraries in Microsoft Fabric: One value to rule them all!]]></title><description><![CDATA[Hardcoded values are the cockroaches of a data platform...]]></description><link>https://datamozart.substack.com/p/variable-libraries-in-microsoft-fabric</link><guid isPermaLink="false">https://datamozart.substack.com/p/variable-libraries-in-microsoft-fabric</guid><dc:creator><![CDATA[Nikola Ilic]]></dc:creator><pubDate>Wed, 26 Aug 2026 10:23:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!re4t!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3145e62-045b-4a38-82bd-dfc664f3106f_1530x700.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!re4t!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3145e62-045b-4a38-82bd-dfc664f3106f_1530x700.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!re4t!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3145e62-045b-4a38-82bd-dfc664f3106f_1530x700.png 424w, /__u/substackcdn.com/image/fetch/$s_!re4t!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3145e62-045b-4a38-82bd-dfc664f3106f_1530x700.png 848w, /__u/substackcdn.com/image/fetch/$s_!re4t!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3145e62-045b-4a38-82bd-dfc664f3106f_1530x700.png 1272w, /__u/substackcdn.com/image/fetch/$s_!re4t!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3145e62-045b-4a38-82bd-dfc664f3106f_1530x700.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!re4t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3145e62-045b-4a38-82bd-dfc664f3106f_1530x700.png" width="1456" height="666" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a3145e62-045b-4a38-82bd-dfc664f3106f_1530x700.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:666,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Featured Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Featured Image" title="Featured Image" srcset="/__u/substackcdn.com/image/fetch/$s_!re4t!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3145e62-045b-4a38-82bd-dfc664f3106f_1530x700.png 424w, /__u/substackcdn.com/image/fetch/$s_!re4t!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3145e62-045b-4a38-82bd-dfc664f3106f_1530x700.png 848w, /__u/substackcdn.com/image/fetch/$s_!re4t!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3145e62-045b-4a38-82bd-dfc664f3106f_1530x700.png 1272w, /__u/substackcdn.com/image/fetch/$s_!re4t!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3145e62-045b-4a38-82bd-dfc664f3106f_1530x700.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Hardcoded values are the &#8220;cockroaches&#8221; of a data platform. You think you&#8217;ve killed them all, and then you promote a pipeline to Prod and one of them again sees the light: a lakehouse GUID you forgot to swap, a connection pointing at the wrong server, a table name that was perfectly fine in Dev and is very much not fine in production.</p><p>And the worst ones don&#8217;t even announce themselves. You won&#8217;t see an error or red banner. Your Test environment all of a sudden starts reading from Prod because one identifier never got changed, and you find out three days later, when someone finally asks why the &#8220;test&#8221; numbers look suspiciously real&#8230;</p><p>I hear you, I hear you: Nikola, that&#8217;s what deployment rules in Fabric Deployment Pipelines are for, isn&#8217;t it? Well, partly. But there&#8217;s a Fabric item built specifically to put an end to this whole genre of pain, and it&#8217;s the <strong>variable library</strong>. This article is the long version: what it is, how it&#8217;s wired together under the hood, who can actually consume it, when you should reach for it, when you absolutely shouldn&#8217;t, how it compares to the other parameterization features in Fabric, and a real telco demo to make it all concrete.</p><h2><em><strong>What is a variable library?</strong></em></h2><p>Think of it like the contacts list on your phone. You don&#8217;t memorize your friend&#8217;s number and retype it every time you call. You save it once under a name, and when their number changes, you update it in one place and never think about it again. This just works for every call and every message.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>A variable library does the same thing for your workspace configuration. It&#8217;s a Fabric item, sitting right there next to your lakehouses and pipelines, that holds a set of named variables and their values. Other items in the same workspace then reference those names instead of carrying the raw values themselves. So when the value changes, you change it ONCE, in the library, and every consumer follows.</p><p>The official framing is that a variable library lets you do two things: customize configuration per release stage, and share configuration across items. Both of those words earn a paragraph.</p><p><em>Customizing per stage</em> means the library can hold a different value for each environment. The source connection in Dev isn&#8217;t the source connection in Prod. The lookback window in a test run might be one day, in production, it might be 30. You set these up once, and Fabric serves the right value depending on where the consuming item runs.</p><p><em>Sharing across items</em> means you define a value once and reuse it everywhere. Imagine you&#8217;ve got five lakehouses in a workspace, each with a shortcut pointing at the same external source. Without a library, changing that source is five edits and a prayer. With one, it&#8217;s a single edit, and all five shortcuts follow along. So, to put it in plain English: the idea is to stop scattering your truth across a dozen items, and let promotion between environments stop being an act of manual courage.</p><h2><em><strong>The anatomy: variables, value sets, and the active set</strong></em></h2><p>To understand the Variable Libraries feature in Fabric, you need to grasp three core parts. Once you get these straight, the rest is detail.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!_cec!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03de5e32-09d6-4be0-b1bc-3a159a7e668b_1024x611.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!_cec!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03de5e32-09d6-4be0-b1bc-3a159a7e668b_1024x611.png 424w, /__u/substackcdn.com/image/fetch/$s_!_cec!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03de5e32-09d6-4be0-b1bc-3a159a7e668b_1024x611.png 848w, /__u/substackcdn.com/image/fetch/$s_!_cec!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03de5e32-09d6-4be0-b1bc-3a159a7e668b_1024x611.png 1272w, /__u/substackcdn.com/image/fetch/$s_!_cec!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03de5e32-09d6-4be0-b1bc-3a159a7e668b_1024x611.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!_cec!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03de5e32-09d6-4be0-b1bc-3a159a7e668b_1024x611.png" width="1024" height="611" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/03de5e32-09d6-4be0-b1bc-3a159a7e668b_1024x611.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:611,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!_cec!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03de5e32-09d6-4be0-b1bc-3a159a7e668b_1024x611.png 424w, /__u/substackcdn.com/image/fetch/$s_!_cec!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03de5e32-09d6-4be0-b1bc-3a159a7e668b_1024x611.png 848w, /__u/substackcdn.com/image/fetch/$s_!_cec!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03de5e32-09d6-4be0-b1bc-3a159a7e668b_1024x611.png 1272w, /__u/substackcdn.com/image/fetch/$s_!_cec!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03de5e32-09d6-4be0-b1bc-3a159a7e668b_1024x611.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3><em><strong>Variables and their types</strong></em></h3><p>A variable is the true atom here. Each one has a name, a type, a default value, and an optional note.</p><p>Fabric splits the types into two camps. The basic ones are exactly what they sound like:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!HE_z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6839c8d-65db-4715-abab-859618870649_1202x466.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!HE_z!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6839c8d-65db-4715-abab-859618870649_1202x466.png 424w, /__u/substackcdn.com/image/fetch/$s_!HE_z!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6839c8d-65db-4715-abab-859618870649_1202x466.png 848w, /__u/substackcdn.com/image/fetch/$s_!HE_z!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6839c8d-65db-4715-abab-859618870649_1202x466.png 1272w, /__u/substackcdn.com/image/fetch/$s_!HE_z!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6839c8d-65db-4715-abab-859618870649_1202x466.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!HE_z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6839c8d-65db-4715-abab-859618870649_1202x466.png" width="1202" height="466" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e6839c8d-65db-4715-abab-859618870649_1202x466.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:466,&quot;width&quot;:1202,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:44308,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/212825052?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6839c8d-65db-4715-abab-859618870649_1202x466.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!HE_z!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6839c8d-65db-4715-abab-859618870649_1202x466.png 424w, /__u/substackcdn.com/image/fetch/$s_!HE_z!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6839c8d-65db-4715-abab-859618870649_1202x466.png 848w, /__u/substackcdn.com/image/fetch/$s_!HE_z!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6839c8d-65db-4715-abab-859618870649_1202x466.png 1272w, /__u/substackcdn.com/image/fetch/$s_!HE_z!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6839c8d-65db-4715-abab-859618870649_1202x466.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Then there are the advanced types, and these are the ones worth caring about, because they understand the Fabric world around them. An <em>Item reference</em> stores a pointer to an existing Fabric item (a lakehouse, a notebook, a pipeline) by holding its workspace ID and item ID. A <em>Connection reference</em> stores the ID of an external data connection, like Snowflake or Azure SQL, so your items can point at external resources without you pasting raw connection strings into a string variable.</p><p>That second one matters more than it looks. Pasting GUIDs and connection strings by hand is the exact behavior that gets you &#8220;Test is reading Prod&#8221;. The advanced types let the library carry that meaning properly.</p><p>One naming caveat to keep in mind: in notebooks, variable and library names are case sensitive, even though the library name is not case sensitive in the portal itself. Another reason to be consistent and to avoid spending an afternoon debugging nothing.</p><h3><em><strong>Value sets</strong></em></h3><p>Here&#8217;s where environment promotion actually happens.</p><p>A value set is a full set of values for every variable in the library. Every library has exactly one <em>default</em> value set with the baseline values. On top of that, you create <em>alternative</em> value sets &#8211; one for Dev, one for Test, one for Prod, or for A/B testing, or for swapping a data source within the same workspace.</p><p>The neat part is the override model. An alternative value set doesn&#8217;t repeat every variable. It stores only those whose values <em>differ</em> from the default. Anything it doesn&#8217;t mention, it inherits. This keeps your value sets lean, and it makes the differences jump off the page. You open the Prod set, you see three overridden variables, and you know instantly that those three are the only things that change in production. Everything else is shared.</p><h3><em><strong>The active value set</strong></em></h3><p>At any moment, in any single workspace, exactly one value set is active. That active set decides which values your consumers receive at runtime.</p><p>You may switch it through the UI or the API. One thing worth mentioning, though: in a deployment pipeline, each stage can have its own active value set. Dev stage runs with the Dev set, Test with Test, Prod with Prod, and the same pipeline artifact resolves the correct values in each stage without you having to touch it.</p><p>There are two rules that might surprise people. There&#8217;s always one, and only one, active value set. And you can&#8217;t delete a value set while it&#8217;s the active one. If you want to delete it, you first need to make another set active, then delete.</p><h2><em><strong>Under the hood: Git and CI/CD</strong></em></h2><p>A variable library is a regular Fabric item, and as such, it plays nicely with Git integration and deployment pipelines, and it can be driven through the Fabric public APIs.</p><p>When you commit a workspace to Git, the library shows up as its own folder. Inside, the structure mirrors the override model: a definition listing every variable with its default values, plus a separate JSON file per alternative value set holding only the overrides. A Prod value set on disk reads something like this:</p><pre><code>{
  &#8220;$schema&#8221;: &#8220;https://developer.microsoft.com/json-schemas/fabric/item/VariablesLibrary/definition/valueSets/1.0.0/schema.json&#8221;,
  &#8220;valueSetName&#8221;: &#8220;Prod VS&#8221;,
  &#8220;overrides&#8221;: [
    { &#8220;name&#8221;: &#8220;Source_Connection&#8221;, &#8220;value&#8221;: &#8220;c0f13027-9bf4-4e8c-8f57-ec5c18c8656b&#8221; },
    { &#8220;name&#8221;: &#8220;Lookback_Days&#8221;, &#8220;value&#8221;: &#8220;30&#8221; }
  ]
}</code></pre><p>Two overrides, and you can read the intent in a matter of seconds. Your config changes become diffable and reviewable, exactly like the rest of your platform should be.</p><p>One subtle detail that may confuse people: which set is active is not stored in these files. The active selection lives as an item state at the workspace level. So deploying or importing the library doesn&#8217;t stomp on whichever set a target workspace already had active. Your Prod workspace stays pointed at Prod even when a fresh deployment rolls in. Which, essentially, is the behavior you want.</p><h2><em><strong>Who can actually consume from the library?</strong></em></h2><p>A library is only as useful as the items that can consume it.</p><p>As of today (June 2026), these items can consume variables from a variable library:</p><ul><li><p>Data pipelines, through library variables referenced as dynamic content</p></li><li><p>Lakehouse shortcuts, parameterizing the target workspace, item, and path (string-type variables only, for now)</p></li><li><p>Notebooks, two ways: the <code>notebookutils</code> library, and the <code>%%configure</code> magic command</p></li><li><p>Dataflow Gen2</p></li><li><p>Copy job</p></li><li><p>User data functions</p></li></ul><p>Look at the shape of that list. It leans hard toward data movement and data engineering: pipelines, dataflows, copy jobs, notebooks, shortcuts. That&#8217;s your first real signal about where variable libraries shine today, and where they don&#8217;t. But, more on that later&#8230;</p><p>And please, as a word of warning, mind the supported items list as it evolves! Microsoft has been widening it steadily since the feature first showed up, and something that&#8217;s missing today may well be supported by the time you read this. Check before you architect around an assumption.</p><h2><em><strong>When variable libraries are the right tool</strong></em><strong>&#8230;</strong></h2><p>Ok, it&#8217;s time to get opinionated, because that&#8217;s why you&#8217;re here and not on the docs page:)</p><p>Reach for a variable library when you&#8217;re promoting the same artifact across Dev, Test, and Prod, and you&#8217;re tired of editing it by hand in each one. The same goes if a single configuration value is consumed by several items and you&#8217;d rather change it in one place than chase it across five, or if the value matters enough that you want it versioned in source control instead of buried in an item&#8217;s properties. Switching connections or data sources by stage is another classic fit, and connection reference variables were practically built for the multi-environment migrations many of us live in. It&#8217;s also the controlled, auditable way to let automation, or a teammate, flip configuration without opening the item and editing it live.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><em><strong>&#8230;and when they&#8217;re not</strong></em></h2><p>This is equally important part, because reaching for the wrong tool is how a platform rots from the inside.</p><p>A variable library is <em><strong>not</strong></em> a vault. Connection reference variables help you avoid embedding raw connection strings, but the variable values themselves aren&#8217;t secret material. Passwords, keys, tokens&#8230; They belong in Azure Key Vault, and proper connection management, and that&#8217;s the end of that conversation.</p><p>It&#8217;s also not the place for values computed during a run. A watermark, a current timestamp, a row count from the previous activity, that&#8217;s what a pipeline&#8217;s own variables and expressions handle. The library holds configuration, not runtime state. Going back to our contacts-list analogy: the library is the saved contact, not the live phone call.</p><p>And it does nothing for items that can&#8217;t consume it yet. If your target isn&#8217;t on the supported list, a library buys you nothing there. One more: with a hard ceiling of one active set per workspace, this is a stage-based configuration engine, not a per-user or multi-tenant fan-out machine.</p><h2><em><strong>Head-to-head: the variable library versus its neighbors</strong></em></h2><p>Fabric has several ways to avoid hardcoding things, and they overlap enough to confuse many of the practitioners. So, let&#8217;s try to put these capabilities heead-to head in the table below:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!1CU8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7b21a00-d9b7-4fc7-b278-502429594fc4_1187x698.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!1CU8!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7b21a00-d9b7-4fc7-b278-502429594fc4_1187x698.png 424w, /__u/substackcdn.com/image/fetch/$s_!1CU8!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7b21a00-d9b7-4fc7-b278-502429594fc4_1187x698.png 848w, /__u/substackcdn.com/image/fetch/$s_!1CU8!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7b21a00-d9b7-4fc7-b278-502429594fc4_1187x698.png 1272w, /__u/substackcdn.com/image/fetch/$s_!1CU8!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7b21a00-d9b7-4fc7-b278-502429594fc4_1187x698.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!1CU8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7b21a00-d9b7-4fc7-b278-502429594fc4_1187x698.png" width="1187" height="698" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e7b21a00-d9b7-4fc7-b278-502429594fc4_1187x698.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:698,&quot;width&quot;:1187,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:135314,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/212825052?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7b21a00-d9b7-4fc7-b278-502429594fc4_1187x698.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!1CU8!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7b21a00-d9b7-4fc7-b278-502429594fc4_1187x698.png 424w, /__u/substackcdn.com/image/fetch/$s_!1CU8!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7b21a00-d9b7-4fc7-b278-502429594fc4_1187x698.png 848w, /__u/substackcdn.com/image/fetch/$s_!1CU8!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7b21a00-d9b7-4fc7-b278-502429594fc4_1187x698.png 1272w, /__u/substackcdn.com/image/fetch/$s_!1CU8!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7b21a00-d9b7-4fc7-b278-502429594fc4_1187x698.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Deployment pipeline rules and variable libraries are partners far more than rivals, although the distinction might confuse almost everyone at first glance. A deployment rule rewrites a specific value at the moment you click deploy, so it&#8217;s a last-mile override during promotion. The library is a living item that any supported consumer reads at runtime based on the active value set. A clean pattern is to let the library carry the bulk of your stage-aware configuration and keep deployment rules for the narrow cases it can&#8217;t yet cover. If you find yourself maintaining a small forest of deployment rules, that&#8217;s usually a sign that a library wants to absorb most of them.</p><p>A pipeline&#8217;s own parameters and <code>Set variable</code> activities are a different beast, even though both have &#8220;variable&#8221; in the name. They&#8217;re about a single run: inputs passed in, state computed, and changed as the pipeline executes. The library lives <em>above</em> any single run and is shared across items and stages. The rule of thumb: if the value is decided before the run and is the same for every run in that stage, it&#8217;s library material. On the flip side, if it&#8217;s born during the run, it&#8217;s pipeline-variable material.</p><p>Semantic model parameters sit one layer down, scoped tightly to a single model or report, driving its data source and query behavior. They&#8217;re the right tool inside the BI layer, and as of today, a variable library doesn&#8217;t parameterize semantic models the way it does pipelines and notebooks. So these two rarely compete. You&#8217;ll often use both, one per layer.</p><p>Spark environments are about compute, not business config: which libraries are installed, Spark settings, the default lakehouse for a session, etc. The library is about which source, which table, which window, which toggle. They meet in exactly one place &#8211; <code>%%configure</code> can pull a library variable to set a notebook&#8217;s default lakehouse, but their jobs stay distinct. Don&#8217;t stuff compute settings into a library, and don&#8217;t try to express environment-specific business config purely through Spark environments.</p><h2><em><strong>A fresh arrival: schedule parameters</strong></em></h2><p>This feature is worth a short detour, because it shows where this whole thing is heading. Fabric Data Factory now lets you pass parameter values straight into pipelines through scheduled triggers. Instead of hardcoding values in pipeline logic, or leaning on a <code>Set variable</code> plus <code>utcNow()</code> workaround, you define the parameters once in the pipeline and supply the values at each scheduled execution. Different config for the morning run than the end-of-day batch? Set up two schedules and pass different values to each.</p><p>You can supply those values in two ways: a direct value typed into the schedule, or a variable library reference that pulls a centralized value, which is the cleaner option for environment promotion.</p><p>However, there&#8217;s one caveat here to be aware of. The parameter names in your schedule must match the parameter names in your pipeline exactly. If you get them wrong, Fabric ignores the values at runtime with no error at all&#8230; so write the names down and check them twice. It works well alongside variable libraries, and it closes a gap that scheduled runs have had for a while.</p><h2><em><strong>A real-life demo: One pipeline, three countries, three stages</strong></em></h2><p>Ok, enough theory, let&#8217;s now examine the kind of scenario that pulls everything we covered so far together, based on the world of multi-country telco platforms &#8211; a world I spend a fair bit of my time in.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!AldT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d88517d-0111-4ef3-84eb-98ffa3c3954f_1024x631.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!AldT!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d88517d-0111-4ef3-84eb-98ffa3c3954f_1024x631.png 424w, /__u/substackcdn.com/image/fetch/$s_!AldT!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d88517d-0111-4ef3-84eb-98ffa3c3954f_1024x631.png 848w, /__u/substackcdn.com/image/fetch/$s_!AldT!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d88517d-0111-4ef3-84eb-98ffa3c3954f_1024x631.png 1272w, /__u/substackcdn.com/image/fetch/$s_!AldT!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d88517d-0111-4ef3-84eb-98ffa3c3954f_1024x631.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!AldT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d88517d-0111-4ef3-84eb-98ffa3c3954f_1024x631.png" width="1024" height="631" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7d88517d-0111-4ef3-84eb-98ffa3c3954f_1024x631.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:631,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!AldT!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d88517d-0111-4ef3-84eb-98ffa3c3954f_1024x631.png 424w, /__u/substackcdn.com/image/fetch/$s_!AldT!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d88517d-0111-4ef3-84eb-98ffa3c3954f_1024x631.png 848w, /__u/substackcdn.com/image/fetch/$s_!AldT!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d88517d-0111-4ef3-84eb-98ffa3c3954f_1024x631.png 1272w, /__u/substackcdn.com/image/fetch/$s_!AldT!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d88517d-0111-4ef3-84eb-98ffa3c3954f_1024x631.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Let&#8217;s imagine a telecom group, call it Helios Telecom, running in three markets. Every night, a single ingestion pipeline pulls subscriber usage data from an operational source and lands it in a lakehouse for downstream analytics. That same pipeline has to run in Dev, Test, and Prod, and in each stage, several things must change. The source connection differs from one environment to the next, along with the destination lakehouse, the source table name, the lookback window in days, and a data-quality gate that&#8217;s off while developing and on in production. Five different things, three environments. That&#8217;s fifteen chances to mess up a value by hand. Let&#8217;s use Variable libraries to take it to zero.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>First, in the Fabric workspace, create a new item and pick <strong>Variable library</strong>. Name it <code>Helios_Ingest_Config</code>.</p><p>Next, define six variables, choosing types on purpose instead of dumping everything into strings. The connection and the lakehouse are referenced by their GUIDs, so they&#8217;re Guid variables, not the advanced reference types. You can pull the connection ID from the Manage connections and gateways. Open the connection settings and grab the object ID:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!EoA6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b5393dd-77ff-4c19-8209-6e7e7c8dc232_952x675.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!EoA6!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b5393dd-77ff-4c19-8209-6e7e7c8dc232_952x675.png 424w, /__u/substackcdn.com/image/fetch/$s_!EoA6!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b5393dd-77ff-4c19-8209-6e7e7c8dc232_952x675.png 848w, /__u/substackcdn.com/image/fetch/$s_!EoA6!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b5393dd-77ff-4c19-8209-6e7e7c8dc232_952x675.png 1272w, /__u/substackcdn.com/image/fetch/$s_!EoA6!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b5393dd-77ff-4c19-8209-6e7e7c8dc232_952x675.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!EoA6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b5393dd-77ff-4c19-8209-6e7e7c8dc232_952x675.png" width="952" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0b5393dd-77ff-4c19-8209-6e7e7c8dc232_952x675.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:675,&quot;width&quot;:952,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!EoA6!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b5393dd-77ff-4c19-8209-6e7e7c8dc232_952x675.png 424w, /__u/substackcdn.com/image/fetch/$s_!EoA6!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b5393dd-77ff-4c19-8209-6e7e7c8dc232_952x675.png 848w, /__u/substackcdn.com/image/fetch/$s_!EoA6!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b5393dd-77ff-4c19-8209-6e7e7c8dc232_952x675.png 1272w, /__u/substackcdn.com/image/fetch/$s_!EoA6!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b5393dd-77ff-4c19-8209-6e7e7c8dc232_952x675.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!62qT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2fb9c66-cb54-419f-9f4a-29d380acba15_1176x502.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!62qT!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2fb9c66-cb54-419f-9f4a-29d380acba15_1176x502.png 424w, /__u/substackcdn.com/image/fetch/$s_!62qT!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2fb9c66-cb54-419f-9f4a-29d380acba15_1176x502.png 848w, /__u/substackcdn.com/image/fetch/$s_!62qT!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2fb9c66-cb54-419f-9f4a-29d380acba15_1176x502.png 1272w, /__u/substackcdn.com/image/fetch/$s_!62qT!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2fb9c66-cb54-419f-9f4a-29d380acba15_1176x502.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!62qT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2fb9c66-cb54-419f-9f4a-29d380acba15_1176x502.png" width="1176" height="502" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f2fb9c66-cb54-419f-9f4a-29d380acba15_1176x502.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:502,&quot;width&quot;:1176,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:65016,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/212825052?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2fb9c66-cb54-419f-9f4a-29d380acba15_1176x502.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!62qT!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2fb9c66-cb54-419f-9f4a-29d380acba15_1176x502.png 424w, /__u/substackcdn.com/image/fetch/$s_!62qT!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2fb9c66-cb54-419f-9f4a-29d380acba15_1176x502.png 848w, /__u/substackcdn.com/image/fetch/$s_!62qT!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2fb9c66-cb54-419f-9f4a-29d380acba15_1176x502.png 1272w, /__u/substackcdn.com/image/fetch/$s_!62qT!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2fb9c66-cb54-419f-9f4a-29d380acba15_1176x502.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>Then build the value sets. The default set is your Dev config. Add two alternatives, </span><code>Test VS</code><span> and </span><code>Prod VS</code><span>, overriding only what actually changes:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!QCU6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd3bb514-4a48-44fd-b44f-8d24f690ce95_1195x482.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!QCU6!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd3bb514-4a48-44fd-b44f-8d24f690ce95_1195x482.png 424w, /__u/substackcdn.com/image/fetch/$s_!QCU6!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd3bb514-4a48-44fd-b44f-8d24f690ce95_1195x482.png 848w, /__u/substackcdn.com/image/fetch/$s_!QCU6!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd3bb514-4a48-44fd-b44f-8d24f690ce95_1195x482.png 1272w, /__u/substackcdn.com/image/fetch/$s_!QCU6!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd3bb514-4a48-44fd-b44f-8d24f690ce95_1195x482.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!QCU6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd3bb514-4a48-44fd-b44f-8d24f690ce95_1195x482.png" width="1195" height="482" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bd3bb514-4a48-44fd-b44f-8d24f690ce95_1195x482.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:482,&quot;width&quot;:1195,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:46357,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/212825052?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd3bb514-4a48-44fd-b44f-8d24f690ce95_1195x482.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!QCU6!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd3bb514-4a48-44fd-b44f-8d24f690ce95_1195x482.png 424w, /__u/substackcdn.com/image/fetch/$s_!QCU6!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd3bb514-4a48-44fd-b44f-8d24f690ce95_1195x482.png 848w, /__u/substackcdn.com/image/fetch/$s_!QCU6!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd3bb514-4a48-44fd-b44f-8d24f690ce95_1195x482.png 1272w, /__u/substackcdn.com/image/fetch/$s_!QCU6!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd3bb514-4a48-44fd-b44f-8d24f690ce95_1195x482.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!vYbP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd9b33de-c724-4e5f-8f09-7be4a629dbf1_1024x423.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!vYbP!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd9b33de-c724-4e5f-8f09-7be4a629dbf1_1024x423.png 424w, /__u/substackcdn.com/image/fetch/$s_!vYbP!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd9b33de-c724-4e5f-8f09-7be4a629dbf1_1024x423.png 848w, /__u/substackcdn.com/image/fetch/$s_!vYbP!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd9b33de-c724-4e5f-8f09-7be4a629dbf1_1024x423.png 1272w, /__u/substackcdn.com/image/fetch/$s_!vYbP!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd9b33de-c724-4e5f-8f09-7be4a629dbf1_1024x423.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!vYbP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd9b33de-c724-4e5f-8f09-7be4a629dbf1_1024x423.png" width="1024" height="423" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fd9b33de-c724-4e5f-8f09-7be4a629dbf1_1024x423.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:423,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!vYbP!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd9b33de-c724-4e5f-8f09-7be4a629dbf1_1024x423.png 424w, /__u/substackcdn.com/image/fetch/$s_!vYbP!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd9b33de-c724-4e5f-8f09-7be4a629dbf1_1024x423.png 848w, /__u/substackcdn.com/image/fetch/$s_!vYbP!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd9b33de-c724-4e5f-8f09-7be4a629dbf1_1024x423.png 1272w, /__u/substackcdn.com/image/fetch/$s_!vYbP!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd9b33de-c724-4e5f-8f09-7be4a629dbf1_1024x423.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Notice how Batch_Wait_Seconds is identical everywhere? In Test and Prod, it simply inherits the default and never appears in those override files at all. And <code>Source_Table</code> is shared between Test and Prod but different in Dev. Each value set tells you only what&#8217;s special about it. Nothing more.</p><p>Now consume the variables in the pipeline. Drop a Copy data activity on the canvas. On the pipeline canvas, look at the bottom properties panel where the <strong>Parameters</strong> and <strong>Variables</strong> tabs live, and select the <strong>Library variables</strong> tab. Click <strong>+ New</strong>. In the pop-up, choose your variable library, then pick the <code>Source_Connection</code>_Id variable.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!pfrR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37751be7-ebad-46b1-9157-bbfaedcdcf06_1024x512.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!pfrR!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37751be7-ebad-46b1-9157-bbfaedcdcf06_1024x512.png 424w, /__u/substackcdn.com/image/fetch/$s_!pfrR!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37751be7-ebad-46b1-9157-bbfaedcdcf06_1024x512.png 848w, /__u/substackcdn.com/image/fetch/$s_!pfrR!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37751be7-ebad-46b1-9157-bbfaedcdcf06_1024x512.png 1272w, /__u/substackcdn.com/image/fetch/$s_!pfrR!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37751be7-ebad-46b1-9157-bbfaedcdcf06_1024x512.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!pfrR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37751be7-ebad-46b1-9157-bbfaedcdcf06_1024x512.png" width="1024" height="512" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/37751be7-ebad-46b1-9157-bbfaedcdcf06_1024x512.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!pfrR!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37751be7-ebad-46b1-9157-bbfaedcdcf06_1024x512.png 424w, /__u/substackcdn.com/image/fetch/$s_!pfrR!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37751be7-ebad-46b1-9157-bbfaedcdcf06_1024x512.png 848w, /__u/substackcdn.com/image/fetch/$s_!pfrR!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37751be7-ebad-46b1-9157-bbfaedcdcf06_1024x512.png 1272w, /__u/substackcdn.com/image/fetch/$s_!pfrR!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37751be7-ebad-46b1-9157-bbfaedcdcf06_1024x512.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>You&#8217;ll assign it a reference name here, and that reference name is what the expression uses. Now go back to the Copy data activity, Source &gt; Connection &gt; </span><strong>Add dynamic content</strong><span>. Don&#8217;t type the expression. Instead, select the three dots next to Functions and choose Library variables, then select your reference.</span></p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!vMnn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bb3330f-7c90-4071-81cd-69c2df3f8a42_1024x582.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!vMnn!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bb3330f-7c90-4071-81cd-69c2df3f8a42_1024x582.png 424w, /__u/substackcdn.com/image/fetch/$s_!vMnn!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bb3330f-7c90-4071-81cd-69c2df3f8a42_1024x582.png 848w, /__u/substackcdn.com/image/fetch/$s_!vMnn!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bb3330f-7c90-4071-81cd-69c2df3f8a42_1024x582.png 1272w, /__u/substackcdn.com/image/fetch/$s_!vMnn!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bb3330f-7c90-4071-81cd-69c2df3f8a42_1024x582.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!vMnn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bb3330f-7c90-4071-81cd-69c2df3f8a42_1024x582.png" width="1024" height="582" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2bb3330f-7c90-4071-81cd-69c2df3f8a42_1024x582.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:582,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!vMnn!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bb3330f-7c90-4071-81cd-69c2df3f8a42_1024x582.png 424w, /__u/substackcdn.com/image/fetch/$s_!vMnn!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bb3330f-7c90-4071-81cd-69c2df3f8a42_1024x582.png 848w, /__u/substackcdn.com/image/fetch/$s_!vMnn!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bb3330f-7c90-4071-81cd-69c2df3f8a42_1024x582.png 1272w, /__u/substackcdn.com/image/fetch/$s_!vMnn!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bb3330f-7c90-4071-81cd-69c2df3f8a42_1024x582.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Fabric inserts <code>@pipeline().libraryVariables.Source_Connection</code> for you.</p><p>Then, for the source table, choose Enter manually, click on the Table name, and then select Add dynamic content:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!lOpx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bc50f9-f6d5-431b-8f28-2e84521fe676_1024x475.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!lOpx!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bc50f9-f6d5-431b-8f28-2e84521fe676_1024x475.png 424w, /__u/substackcdn.com/image/fetch/$s_!lOpx!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bc50f9-f6d5-431b-8f28-2e84521fe676_1024x475.png 848w, /__u/substackcdn.com/image/fetch/$s_!lOpx!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bc50f9-f6d5-431b-8f28-2e84521fe676_1024x475.png 1272w, /__u/substackcdn.com/image/fetch/$s_!lOpx!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bc50f9-f6d5-431b-8f28-2e84521fe676_1024x475.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!lOpx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bc50f9-f6d5-431b-8f28-2e84521fe676_1024x475.png" width="1024" height="475" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/39bc50f9-f6d5-431b-8f28-2e84521fe676_1024x475.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:475,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!lOpx!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bc50f9-f6d5-431b-8f28-2e84521fe676_1024x475.png 424w, /__u/substackcdn.com/image/fetch/$s_!lOpx!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bc50f9-f6d5-431b-8f28-2e84521fe676_1024x475.png 848w, /__u/substackcdn.com/image/fetch/$s_!lOpx!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bc50f9-f6d5-431b-8f28-2e84521fe676_1024x475.png 1272w, /__u/substackcdn.com/image/fetch/$s_!lOpx!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bc50f9-f6d5-431b-8f28-2e84521fe676_1024x475.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Do the same for the destination.</p><p>The pipeline now holds zero hardcoded environment values. It asks the library, and the library answers based on whichever set is active.</p><p>A downstream notebook can read the very same library, with no code changes between environments:</p><pre><code>vl = notebookutils.variableLibrary.getLibrary(&#8221;Helios_Ingest_Config&#8221;)

run_dq   = vl.Enable_DQ_Gate
lookback = vl.Lookback_Days
table    = vl.Source_Table

if run_dq:
    print(f&#8221;Running DQ gate on {table} over {lookback} days&#8221;)
else:
    print(&#8221;DQ gate disabled for this environment&#8221;)</code></pre><p>Let me share three things from experience here. The <code>notebookutils.variableLibrary</code> API reaches libraries in the <em>same</em> workspace only, it always reads the active value set, and the library is read-only from the notebook &#8211; you change values in the UI or API, never from code. (Service principals aren&#8217;t supported for these notebook utilities yet, so keep that out of the scope of an SPN-driven run.)</p><p>If instead you want a notebook to bind its default lakehouse per environment, that&#8217;s the <code>%%configure</code> route, pulling the variable by reference path:</p><pre><code>%%configure
{
  &#8220;defaultLakehouse&#8221;: {
    &#8220;name&#8221;: { &#8220;variableName&#8221;: &#8220;$(/**/Helios_Ingest_Config/Destination_Lakehouse_Name)&#8221; },
    &#8220;id&#8221;:   { &#8220;variableName&#8221;: &#8220;$(/**/Helios_Ingest_Config/Destination_Lakehouse_Id)&#8221; }
  }
}</code></pre><p>Last, wire it into a deployment pipeline with Dev, Test, and Prod stages, assign the workspaces, and for each stage, set the matching value set as active: Dev uses the default, Test uses <code>Test VS</code>, Prod uses <code>Prod VS</code>. This is a one-time setup.</p><p>First, while in the Test stage, open the Variable library item:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!7tZL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcad181bc-b2b4-48a8-84ba-1602e3365238_1024x532.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!7tZL!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcad181bc-b2b4-48a8-84ba-1602e3365238_1024x532.png 424w, /__u/substackcdn.com/image/fetch/$s_!7tZL!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcad181bc-b2b4-48a8-84ba-1602e3365238_1024x532.png 848w, /__u/substackcdn.com/image/fetch/$s_!7tZL!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcad181bc-b2b4-48a8-84ba-1602e3365238_1024x532.png 1272w, /__u/substackcdn.com/image/fetch/$s_!7tZL!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcad181bc-b2b4-48a8-84ba-1602e3365238_1024x532.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!7tZL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcad181bc-b2b4-48a8-84ba-1602e3365238_1024x532.png" width="1024" height="532" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cad181bc-b2b4-48a8-84ba-1602e3365238_1024x532.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:532,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!7tZL!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcad181bc-b2b4-48a8-84ba-1602e3365238_1024x532.png 424w, /__u/substackcdn.com/image/fetch/$s_!7tZL!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcad181bc-b2b4-48a8-84ba-1602e3365238_1024x532.png 848w, /__u/substackcdn.com/image/fetch/$s_!7tZL!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcad181bc-b2b4-48a8-84ba-1602e3365238_1024x532.png 1272w, /__u/substackcdn.com/image/fetch/$s_!7tZL!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcad181bc-b2b4-48a8-84ba-1602e3365238_1024x532.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Then, click on three dots and set the Test VS value as active:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!Mnqc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf73f25d-f74b-42b3-94ff-0daef1c51c6b_1024x467.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!Mnqc!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf73f25d-f74b-42b3-94ff-0daef1c51c6b_1024x467.png 424w, /__u/substackcdn.com/image/fetch/$s_!Mnqc!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf73f25d-f74b-42b3-94ff-0daef1c51c6b_1024x467.png 848w, /__u/substackcdn.com/image/fetch/$s_!Mnqc!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf73f25d-f74b-42b3-94ff-0daef1c51c6b_1024x467.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Mnqc!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf73f25d-f74b-42b3-94ff-0daef1c51c6b_1024x467.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!Mnqc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf73f25d-f74b-42b3-94ff-0daef1c51c6b_1024x467.png" width="1024" height="467" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/af73f25d-f74b-42b3-94ff-0daef1c51c6b_1024x467.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:467,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!Mnqc!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf73f25d-f74b-42b3-94ff-0daef1c51c6b_1024x467.png 424w, /__u/substackcdn.com/image/fetch/$s_!Mnqc!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf73f25d-f74b-42b3-94ff-0daef1c51c6b_1024x467.png 848w, /__u/substackcdn.com/image/fetch/$s_!Mnqc!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf73f25d-f74b-42b3-94ff-0daef1c51c6b_1024x467.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Mnqc!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf73f25d-f74b-42b3-94ff-0daef1c51c6b_1024x467.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>And, that&#8217;s it. From here on, promotion is straightforward. You deploy the same pipeline and notebook up the stages, and each environment resolves the correct source, lakehouse, window, and DQ toggle by itself. And straightforward, in release management, is the highest compliment there is:)</p><h2><em><strong>Limits, gotchas, and the permissions elephant!</strong></em></h2><p>Before you rebuild your whole platform on this, a few words about smaller warnings and one bigger warning that earns its own heading.</p><p>The size limits: up to 1,000 variables and up to 1,000 value sets per library, as long as the total cells across alternative sets stay under 10,000 and the item stays under 1 MB. Notes and value-set descriptions cap at 2,048 characters each. Value sets also appear in creation order, and you can&#8217;t reorder them in the UI. To change the order, you need to edit the JSON in Git directly.</p><p>And, now the elephant. Because a variable library is its own Fabric item, it carries its own permission set, and that set can differ from the permissions on the items that consume it.</p><p>Wait, what?! A user could have write access to the library while having no access at all to the pipelines and notebooks that depend on it. Let that one sink. Someone who can edit a value can change the behavior of items they can&#8217;t even see. Flip a connection reference, and a consuming pipeline suddenly starts reading from somewhere else. That&#8217;s a real attack vector, whether the change is malicious or just a Friday-afternoon mistake.</p><p>So treat write access to variable libraries as the privileged thing it is. Lock it down to trusted users and service identities, audit those assignments on a schedule, and let your items reference only libraries you&#8217;ve explicitly decided to trust. Centralizing your configuration is powerful precisely because everything leans on it, which is the same reason a careless permission grant here does so much damage.</p><h2><em><strong>A few habits worth keeping</strong></em></h2><ul><li><p>Pick types deliberately &#8211; connection reference and item reference exist to save you from pasting GUIDs by hand.</p></li><li><p>Keep libraries focused and name them like a human will read them at midnight (<code>Helios_Ingest_Config</code>, not <code>vars2_final_REAL</code>).</p></li><li><p>Use the note field &#8211; context is free.</p></li><li><p>Override only what differs, so each set reads as a clear statement of what makes that stage special.</p></li><li><p>Put the library in Git from day one &#8211; it&#8217;s a de-facto standard for a reason.</p></li><li><p>Guard those write permissions as they matter, because they do.</p></li></ul><h2><em><strong>Wrapping up</strong></em></h2><p>The variable library looks modest and turns out to be foundational. It takes the most error-prone, least glamorous job on a data platform &#8211; moving the same thing across environments without breaking it &#8211; and trades a recurring evening of GUID-hunting for a one-time setup. For centralized, stage-aware, source-controlled configuration across your engineering layer, it&#8217;s the tool Fabric built for exactly this job. So, go centralize your truth, and let &#8220;Test is reading Prod&#8221; become a story you only tell at conferences.</p><p>Thanks for reading!</p><p>Thanks to Claude for creating these nice-looking visuals.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[A whirlwind tour on User-context-aware calculated columns in Power BI!]]></title><description><![CDATA[Bye, bye translation headaches! With the new User-context-aware calculated columns, we can tackle certain challenges more convenient than ever]]></description><link>https://datamozart.substack.com/p/a-whirlwind-tour-on-user-context</link><guid isPermaLink="false">https://datamozart.substack.com/p/a-whirlwind-tour-on-user-context</guid><dc:creator><![CDATA[Nikola Ilic]]></dc:creator><pubDate>Sat, 04 Jul 2026 18:33:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!EMCz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F731ed126-fad2-4b3c-9f15-253cac89b015_1530x700.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!EMCz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F731ed126-fad2-4b3c-9f15-253cac89b015_1530x700.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!EMCz!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F731ed126-fad2-4b3c-9f15-253cac89b015_1530x700.png 424w, /__u/substackcdn.com/image/fetch/$s_!EMCz!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F731ed126-fad2-4b3c-9f15-253cac89b015_1530x700.png 848w, /__u/substackcdn.com/image/fetch/$s_!EMCz!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F731ed126-fad2-4b3c-9f15-253cac89b015_1530x700.png 1272w, /__u/substackcdn.com/image/fetch/$s_!EMCz!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F731ed126-fad2-4b3c-9f15-253cac89b015_1530x700.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!EMCz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F731ed126-fad2-4b3c-9f15-253cac89b015_1530x700.png" width="1456" height="666" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/731ed126-fad2-4b3c-9f15-253cac89b015_1530x700.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:666,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Featured Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Featured Image" title="Featured Image" srcset="/__u/substackcdn.com/image/fetch/$s_!EMCz!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F731ed126-fad2-4b3c-9f15-253cac89b015_1530x700.png 424w, /__u/substackcdn.com/image/fetch/$s_!EMCz!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F731ed126-fad2-4b3c-9f15-253cac89b015_1530x700.png 848w, /__u/substackcdn.com/image/fetch/$s_!EMCz!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F731ed126-fad2-4b3c-9f15-253cac89b015_1530x700.png 1272w, /__u/substackcdn.com/image/fetch/$s_!EMCz!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F731ed126-fad2-4b3c-9f15-253cac89b015_1530x700.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A few months ago, I was sitting in a session at FabCon Atlanta. It was an amazing session about Direct Lake semantic models and various optimization tips and tricks, delivered by true masters, Christian Wade and Phil Seamark (both from Microsoft). Among many fantastic topics, the one that immediately caught my attention was the new feature that Christian Wade introduced: User-context-aware calculated columns.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Although we all know that DAX calculated columns are the &#8220;last island&#8221; in what are considered recommended data modeling practices (&#8220;Roche&#8217;s Maxim&#8221;, etc.), this one still stood out for me as something that might be super useful in certain scenarios.</p><p>I was so excited that I immediately shared the news on <a href="https://www.linkedin.com/feed/update/urn:li:activity:7440768892182061056/?commentUrn=urn%3Ali%3Acomment%3A(ugcPost%3A7440768891124936704%2C7452251493572702210)&amp;dashCommentUrn=urn%3Ali%3Afsd_comment%3A(7452251493572702210%2Curn%3Ali%3AugcPost%3A7440768891124936704)">social media</a>. And, reactions on that post confirmed that Power BI practitioners were quite confused about this feature (so was I).</p><p>To be honest, I never heard of a concept called: User context. We all know about the <a href="https://www.sqlbi.com/articles/row-context-and-filter-context-in-dax/">row context and the filter context in DAX</a>, but what on Earth is now the user context?!</p><p>In simple words, <em><strong>it allows you to capture the user&#8217;s locale settings (like culture, for example) and bake this information into your semantic model</strong></em>. It relies on the USERCULTURE() DAX function. If you think of the USERCULTURE as one of the new, fancy DAX functions, you can&#8217;t be more wrong! In fact, this function has been here for a while, but up until now, we were able to use it only in DAX measures to dynamically calculate measure results based on the user&#8217;s locale settings (language code-country code, such as &#8220;en-US&#8221;, &#8220;de-DE&#8221;, &#8220;it-IT&#8221;, and so on).</p><p>You can read more about the USERCULTURE() function in <a href="https://learn.microsoft.com/en-us/dax/userculture-function-dax">Microsoft&#8217;s official documentation</a>.</p><p>One of the most common examples was to leverage this function to dynamically translate the visual titles, based on the user locale settings. Here is the basic example:</p><pre><code>SWITCH (
  USERCULTURE(),
  &#8220;de-DE&#8221;, &#8220;Umsatz nach Produkt&#8221;,
  &#8220;fr-FR&#8221;, &#8220;Ventes par produit&#8221;,
  &#8220;Sales by product&#8221;
)</code></pre><p>In the code above, the measure obtains the user culture settings (let&#8217;s say, it&#8217;s German &#8220;de-DE&#8221;), and then returns the &#8220;Umsatz nach Produkt&#8221; string. This happens dynamically during the measure evaluation.</p><p>There were many creative implementations of this pattern, like <a href="https://blog.gbrueckl.at/2022/06/using-power-bi-field-parameters-to-translate-data-and-values/">this one from Gerhard Br&#252;ckl</a>, where he explains how to extend this approach and make it even more robust in synergy with the <a href="https://data-mozart.com/dynamic-filtering-with-field-parameters-in-power-bi/">Field parameters</a> feature.</p><p><strong><span>Word of warning: </span></strong>The USERCULTURE function behaves differently between measures and calculated columns. As mentioned on the <a href="https://learn.microsoft.com/en-us/power-bi/create-reports/desktop-conditional-format-visual-titles#create-a-field-for-your-title">Microsoft docs page</a>, the <code>USERCULTURE()</code> function only returns <em>the current user&#8217;s culture</em> when called inside a measure. If you use <code>USERCULTURE()</code> in a calculated table or calculated column, it returns the culture name of the semantic model&#8217;s default language instead, because those expressions are evaluated at model load time.</p><p>Now, to the new feature:) Which is, by the way, still in preview at the moment of writing, so you first need to enable it in the Preview features tab in the Options and settings.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!4Dsz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74eff2b0-2f2f-4317-a6b5-1944f9e9a35a_1024x524.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!4Dsz!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74eff2b0-2f2f-4317-a6b5-1944f9e9a35a_1024x524.png 424w, /__u/substackcdn.com/image/fetch/$s_!4Dsz!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74eff2b0-2f2f-4317-a6b5-1944f9e9a35a_1024x524.png 848w, /__u/substackcdn.com/image/fetch/$s_!4Dsz!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74eff2b0-2f2f-4317-a6b5-1944f9e9a35a_1024x524.png 1272w, /__u/substackcdn.com/image/fetch/$s_!4Dsz!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74eff2b0-2f2f-4317-a6b5-1944f9e9a35a_1024x524.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!4Dsz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74eff2b0-2f2f-4317-a6b5-1944f9e9a35a_1024x524.png" width="1024" height="524" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/74eff2b0-2f2f-4317-a6b5-1944f9e9a35a_1024x524.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:524,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!4Dsz!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74eff2b0-2f2f-4317-a6b5-1944f9e9a35a_1024x524.png 424w, /__u/substackcdn.com/image/fetch/$s_!4Dsz!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74eff2b0-2f2f-4317-a6b5-1944f9e9a35a_1024x524.png 848w, /__u/substackcdn.com/image/fetch/$s_!4Dsz!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74eff2b0-2f2f-4317-a6b5-1944f9e9a35a_1024x524.png 1272w, /__u/substackcdn.com/image/fetch/$s_!4Dsz!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74eff2b0-2f2f-4317-a6b5-1944f9e9a35a_1024x524.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Once I open Power BI Desktop, I&#8217;ll connect to the local Excel file that consists of two sheets:</p><ol><li><p>Months &#8211; this is the sheet with month names in various languages (English, German, Spanish, etc.)</p></li><li><p>Sales &#8211; a typical fact table that contains data about sales</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!sYkY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc79c25cb-9655-4c0a-b287-3496bdd1fb64_646x595.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!sYkY!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc79c25cb-9655-4c0a-b287-3496bdd1fb64_646x595.png 424w, /__u/substackcdn.com/image/fetch/$s_!sYkY!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc79c25cb-9655-4c0a-b287-3496bdd1fb64_646x595.png 848w, /__u/substackcdn.com/image/fetch/$s_!sYkY!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc79c25cb-9655-4c0a-b287-3496bdd1fb64_646x595.png 1272w, /__u/substackcdn.com/image/fetch/$s_!sYkY!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc79c25cb-9655-4c0a-b287-3496bdd1fb64_646x595.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!sYkY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc79c25cb-9655-4c0a-b287-3496bdd1fb64_646x595.png" width="646" height="595" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c79c25cb-9655-4c0a-b287-3496bdd1fb64_646x595.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:595,&quot;width&quot;:646,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!sYkY!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc79c25cb-9655-4c0a-b287-3496bdd1fb64_646x595.png 424w, /__u/substackcdn.com/image/fetch/$s_!sYkY!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc79c25cb-9655-4c0a-b287-3496bdd1fb64_646x595.png 848w, /__u/substackcdn.com/image/fetch/$s_!sYkY!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc79c25cb-9655-4c0a-b287-3496bdd1fb64_646x595.png 1272w, /__u/substackcdn.com/image/fetch/$s_!sYkY!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc79c25cb-9655-4c0a-b287-3496bdd1fb64_646x595.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>As you may tell, I&#8217;m using German locale settings (since I&#8217;m based in Austria). So, the idea is to automatically display month names in German for me, but if my colleague is using, let&#8217;s say, Italian locale settings, their months should be displayed in Italian.</p><p>The first step is to create a new calculated column:</p><p>I&#8217;ll use the following DAX expression:</p><pre><code>Month Name User Culture = 
VAR _UserCulture = USERCULTURE()
RETURN
SWITCH (
    _UserCulture,
    &#8220;en-US&#8221;, Months[English],
    &#8220;fr-FR&#8221;, Months[French],
    &#8220;es-ES&#8221;, Months[Spanish],
    &#8220;de-DE&#8221;, Months[German],
    &#8220;pt-PT&#8221;, Months[Portuguese],
    &#8220;it-IT&#8221;, Months[Italian],
    Months[English] --Default
)</code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!h4Lc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F784efc41-1d09-4237-bb4c-fcf50698cff9_1024x554.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!h4Lc!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F784efc41-1d09-4237-bb4c-fcf50698cff9_1024x554.png 424w, /__u/substackcdn.com/image/fetch/$s_!h4Lc!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F784efc41-1d09-4237-bb4c-fcf50698cff9_1024x554.png 848w, /__u/substackcdn.com/image/fetch/$s_!h4Lc!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F784efc41-1d09-4237-bb4c-fcf50698cff9_1024x554.png 1272w, /__u/substackcdn.com/image/fetch/$s_!h4Lc!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F784efc41-1d09-4237-bb4c-fcf50698cff9_1024x554.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!h4Lc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F784efc41-1d09-4237-bb4c-fcf50698cff9_1024x554.png" width="1024" height="554" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/784efc41-1d09-4237-bb4c-fcf50698cff9_1024x554.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:554,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!h4Lc!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F784efc41-1d09-4237-bb4c-fcf50698cff9_1024x554.png 424w, /__u/substackcdn.com/image/fetch/$s_!h4Lc!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F784efc41-1d09-4237-bb4c-fcf50698cff9_1024x554.png 848w, /__u/substackcdn.com/image/fetch/$s_!h4Lc!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F784efc41-1d09-4237-bb4c-fcf50698cff9_1024x554.png 1272w, /__u/substackcdn.com/image/fetch/$s_!h4Lc!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F784efc41-1d09-4237-bb4c-fcf50698cff9_1024x554.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The key thing for this to work is to switch the context from Standard to User context. Otherwise, the expression will throw an error. This way, Power BI knows that we plan to use this calculated column in a non-standard way.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/p/a-whirlwind-tour-on-user-context?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Head First Data! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/p/a-whirlwind-tour-on-user-context?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/datamozart.substack.com/p/a-whirlwind-tour-on-user-context?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share</span></a></p></div><p>Now, when I start building my visuals on the report canvas, the new column will automatically switch to display month names in German:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!0TFk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce0c9c8d-dbaf-496c-bebb-e77d09355873_1024x440.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!0TFk!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce0c9c8d-dbaf-496c-bebb-e77d09355873_1024x440.png 424w, /__u/substackcdn.com/image/fetch/$s_!0TFk!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce0c9c8d-dbaf-496c-bebb-e77d09355873_1024x440.png 848w, /__u/substackcdn.com/image/fetch/$s_!0TFk!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce0c9c8d-dbaf-496c-bebb-e77d09355873_1024x440.png 1272w, /__u/substackcdn.com/image/fetch/$s_!0TFk!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce0c9c8d-dbaf-496c-bebb-e77d09355873_1024x440.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!0TFk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce0c9c8d-dbaf-496c-bebb-e77d09355873_1024x440.png" width="1024" height="440" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ce0c9c8d-dbaf-496c-bebb-e77d09355873_1024x440.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:440,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!0TFk!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce0c9c8d-dbaf-496c-bebb-e77d09355873_1024x440.png 424w, /__u/substackcdn.com/image/fetch/$s_!0TFk!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce0c9c8d-dbaf-496c-bebb-e77d09355873_1024x440.png 848w, /__u/substackcdn.com/image/fetch/$s_!0TFk!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce0c9c8d-dbaf-496c-bebb-e77d09355873_1024x440.png 1272w, /__u/substackcdn.com/image/fetch/$s_!0TFk!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce0c9c8d-dbaf-496c-bebb-e77d09355873_1024x440.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>But, when my Italian colleague opens the same report, they will see month names displayed in Italian (of course, assuming that their locale settings are Italian:)) &#8211; How cool is that!</p><p>A couple of <a href="https://learn.microsoft.com/en-us/dax/userculture-function-dax#remarks">remarks</a> worth keeping in mind before you go crazy finding more creative ways to implement this feature (especially important to understand the difference between the Import and DirectQuery models&#8217; behavior):</p><ul><li><p>DirectQuery &#8211; the result is determined by the language (locale) specified in Language Settings in the Power BI service. The default in Language Settings specifies locale is determined by the user&#8217;s browser language setting, which means the same calculated table or column can return different results depending on the browser language settings for each user</p></li><li><p>Import mode &#8211; the result is statically determined during refresh and will not change at query time. For managed refreshes, such as scheduled or interactive, the locale is not based on the user&#8217;s browser language setting but instead uses an invariant locale</p></li></ul><p>What are your thoughts about the user context calculated columns? Any practical use cases (aside from translations, which is a big win on its own) you can think of right now? Please let me know in the comments.</p><p>Thanks for reading!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The real risk of AI-native Data Engineering is not bad code. It is plausible data.]]></title><description><![CDATA[Why my new Fabric workshop focuses on validation, not magic.]]></description><link>https://datamozart.substack.com/p/the-real-risk-of-ai-native-data-engineering</link><guid isPermaLink="false">https://datamozart.substack.com/p/the-real-risk-of-ai-native-data-engineering</guid><dc:creator><![CDATA[Nikola Ilic]]></dc:creator><pubDate>Sat, 27 Jun 2026 14:21:42 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!fBxE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2713885-2638-4927-bb88-f32371a775c7_844x460.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!fBxE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2713885-2638-4927-bb88-f32371a775c7_844x460.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!fBxE!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2713885-2638-4927-bb88-f32371a775c7_844x460.png 424w, /__u/substackcdn.com/image/fetch/$s_!fBxE!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2713885-2638-4927-bb88-f32371a775c7_844x460.png 848w, /__u/substackcdn.com/image/fetch/$s_!fBxE!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2713885-2638-4927-bb88-f32371a775c7_844x460.png 1272w, /__u/substackcdn.com/image/fetch/$s_!fBxE!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2713885-2638-4927-bb88-f32371a775c7_844x460.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!fBxE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2713885-2638-4927-bb88-f32371a775c7_844x460.png" width="844" height="460" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e2713885-2638-4927-bb88-f32371a775c7_844x460.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:460,&quot;width&quot;:844,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:778861,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/203837086?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2713885-2638-4927-bb88-f32371a775c7_844x460.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!fBxE!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2713885-2638-4927-bb88-f32371a775c7_844x460.png 424w, /__u/substackcdn.com/image/fetch/$s_!fBxE!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2713885-2638-4927-bb88-f32371a775c7_844x460.png 848w, /__u/substackcdn.com/image/fetch/$s_!fBxE!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2713885-2638-4927-bb88-f32371a775c7_844x460.png 1272w, /__u/substackcdn.com/image/fetch/$s_!fBxE!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2713885-2638-4927-bb88-f32371a775c7_844x460.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>I am launching a new live workshop:</p><p><strong>AI-Native Data Engineering with Microsoft Fabric</strong></p><p>It runs on <strong>September 7, 2026</strong>, live online, from <strong>5pm Central Europe / 11am EDT / 8am PT</strong>.</p><p>You can find the full page here:</p><p><a href="https://courses.data-mozart.com/">https://courses.data-mozart.com/</a></p><p>But before the promotional part, I want to explain why I built it.</p><p>Because I think the conversation around coding agents and data engineering is slightly broken.</p><p>Most demos show the easy part.</p><p>You type a request. The assistant generates a notebook, a pipeline, a SQL query, maybe even deployment commands. Everything looks clean. The code has comments. The folder structure looks professional. The demo data works.</p><p>Then the demo ends.</p><p>Real data engineering starts after that.</p><h2>Data bugs are quiet</h2><p>In application development, many bugs are loud. A page fails to load. A test breaks. A service throws an exception. A user cannot complete a workflow.</p><p>Data bugs are often more polite.</p><p>They produce a table.</p><p>The dashboard refreshes.</p><p>The number looks close enough.</p><p>Nobody notices until the downstream decision has already been made.</p><p>That is why generated data engineering work needs a different level of skepticism. A coding agent can write PySpark that looks perfectly reasonable and still contains a dangerous assumption:</p><ul><li><p>an inner join that silently drops unmatched transactions</p></li><li><p>schema inference where a contract was needed</p></li><li><p>overwrite behavior that should have been append or merge</p></li><li><p>a deduplication rule that keeps the wrong event</p></li><li><p>a one-to-many join that duplicates financial facts</p></li><li><p>a missing-source behavior that reports success instead of stopping</p></li></ul><p>These are not science-fiction problems. They are normal data engineering problems, accelerated by better tooling.</p><p>The risk is not that the assistant is useless.</p><p>The risk is that it is useful enough to create a lot of plausible output quickly.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!-xNJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23793a05-2adc-4c3e-9da3-9f7aa7c4115e_1195x444.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!-xNJ!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23793a05-2adc-4c3e-9da3-9f7aa7c4115e_1195x444.png 424w, /__u/substackcdn.com/image/fetch/$s_!-xNJ!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23793a05-2adc-4c3e-9da3-9f7aa7c4115e_1195x444.png 848w, /__u/substackcdn.com/image/fetch/$s_!-xNJ!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23793a05-2adc-4c3e-9da3-9f7aa7c4115e_1195x444.png 1272w, /__u/substackcdn.com/image/fetch/$s_!-xNJ!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23793a05-2adc-4c3e-9da3-9f7aa7c4115e_1195x444.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!-xNJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23793a05-2adc-4c3e-9da3-9f7aa7c4115e_1195x444.png" width="1195" height="444" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23793a05-2adc-4c3e-9da3-9f7aa7c4115e_1195x444.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:444,&quot;width&quot;:1195,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:830555,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/203837086?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23793a05-2adc-4c3e-9da3-9f7aa7c4115e_1195x444.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!-xNJ!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23793a05-2adc-4c3e-9da3-9f7aa7c4115e_1195x444.png 424w, /__u/substackcdn.com/image/fetch/$s_!-xNJ!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23793a05-2adc-4c3e-9da3-9f7aa7c4115e_1195x444.png 848w, /__u/substackcdn.com/image/fetch/$s_!-xNJ!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23793a05-2adc-4c3e-9da3-9f7aa7c4115e_1195x444.png 1272w, /__u/substackcdn.com/image/fetch/$s_!-xNJ!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23793a05-2adc-4c3e-9da3-9f7aa7c4115e_1195x444.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>The new skill is not prompt theater</h2><p>I don&#8217;t think the serious skill here is &#8220;prompt engineering&#8221; in the shallow sense.</p><p>The deeper skill is engineering direction:</p><ul><li><p>specifying what should be built</p></li><li><p>giving the agent bounded context</p></li><li><p>defining what it may and may not touch</p></li><li><p>making it stop at review checkpoints</p></li><li><p>reading generated code critically</p></li><li><p>validating behavior with evidence</p></li><li><p>deciding what is safe to automate and what needs human approval</p></li></ul><p>That is the muscle I want to practice in this workshop.</p><p>Not &#8220;look, the model wrote a notebook.&#8221;</p><p>More like:</p><p>&#8220;Here is the scaffold it generated. Now find the assumption that would break production.&#8221;</p><p>That is a much more useful exercise for working data engineers.</p><h2>Why Microsoft Fabric?</h2><p>The hands-on implementation is in Microsoft Fabric because concrete beats abstract.</p><p>Fabric gives us a realistic surface area:</p><ul><li><p>workspaces</p></li><li><p>lakehouses</p></li><li><p>notebooks</p></li><li><p>medallion architecture</p></li><li><p>Fabric CLI</p></li><li><p>Copilot and related assistant-driven experiences</p></li><li><p>capacity and licensing questions</p></li><li><p>deployment and tenant-safety concerns</p></li></ul><p>It is also where a lot of teams are currently asking practical questions:</p><p>&#8220;Can we use coding agents for Fabric work?&#8221;</p><p>&#8220;Can we scaffold items instead of clicking through the portal?&#8221;</p><p>&#8220;How do we stop an agent from doing something dangerous?&#8221;</p><p>&#8220;What does production readiness look like when parts of the code were generated?&#8221;</p><p>But I don&#8217;t want to oversell the course as vendor-agnostic. It is not.</p><p>The lab is Fabric.</p><p>The exact CLI commands, security model, resource definitions, runtime behavior, and deployment path are Fabric-specific.</p><p>What transfers is the workflow:</p><ul><li><p>repo-level agent instructions</p></li><li><p>bounded tasks</p></li><li><p>metadata contracts</p></li><li><p>generated scaffolds</p></li><li><p>validation checklists</p></li><li><p>test and documentation generation</p></li><li><p>LLM enrichment boundaries</p></li><li><p>cost review</p></li><li><p>deployment checkpoints</p></li><li><p>human approval rules</p></li></ul><p>If your team also uses Databricks or Snowflake, you will still need to adapt the platform layer. But the judgment pattern is the same.</p><p>The dangerous part is rarely the button.</p><p>It is the unchecked assumption.</p><h2>What we will build</h2><p>The workshop is four hours and code-first.</p><p>We will build a Microsoft Fabric medallion scaffold for a card payments scenario. I chose payments deliberately because it creates useful validation pressure without needing an enormous domain model.</p><p>Payments data gives us duplicates, late reference data, status changes, fraud signals, disputes, reconciliation questions, and one-to-many joins.</p><p>In other words: the kind of data where &#8220;looks fine&#8221; is not good enough.</p><p>During the workshop, we will create:</p><ul><li><p>repo instructions for GitHub Copilot and Claude Code</p></li><li><p>bounded task templates</p></li><li><p>a Fabric workspace scaffold</p></li><li><p>lakehouse and notebook structure</p></li><li><p>a metadata-driven ingestion framework</p></li><li><p>Bronze/Silver/Gold transformation stubs</p></li><li><p>a controlled LLM enrichment pattern</p></li><li><p>generated tests and documentation</p></li><li><p>a production-readiness checklist</p></li><li><p>a deployment, trust, cost, and security review</p></li></ul><p>The centerpiece is the metadata-driven ingestion framework.</p><p>That is where coding agents are genuinely useful, because they can produce repetitive framework code quickly.</p><p>It is also where they are genuinely dangerous, because one bad framework assumption repeats across every table it drives.</p><p>So we will not just generate the framework.</p><p>We will audit it.</p><h2>What this workshop is not</h2><p>This is not a no-code tour of Fabric screens.</p><p>This is not a promise that you will build a production-grade payment platform in four hours.</p><p>That would be theater.</p><p>The honest outcome is better:</p><p>You will leave with a working scaffold, a reusable way of directing coding agents, and a much sharper review lens for generated data engineering work.</p><p>You should be comfortable reading Python and SQL. You do not need to be a Fabric expert already, but you should be willing to inspect code, question assumptions, and think about validation.</p><p>If your goal is to let an agent freely modify production workspaces, this workshop will probably frustrate you in the right way.</p><p>Production deployment, deletes, permission changes, secret handling, overwrite operations, and financial reconciliation logic are not things I want agents doing without human review.</p><p>This is not anti-automation.</p><p>It is professional automation.</p><h2>Why now?</h2><p>Because the tools are getting good enough that ignoring them is not a serious strategy.</p><p>But they are also not good enough to remove engineering responsibility.</p><p>The data engineer&#8217;s role is shifting from manually writing every line to designing patterns, generating first drafts, reviewing assumptions, validating behavior, and deciding what earns trust.</p><p>That is a better use of human judgment.</p><p>It is also a higher bar.</p><p>If you can&#8217;t tell whether the generated transformation is preserving the right grain, the assistant did not make you faster. It made you riskier.</p><p>That is the space this workshop lives in.</p><h2>Details</h2><p><strong>Workshop:</strong> AI-Native Data Engineering with Microsoft Fabric<br><strong>Date:</strong> September 7, 2026<br><strong>Time:</strong> 5pm Central Europe / 11am EDT / 8am PT<br><strong>Format:</strong> Live online<br><strong>Duration:</strong> 4 hours<br><strong>Instructor:</strong> Nikola Ilic, Data Mozart<br><strong>Founding cohort price:</strong> &#8364;179 Standard<br><strong>Pro option:</strong> &#8364;449, limited to 15 seats, includes office hours and a 30-minute 1:1 review call</p><p>Registration page:</p><p><a href="https://courses.data-mozart.com/">https://courses.data-mozart.com/</a></p><p>If your team is trying to understand where coding agents fit in real data engineering work, I built this for you.</p><p>Not the keynote version.</p><p>The field version.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Logical Data Management - One Definition to Rule Them All!]]></title><description><![CDATA[Eleven datasets called revenue, or one definition that everyone shares. The semantic layer is the difference!]]></description><link>https://datamozart.substack.com/p/logical-data-management-one-definition</link><guid isPermaLink="false">https://datamozart.substack.com/p/logical-data-management-one-definition</guid><dc:creator><![CDATA[Nikola Ilic]]></dc:creator><pubDate>Wed, 10 Jun 2026 10:15:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ahWO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd4eb856-88b3-4b5b-a9b4-38a411538a59_1278x548.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!ahWO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd4eb856-88b3-4b5b-a9b4-38a411538a59_1278x548.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!ahWO!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd4eb856-88b3-4b5b-a9b4-38a411538a59_1278x548.png 424w, /__u/substackcdn.com/image/fetch/$s_!ahWO!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd4eb856-88b3-4b5b-a9b4-38a411538a59_1278x548.png 848w, /__u/substackcdn.com/image/fetch/$s_!ahWO!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd4eb856-88b3-4b5b-a9b4-38a411538a59_1278x548.png 1272w, /__u/substackcdn.com/image/fetch/$s_!ahWO!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd4eb856-88b3-4b5b-a9b4-38a411538a59_1278x548.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!ahWO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd4eb856-88b3-4b5b-a9b4-38a411538a59_1278x548.png" width="1278" height="548" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fd4eb856-88b3-4b5b-a9b4-38a411538a59_1278x548.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:548,&quot;width&quot;:1278,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:635393,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/201428331?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd4eb856-88b3-4b5b-a9b4-38a411538a59_1278x548.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!ahWO!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd4eb856-88b3-4b5b-a9b4-38a411538a59_1278x548.png 424w, /__u/substackcdn.com/image/fetch/$s_!ahWO!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd4eb856-88b3-4b5b-a9b4-38a411538a59_1278x548.png 848w, /__u/substackcdn.com/image/fetch/$s_!ahWO!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd4eb856-88b3-4b5b-a9b4-38a411538a59_1278x548.png 1272w, /__u/substackcdn.com/image/fetch/$s_!ahWO!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd4eb856-88b3-4b5b-a9b4-38a411538a59_1278x548.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h1 style="text-align: center;"><strong>Logical Data Management series</strong></h1><ol><li><p><a href="/__u/datamozart.substack.com/p/logical-data-management-for-mere">Logical Data Management for mere mortals</a></p></li><li><p><a href="/__u/datamozart.substack.com/p/logical-data-management-storage-was">Logical Data Management - Storage Was Always the Easy Part</a></p></li><li><p><a href="/__u/datamozart.substack.com/p/logical-data-management-why-just">Logical Data Management: Why &#8220;Just a quick number&#8221; is never quick... </a></p></li><li><p>Logical Data Management: One Definition to Rule Them All! (this article)</p></li></ol><p>Let me take you back to Sara&#8217;s Tuesday for a second.</p><p>If you read <a href="/__u/datamozart.substack.com/p/logical-data-management-why-just">the previous article</a>, you remember how it went. A simple request for &#8220;revenue by region&#8221; that should have taken twenty minutes, and instead ate the entire day, not because the data was missing (it was all there, sitting in the lakehouse exactly as designed), but because the meaning was missing. Eleven datasets called revenue. Two definitions that disagreed by eight percent. A forty-line measure with a comment that said &#8220;talk to Mike&#8221;, and Mike, of course, left the company back in 2023.</p><p>Now let me show you a different version of that same Tuesday.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Sara gets the same message at 9:14. Opens the same tool and types &#8220;revenue by region&#8221;. And this time, there is exactly ONE thing called Revenue - clearly defined (order-based, canceled orders excluded), owned by the finance team, certified three weeks ago. Region is defined once, the same way every single report in the company uses it. Sara drags the two onto the canvas, gets the number, writes a short note, and hits send before the coffee gets cold.</p><p>Same data. Same tools. Same Sara. The only difference is that something now sits between Sara and the raw tables and tells her, with authority, what things actually mean.</p><p>That something is the semantic layer. And if you take away only one idea from this entire series, please, let it be this one.</p><h2><em>Ok, so what the heck is a semantic layer?</em></h2><p>Let me give you the plain definition first, and then we&#8217;ll take it apart together.</p><p>A semantic layer is an abstraction that sits between your physical data and the people (or agents:)) consuming it, translating technical structures into business meaning.</p><p>I know, I know - that sentence is dense. So, to put it in plain English: on one side, you have the world of storage. Tables, columns, joins, foreign keys, partitions. A column called <code>rev_amt</code> in a table called <code>fct_ord_ln</code>, joined to <code>dim_geo</code> on a key named <code>geo_sk</code>. Lovely stuff, if you happen to be a database. On the other side, you have actual human beings, who think in words like revenue, region, customer, margin, and quarter, and who have absolutely no idea what <code>fct_ord_ln</code> is, nor should they ever have to.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!puEs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61eac0e0-cff7-4ad5-a425-95f5ff24bfbb_1360x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!puEs!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61eac0e0-cff7-4ad5-a425-95f5ff24bfbb_1360x720.png 424w, /__u/substackcdn.com/image/fetch/$s_!puEs!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61eac0e0-cff7-4ad5-a425-95f5ff24bfbb_1360x720.png 848w, /__u/substackcdn.com/image/fetch/$s_!puEs!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61eac0e0-cff7-4ad5-a425-95f5ff24bfbb_1360x720.png 1272w, /__u/substackcdn.com/image/fetch/$s_!puEs!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61eac0e0-cff7-4ad5-a425-95f5ff24bfbb_1360x720.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!puEs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61eac0e0-cff7-4ad5-a425-95f5ff24bfbb_1360x720.png" width="1360" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/61eac0e0-cff7-4ad5-a425-95f5ff24bfbb_1360x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1360,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:82878,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/201428331?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61eac0e0-cff7-4ad5-a425-95f5ff24bfbb_1360x720.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!puEs!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61eac0e0-cff7-4ad5-a425-95f5ff24bfbb_1360x720.png 424w, /__u/substackcdn.com/image/fetch/$s_!puEs!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61eac0e0-cff7-4ad5-a425-95f5ff24bfbb_1360x720.png 848w, /__u/substackcdn.com/image/fetch/$s_!puEs!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61eac0e0-cff7-4ad5-a425-95f5ff24bfbb_1360x720.png 1272w, /__u/substackcdn.com/image/fetch/$s_!puEs!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61eac0e0-cff7-4ad5-a425-95f5ff24bfbb_1360x720.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The semantic layer is the translator standing between those two worlds. When someone asks for &#8220;Revenue by Region&#8221;, the semantic layer is the thing that knows which table to hit, which column to grab, how to aggregate it, how to join to geography, and which business rule takes care of stripping out the canceled orders. The consumer asks for a business concept. The semantic layer turns it into the correct physical query.</p><p>The user sees Revenue. The engine sees forty lines of logic. The semantic layer is what stands between them.</p><h2><em>Ok, that&#8217;s nice, but it&#8217;s just pretty naming, right?</em></h2><p>This is exactly where most people undersell the whole thing, so let me push back on it directly, because I used to think the same.</p><p>It would be easy to read all of the above and conclude that a semantic layer is basically a friendly naming layer, something like a way to rename ugly columns into pretty ones. Useful? For sure. But, hardly the most important thing in your platform.</p><p>That undersells it badly. Renaming is just the surface. What the semantic layer really does, and. honestly, this is the part that took me incredibly long to fully appreciate, is give meaning a single home.</p><p>Going back to Sara and those eleven datasets... why were there eleven in the first place? Because every team that needed revenue built their own version, in their own report, with their own slightly different logic, for the simple reason that there was nowhere central to define it once. The meaning got duplicated because it was homeless.</p><p>A semantic layer gives meaning a home. Revenue, defined once. Region, defined once. The fiscal calendar, the customer hierarchy, the canceled-orders rule&#8230; All defined once, in one place, owned by someone, versioned, documented. And every report, every dashboard, every query that asks for revenue gets the SAME revenue. Not because everybody nobly remembered to use identical logic, but because there is only one logic to use.</p><p>This is the whole difference between consistency by discipline and consistency by design. Consistency by discipline is what most of us have lived with: &#8220;please, everyone, remember to define revenue the same way.&#8221; Keep in mind, this approach fails every single time, because it depends on hundreds of people independently making the same choice, forever, without slipping even once. Consistency by design means the system itself makes inconsistency hard, because the definition lives in one governed place, and everything else just draws from it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!DH2j!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf8ea1a7-64a4-4a5b-8ddf-d97caff96446_1360x700.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!DH2j!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf8ea1a7-64a4-4a5b-8ddf-d97caff96446_1360x700.png 424w, /__u/substackcdn.com/image/fetch/$s_!DH2j!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf8ea1a7-64a4-4a5b-8ddf-d97caff96446_1360x700.png 848w, /__u/substackcdn.com/image/fetch/$s_!DH2j!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf8ea1a7-64a4-4a5b-8ddf-d97caff96446_1360x700.png 1272w, /__u/substackcdn.com/image/fetch/$s_!DH2j!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf8ea1a7-64a4-4a5b-8ddf-d97caff96446_1360x700.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!DH2j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf8ea1a7-64a4-4a5b-8ddf-d97caff96446_1360x700.png" width="1360" height="700" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/af8ea1a7-64a4-4a5b-8ddf-d97caff96446_1360x700.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:700,&quot;width&quot;:1360,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:89371,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/201428331?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf8ea1a7-64a4-4a5b-8ddf-d97caff96446_1360x700.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!DH2j!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf8ea1a7-64a4-4a5b-8ddf-d97caff96446_1360x700.png 424w, /__u/substackcdn.com/image/fetch/$s_!DH2j!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf8ea1a7-64a4-4a5b-8ddf-d97caff96446_1360x700.png 848w, /__u/substackcdn.com/image/fetch/$s_!DH2j!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf8ea1a7-64a4-4a5b-8ddf-d97caff96446_1360x700.png 1272w, /__u/substackcdn.com/image/fetch/$s_!DH2j!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf8ea1a7-64a4-4a5b-8ddf-d97caff96446_1360x700.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><em>A semantic layer holds way more than names!</em></h2><p>So what, concretely, does a semantic layer actually hold? Worth being specific here, because &#8220;meaning&#8221; is a slippery word, and I don&#8217;t want to leave it floating.</p><p>A mature semantic layer captures a few distinct things. It holds definitions: what is revenue, what is an active customer, what counts as churn. It holds relationships: how customers connect to orders, orders to products, everything to time. It holds calculations and metrics: not just stored columns, but the derived stuff, like year-over-year growth or rolling averages or margin percentages, the math that turns raw numbers into the figures people actually ask for. It holds hierarchies: how region rolls up to country to continent, how day rolls up to month to quarter to year. And it holds business rules: canceled orders don&#8217;t count, internal transfers are excluded, revenue is recognized on shipment for finance but on order for sales.</p><p>And then there&#8217;s one more thing it holds, increasingly: context for machines. Descriptions, synonyms, constraints - the kind of thing that lets a query engine or an AI agent understand not only the shape of your data but what it actually means and how it&#8217;s allowed to be used.</p><p>But, more on that later... that thread deserves an entire article of its own, and it&#8217;s coming. For now, just tuck it in the back of your mind, because it&#8217;s going to end up mattering more than anything else on this list.</p><h2><em>Buy it, or build it? Wait - wrong question!</em></h2><p>If there is one single question that trips people up, this is the one: Is the semantic layer a product you buy, or a place in your architecture?</p><p>The honest answer is that it&#8217;s a place, and several very different kinds of products can move into it.</p><p>For years, the semantic layer was basically trapped inside the BI tool. Your revenue and region lived inside Power BI, or inside a cube (hello to those of you with a few gray hairs, or no hair, like me), or inside one specific reporting tool. That worked, with one big catch - the meaning was only available to that tool. Want the same revenue definition in a notebook? An API? A different BI tool? Redefine it. The meaning was real, but it was locked in a box.</p><p>The big shift in modern data platforms is the move to set the semantic layer free from any single consumer. Meaning shouldn&#8217;t belong to Power BI, or to one application. It should sit in a shared layer that anyone can draw from - a Power BI report, a Python notebook, a SQL client, an external app - all asking the same layer for &#8220;revenue&#8221;, all getting back the same answer. You&#8217;ll hear this called a universal semantic layer, or &#8220;headless BI&#8221; (because the definitions get separated from the visualization &#8220;head&#8221; that displays them). The labels keep shifting, but the principle doesn&#8217;t: define meaning once, in a neutral place, and let every consumer share it. Kurt Buhler (Tabular Editor) has written some of the <a href="https://tabulareditor.com/blog/semantic-models-in-simple-terms">clearest material out there on semantic models</a> and what they really are. It&#8217;s well worth your time if you want to go deeper than the scope of this article allows. And if you want the platform-by-platform view of how this decoupling plays out - how Microsoft, Databricks, Tableau, and others each implement the layer differently - Ruben Van de Voorde's "<a href="https://tabulareditor.com/blog/what-is-a-semantic-layer">What is a semantic layer?</a>" is the clearest map I have seen.</p><p>I won&#8217;t pretend the industry has fully arrived. We&#8217;re mid-transition, where some semantic layers are still welded to their BI tool, some are fully independent, and most real organizations run a messy mix of both. But the direction of travel is not subtle. And the reason it matters circles right back to that thread I planted above: the moment the consumers of your data stop being only humans-with-dashboards and start including AI agents, the question of whether your meaning lives in a shared, governed, queryable layer stops being a nice-to-have and becomes the single thing that decides whether those agents can be trusted at all.</p><h2><em>Why I&#8217;ll die on this hill</em></h2><p>I said at the very top that the semantic layer is the most important component in a modern data platform. That&#8217;s a big claim, and I&#8217;d rather defend it properly than just wave it around.</p><p>So let&#8217;s run a quick thought experiment. What happens when each layer of your platform is mediocre?</p><p>If your storage layer is mediocre, you&#8217;ve got a performance and cost problem. Painful, but fixable. Throw hardware at it, tune the queries, restructure the tables.</p><p>If your ingestion is mediocre, you&#8217;ve got a freshness and reliability problem. Also painful, also fixable, with better pipelines and some monitoring.</p><p>But if your semantic layer is mediocre or simply not there, you get a problem that no hardware on earth fixes: NOBODY agrees on what the numbers mean. Two executives walk into the same meeting carrying two different revenue figures. An AI assistant cheerfully reports a metric using the wrong definition. A board slide contradicts the official financials. The data is flawless, the queries are lightning-fast, and the organization still can&#8217;t trust a single number it produces.</p><p>That, not slow queries, is the failure that actually destroys confidence in a data platform. Disagreement about meaning. And it&#8217;s precisely the failure that no storage technology, however brilliant, was ever built to prevent.</p><p>This is why I keep banging the same drum across this whole series. We&#8217;ve spent twenty years perfecting everything beneath the semantic layer: faster storage, cheaper storage, more flexible storage, unified storage. All real, all good progress. But the one layer that decides whether anyone can trust the output, the layer where meaning actually lives, got treated as an afterthought, bolted onto whichever BI tool happened to be lying around. Logical Data Management is, more than anything else, the argument that this layer has earned the right to be treated as first-class. Designed on purpose, owned by name, governed properly, and shared across every consumer that comes knocking.</p><h2><em>Back to Sara, one last time</em></h2><p>Sara&#8217;s good Tuesday (the imaginary one we opened with) had nothing to do with better data or better tools. Same data. Same tools. The one thing that changed was that meaning finally had a home.</p><p>That&#8217;s the whole promise of the semantic layer, squeezed into a single analyst&#8217;s morning. The data was always there. What was missing was the layer that tells everyone, clearly and with authority, what it all means.</p><p>Next time, we get our hands dirty. A single shared layer of meaning sounds wonderful right up until somebody asks how it performs when millions of queries come crashing in, and whether all this lovely abstraction quietly costs you something. The idea is the easy part. Making it fast is the engineering...</p><p>Thanks for reading!</p><p>Thanks to Claude for creating these nice-looking illustrations.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Logical Data Management: Why "Just a quick number" is never quick...]]></title><description><![CDATA[A true life story about the gap between available data and a trusted number.]]></description><link>https://datamozart.substack.com/p/logical-data-management-why-just</link><guid isPermaLink="false">https://datamozart.substack.com/p/logical-data-management-why-just</guid><dc:creator><![CDATA[Nikola Ilic]]></dc:creator><pubDate>Tue, 02 Jun 2026 07:26:22 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!RfAZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd78f3537-8a47-48ec-971e-356823cdecd6_1299x552.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!RfAZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd78f3537-8a47-48ec-971e-356823cdecd6_1299x552.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!RfAZ!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd78f3537-8a47-48ec-971e-356823cdecd6_1299x552.png 424w, /__u/substackcdn.com/image/fetch/$s_!RfAZ!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd78f3537-8a47-48ec-971e-356823cdecd6_1299x552.png 848w, /__u/substackcdn.com/image/fetch/$s_!RfAZ!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd78f3537-8a47-48ec-971e-356823cdecd6_1299x552.png 1272w, /__u/substackcdn.com/image/fetch/$s_!RfAZ!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd78f3537-8a47-48ec-971e-356823cdecd6_1299x552.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!RfAZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd78f3537-8a47-48ec-971e-356823cdecd6_1299x552.png" width="1299" height="552" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d78f3537-8a47-48ec-971e-356823cdecd6_1299x552.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:552,&quot;width&quot;:1299,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1083140,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/200251459?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd78f3537-8a47-48ec-971e-356823cdecd6_1299x552.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!RfAZ!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd78f3537-8a47-48ec-971e-356823cdecd6_1299x552.png 424w, /__u/substackcdn.com/image/fetch/$s_!RfAZ!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd78f3537-8a47-48ec-971e-356823cdecd6_1299x552.png 848w, /__u/substackcdn.com/image/fetch/$s_!RfAZ!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd78f3537-8a47-48ec-971e-356823cdecd6_1299x552.png 1272w, /__u/substackcdn.com/image/fetch/$s_!RfAZ!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd78f3537-8a47-48ec-971e-356823cdecd6_1299x552.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1 style="text-align: center;"><strong>Logical Data Management series</strong></h1><ol><li><p><a href="/__u/datamozart.substack.com/p/logical-data-management-for-mere">Logical Data Management for mere mortals</a></p></li><li><p><a href="/__u/datamozart.substack.com/p/logical-data-management-storage-was">Logical Data Management - Storage Was Always the Easy Part</a></p></li><li><p>Logical Data Management: Why &#8220;Just a quick number&#8221; is never quick... (this article)</p></li></ol><p>Sara is a data analyst. She has been in her current position for three years, and she&#8217;s doing a quite good job. Sara is the kind of person other people in the company definitely rely on when they need something figured out. It&#8217;s Tuesday. Nothing special about it.</p><p>At 9:14 in the morning, a message arrives from the VP of Sales.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>&#8220;Hey, quick one. Can you get me revenue by region for the last quarter? Board meeting Thursday. Thanks!&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!ZlaQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe20444e-6819-4d8d-8088-04e33da445da_1299x701.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!ZlaQ!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe20444e-6819-4d8d-8088-04e33da445da_1299x701.png 424w, /__u/substackcdn.com/image/fetch/$s_!ZlaQ!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe20444e-6819-4d8d-8088-04e33da445da_1299x701.png 848w, /__u/substackcdn.com/image/fetch/$s_!ZlaQ!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe20444e-6819-4d8d-8088-04e33da445da_1299x701.png 1272w, /__u/substackcdn.com/image/fetch/$s_!ZlaQ!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe20444e-6819-4d8d-8088-04e33da445da_1299x701.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!ZlaQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe20444e-6819-4d8d-8088-04e33da445da_1299x701.png" width="1299" height="701" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fe20444e-6819-4d8d-8088-04e33da445da_1299x701.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:701,&quot;width&quot;:1299,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1300561,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/200251459?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe20444e-6819-4d8d-8088-04e33da445da_1299x701.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!ZlaQ!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe20444e-6819-4d8d-8088-04e33da445da_1299x701.png 424w, /__u/substackcdn.com/image/fetch/$s_!ZlaQ!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe20444e-6819-4d8d-8088-04e33da445da_1299x701.png 848w, /__u/substackcdn.com/image/fetch/$s_!ZlaQ!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe20444e-6819-4d8d-8088-04e33da445da_1299x701.png 1272w, /__u/substackcdn.com/image/fetch/$s_!ZlaQ!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe20444e-6819-4d8d-8088-04e33da445da_1299x701.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Sara reads it and thinks: sure. Twenty minutes, maybe thirty. We have a whole data platform for exactly this. There is a lakehouse. There is a semantic model. The model is even certified. This is the easy kind of request.</p><p>Sara is wrong, but does not know it yet.</p><h2><em>9:30. The first fork in the road.</em></h2><p>Sara opens the BI tool and searches for &#8220;revenue.&#8221;</p><p>Eleven results come back. Eleven datasets, each with some version of a revenue measure. There is <code>Sales_Reporting</code>. There is <code>Finance_Actuals</code>. There is <code>Revenue_Dashboard_v3</code>. There is something called <code>FINAL_revenue_USE_THIS</code> that was last refreshed four months ago, which is not reassuring given the name.</p><p>Which one is right?</p><p>This is the first thing nobody tells you about self-service analytics. The hard part was never running the query. The hard part is knowing which of the eleven nearly-identical things you are allowed to trust.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!P7yo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0406f1c4-1739-44d0-aa1d-3e1ec7b096cd_1305x702.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!P7yo!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0406f1c4-1739-44d0-aa1d-3e1ec7b096cd_1305x702.png 424w, /__u/substackcdn.com/image/fetch/$s_!P7yo!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0406f1c4-1739-44d0-aa1d-3e1ec7b096cd_1305x702.png 848w, /__u/substackcdn.com/image/fetch/$s_!P7yo!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0406f1c4-1739-44d0-aa1d-3e1ec7b096cd_1305x702.png 1272w, /__u/substackcdn.com/image/fetch/$s_!P7yo!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0406f1c4-1739-44d0-aa1d-3e1ec7b096cd_1305x702.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!P7yo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0406f1c4-1739-44d0-aa1d-3e1ec7b096cd_1305x702.png" width="1305" height="702" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0406f1c4-1739-44d0-aa1d-3e1ec7b096cd_1305x702.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:702,&quot;width&quot;:1305,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1065023,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/200251459?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0406f1c4-1739-44d0-aa1d-3e1ec7b096cd_1305x702.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!P7yo!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0406f1c4-1739-44d0-aa1d-3e1ec7b096cd_1305x702.png 424w, /__u/substackcdn.com/image/fetch/$s_!P7yo!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0406f1c4-1739-44d0-aa1d-3e1ec7b096cd_1305x702.png 848w, /__u/substackcdn.com/image/fetch/$s_!P7yo!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0406f1c4-1739-44d0-aa1d-3e1ec7b096cd_1305x702.png 1272w, /__u/substackcdn.com/image/fetch/$s_!P7yo!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0406f1c4-1739-44d0-aa1d-3e1ec7b096cd_1305x702.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Sara picks the one that looks most official, <code>Finance_Actuals</code>, because finance sounds authoritative, and opens it up.</p><h2><em>9:50. The definitions do not agree.</em></h2><p>The numbers in <code>Finance_Actuals</code> do not match the numbers Sara remembers from a report last month.</p><p>Not by a little. By about eight percent.</p><p>Sara frowns and starts digging. After a while, the reason surfaces: <code>Finance_Actuals</code> recognizes revenue on shipment, while the sales team has always talked about revenue on order. So the finance number and the number the VP is expecting in their head are measuring two different things. Both are correct. They just answer different questions.</p><p>Now Sara has a problem that has nothing to do with data and everything to do with meaning. Which definition does the VP actually want? Probably the sales definition, since it is the VP of Sales asking. But the board might expect the finance definition, because that is what shows up in the official financials.</p><p>Sara does not know. So Sara sends a message asking, and waits.</p><h2><em>11:20. Still waiting, so let us try the other path.</em></h2><p>The VP has not replied. They are, presumably, in meetings, because VPs are always in meetings:)</p><p>Sara decides to hedge and build both versions. Sales definition and finance definition, side by side, so the VP can pick. Reasonable plan.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!VjtL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e0d7a9-f080-4ea7-ab51-6278bdf7856c_1290x690.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!VjtL!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e0d7a9-f080-4ea7-ab51-6278bdf7856c_1290x690.png 424w, /__u/substackcdn.com/image/fetch/$s_!VjtL!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e0d7a9-f080-4ea7-ab51-6278bdf7856c_1290x690.png 848w, /__u/substackcdn.com/image/fetch/$s_!VjtL!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e0d7a9-f080-4ea7-ab51-6278bdf7856c_1290x690.png 1272w, /__u/substackcdn.com/image/fetch/$s_!VjtL!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e0d7a9-f080-4ea7-ab51-6278bdf7856c_1290x690.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!VjtL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e0d7a9-f080-4ea7-ab51-6278bdf7856c_1290x690.png" width="1290" height="690" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/88e0d7a9-f080-4ea7-ab51-6278bdf7856c_1290x690.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:690,&quot;width&quot;:1290,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1404102,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/200251459?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e0d7a9-f080-4ea7-ab51-6278bdf7856c_1290x690.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!VjtL!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e0d7a9-f080-4ea7-ab51-6278bdf7856c_1290x690.png 424w, /__u/substackcdn.com/image/fetch/$s_!VjtL!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e0d7a9-f080-4ea7-ab51-6278bdf7856c_1290x690.png 848w, /__u/substackcdn.com/image/fetch/$s_!VjtL!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e0d7a9-f080-4ea7-ab51-6278bdf7856c_1290x690.png 1272w, /__u/substackcdn.com/image/fetch/$s_!VjtL!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e0d7a9-f080-4ea7-ab51-6278bdf7856c_1290x690.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Except the sales definition is not in a certified semantic model anywhere. It lives in the logic of an old report that someone built years ago. Sara opens that report to see how the measure was defined, and finds a DAX expression forty lines long, full of nested conditionals, with a comment near the top that just says &#8220;TEMP FIX, talk to Mike before changing.&#8221;</p><p>Mike left the company in 2023.</p><h2><em>Let us pause here for a second.</em></h2><p>I want to step out of the story, because I suspect a lot of you reading this stopped seeing Sara a while ago and started seeing yourself.</p><p>Here is what has actually happened in the two hours since that cheerful 9:14 message. Sara has not yet produced a single number. And it is not because Sara is slow, or because the tools are bad, or because the data is missing. The data is all there. It has been centralized, modeled, and made available. The platform is doing its job.</p><p>What is missing is everything around the data. Which definition is the right one? Who owns it? Whether the logic can be trusted. What the business actually means by &#8220;revenue&#8221; in this specific context for this specific audience.</p><p>None of that lives in the lakehouse. It lives in conversations, in tribal knowledge, in the head of a person named Mike who does not work here anymore.</p><p>This is what I meant, in the earlier articles in this series, when I said the bottleneck moved. We solved the problem of where the data lives. We did not solve the problem of what it means and who decides. And self-service analytics, for all its promise, quietly handed that unsolved problem to the analyst.</p><p>We told people: here are the tools, here is the data, go serve yourself.</p><p>What we did not say is that serving yourself also means navigating, alone, a maze of undocumented definitions, orphaned logic, and competing versions of the truth, with no map.</p><p>Self-service became self-navigation.</p><h2><em>1:45. A reply, of sorts.</em></h2><p>The VP responds: &#8220;Just the normal revenue number, whatever we usually use. You know the one!&#8221;</p><p>Sara does not, in fact, know the one. &#8220;Whatever we usually use&#8221; is precisely the thing that does not exist in any single, agreed, documented place. That is the whole problem, compressed into five words by someone who has no idea they have just described one of the hardest unsolved problems in the company&#8217;s data estate.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!7ckZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9dcc124-8df0-4268-b2ad-143ba7223dbe_1267x669.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!7ckZ!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9dcc124-8df0-4268-b2ad-143ba7223dbe_1267x669.png 424w, /__u/substackcdn.com/image/fetch/$s_!7ckZ!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9dcc124-8df0-4268-b2ad-143ba7223dbe_1267x669.png 848w, /__u/substackcdn.com/image/fetch/$s_!7ckZ!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9dcc124-8df0-4268-b2ad-143ba7223dbe_1267x669.png 1272w, /__u/substackcdn.com/image/fetch/$s_!7ckZ!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9dcc124-8df0-4268-b2ad-143ba7223dbe_1267x669.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!7ckZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9dcc124-8df0-4268-b2ad-143ba7223dbe_1267x669.png" width="1267" height="669" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c9dcc124-8df0-4268-b2ad-143ba7223dbe_1267x669.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:669,&quot;width&quot;:1267,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:885698,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/200251459?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9dcc124-8df0-4268-b2ad-143ba7223dbe_1267x669.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!7ckZ!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9dcc124-8df0-4268-b2ad-143ba7223dbe_1267x669.png 424w, /__u/substackcdn.com/image/fetch/$s_!7ckZ!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9dcc124-8df0-4268-b2ad-143ba7223dbe_1267x669.png 848w, /__u/substackcdn.com/image/fetch/$s_!7ckZ!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9dcc124-8df0-4268-b2ad-143ba7223dbe_1267x669.png 1272w, /__u/substackcdn.com/image/fetch/$s_!7ckZ!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9dcc124-8df0-4268-b2ad-143ba7223dbe_1267x669.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Sara makes a decision. Sales definition, because the audience framing suggests it, with a footnote noting the finance figure differs and why. It is a judgment call. A reasonable one. The kind analysts make a dozen times a day without anyone realizing a call was even made.</p><h2><em>3:30. It is mostly done. Is it right?</em></h2><p>The report looks good. Revenue by region, last quarter, clean and clear.</p><p>Sara stares at it for a moment with the specific unease that every analyst knows. The numbers are plausible. They are probably correct. But &#8220;probably correct&#8221; is doing a lot of work in that sentence, and Sara is aware that on Thursday this slide goes in front of the board, and if the number is off, or if it somehow uses a definition the CFO disagrees with, the person whose name is attached to it is Sara.</p><p>There is no way to be sure. There is no system that will confirm &#8220;yes, this is the trusted regional revenue figure, blessed by finance, current as of this quarter.&#8221; There is only Sara&#8217;s judgment, a footnote, and a small knot of doubt.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!t0aT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc55431f-38a9-4d2d-ba0a-78b5f8fe93c2_1289x692.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!t0aT!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc55431f-38a9-4d2d-ba0a-78b5f8fe93c2_1289x692.png 424w, /__u/substackcdn.com/image/fetch/$s_!t0aT!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc55431f-38a9-4d2d-ba0a-78b5f8fe93c2_1289x692.png 848w, /__u/substackcdn.com/image/fetch/$s_!t0aT!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc55431f-38a9-4d2d-ba0a-78b5f8fe93c2_1289x692.png 1272w, /__u/substackcdn.com/image/fetch/$s_!t0aT!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc55431f-38a9-4d2d-ba0a-78b5f8fe93c2_1289x692.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!t0aT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc55431f-38a9-4d2d-ba0a-78b5f8fe93c2_1289x692.png" width="1289" height="692" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dc55431f-38a9-4d2d-ba0a-78b5f8fe93c2_1289x692.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:692,&quot;width&quot;:1289,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1060630,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/200251459?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc55431f-38a9-4d2d-ba0a-78b5f8fe93c2_1289x692.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!t0aT!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc55431f-38a9-4d2d-ba0a-78b5f8fe93c2_1289x692.png 424w, /__u/substackcdn.com/image/fetch/$s_!t0aT!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc55431f-38a9-4d2d-ba0a-78b5f8fe93c2_1289x692.png 848w, /__u/substackcdn.com/image/fetch/$s_!t0aT!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc55431f-38a9-4d2d-ba0a-78b5f8fe93c2_1289x692.png 1272w, /__u/substackcdn.com/image/fetch/$s_!t0aT!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc55431f-38a9-4d2d-ba0a-78b5f8fe93c2_1289x692.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Sara sends the report. Adds a careful note: &#8220;Used order-based revenue to match how the sales team reports. Happy to switch to the finance basis if the board prefers, just let me know.&#8221;</p><p>Then Sara closes the laptop and goes home.</p><h2><em>So, did it work?</em></h2><p>Honestly, I do not know. And that is the point.</p><p>Maybe the number was exactly right and the board nodded along and nobody thought about it again. Maybe someone in the room said &#8220;that does not match the figure in the financials&#8221; and there was an awkward few minutes. Maybe the report sat in an inbox unopened. Most analytics requests end this way, not in triumph or disaster, but in a kind of unresolved haze where you ship something defensible and move on to the next fire.</p><p>What I am certain of is this. A request that everyone, including Sara, assumed would take twenty minutes consumed most of a working day. Not one second of that day was spent on anything a database would recognize as hard. The query itself would run in under a second. Every minute was spent on meaning: finding it, questioning it, reconciling it, and finally just guessing at it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!0VPW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa5e2ef3-58f7-468b-bf23-ea701c9529fd_1254x689.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!0VPW!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa5e2ef3-58f7-468b-bf23-ea701c9529fd_1254x689.png 424w, /__u/substackcdn.com/image/fetch/$s_!0VPW!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa5e2ef3-58f7-468b-bf23-ea701c9529fd_1254x689.png 848w, /__u/substackcdn.com/image/fetch/$s_!0VPW!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa5e2ef3-58f7-468b-bf23-ea701c9529fd_1254x689.png 1272w, /__u/substackcdn.com/image/fetch/$s_!0VPW!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa5e2ef3-58f7-468b-bf23-ea701c9529fd_1254x689.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!0VPW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa5e2ef3-58f7-468b-bf23-ea701c9529fd_1254x689.png" width="1254" height="689" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aa5e2ef3-58f7-468b-bf23-ea701c9529fd_1254x689.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:689,&quot;width&quot;:1254,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:984666,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/200251459?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa5e2ef3-58f7-468b-bf23-ea701c9529fd_1254x689.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!0VPW!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa5e2ef3-58f7-468b-bf23-ea701c9529fd_1254x689.png 424w, /__u/substackcdn.com/image/fetch/$s_!0VPW!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa5e2ef3-58f7-468b-bf23-ea701c9529fd_1254x689.png 848w, /__u/substackcdn.com/image/fetch/$s_!0VPW!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa5e2ef3-58f7-468b-bf23-ea701c9529fd_1254x689.png 1272w, /__u/substackcdn.com/image/fetch/$s_!0VPW!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa5e2ef3-58f7-468b-bf23-ea701c9529fd_1254x689.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Multiply that Tuesday across every analyst in your organization, across every &#8220;quick one&#8221; that lands in their inbox, and you start to see the real cost. It does not show up in your cloud bill. It does not appear on any dashboard. It hides inside the gap between &#8220;the data is available&#8221; and &#8220;the answer is trusted,&#8221; and in most organizations that gap is enormous, and almost entirely invisible.</p><p>We have spent a decade making the data easier to reach. Sara&#8217;s Tuesday is what is left over. It is the part we have not solved yet.</p><p>In the next article, we will finally start talking about how to close that gap, beginning with the idea that has been lurking behind this whole series: the semantic layer.</p><p>Thanks for reading!</p><p>Thanks to NotebookLM for creating these nice-looking illustrations.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Logical Data Management - Storage Was Always the Easy Part]]></title><description><![CDATA[What the warehouse, the lake, and the lakehouse each solve, and what they all leave behind.]]></description><link>https://datamozart.substack.com/p/logical-data-management-storage-was</link><guid isPermaLink="false">https://datamozart.substack.com/p/logical-data-management-storage-was</guid><dc:creator><![CDATA[Nikola Ilic]]></dc:creator><pubDate>Thu, 28 May 2026 06:32:27 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!iv3Z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F142cde48-edb7-4223-b589-7879c8c1a878_1472x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!iv3Z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F142cde48-edb7-4223-b589-7879c8c1a878_1472x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!iv3Z!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F142cde48-edb7-4223-b589-7879c8c1a878_1472x720.png 424w, /__u/substackcdn.com/image/fetch/$s_!iv3Z!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F142cde48-edb7-4223-b589-7879c8c1a878_1472x720.png 848w, /__u/substackcdn.com/image/fetch/$s_!iv3Z!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F142cde48-edb7-4223-b589-7879c8c1a878_1472x720.png 1272w, /__u/substackcdn.com/image/fetch/$s_!iv3Z!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F142cde48-edb7-4223-b589-7879c8c1a878_1472x720.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!iv3Z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F142cde48-edb7-4223-b589-7879c8c1a878_1472x720.png" width="1456" height="712" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/142cde48-edb7-4223-b589-7879c8c1a878_1472x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:712,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:89822,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/199562432?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F142cde48-edb7-4223-b589-7879c8c1a878_1472x720.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!iv3Z!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F142cde48-edb7-4223-b589-7879c8c1a878_1472x720.png 424w, /__u/substackcdn.com/image/fetch/$s_!iv3Z!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F142cde48-edb7-4223-b589-7879c8c1a878_1472x720.png 848w, /__u/substackcdn.com/image/fetch/$s_!iv3Z!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F142cde48-edb7-4223-b589-7879c8c1a878_1472x720.png 1272w, /__u/substackcdn.com/image/fetch/$s_!iv3Z!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F142cde48-edb7-4223-b589-7879c8c1a878_1472x720.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1 style="text-align: center;"><strong>Logical Data Management series</strong></h1><ol><li><p><a href="/__u/datamozart.substack.com/p/logical-data-management-for-mere">Logical Data Management for mere mortals</a></p></li><li><p>Logical Data Management - Storage Was Always the Easy Part (this article)</p></li><li><p><a href="/__u/datamozart.substack.com/p/logical-data-management-why-just">Logical Data Management: Why &#8220;Just a quick number&#8221; is never quick...</a></p></li></ol><p></p><p>In <a href="/__u/datamozart.substack.com/p/logical-data-management-for-mere">the first article of this series</a>, I made a claim that I want to pick apart now: that we spent twenty years getting very good at moving data, and somewhere along the way, the real problem quietly changed shape.</p><p>If you missed that one, here is the short version. We solved the movement problem. Data used to be scattered across systems, so we built warehouses, lakes, and lakehouses to bring it together. And it worked. But once everything was in one place, a new problem appeared that storage alone could not fix: the meaning of the data was still scattered, this time across people&#8217;s heads instead of across systems.</p><p>Fair enough. But that is a big claim to drop and then walk away from. So in this article, I want to do something harder and more honest. I want to look at the three dominant architectures, the warehouse, the lake, and the lakehouse, and ask a specific question about each one.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Not &#8220;is it good?&#8221; Of course, they are good. Millions of organizations run on them every day.</p><p>The question is narrower: what does each one solve really well, and what does it leave on the table?</p><p>Because, before we proceed, let me share the key thing: None of these architectures is broken. They are excellent answers. The problem is that some of the questions we are asking in 2026 are not the questions they were designed to answer.</p><h2><em>The data warehouse: order at the cost of flexibility</em></h2><p>Let us start with the oldest of the three.</p><p>The data warehouse was built around a simple, powerful idea: if you define the structure of your data up front, everything downstream becomes easier. Schema-on-write. You decide what the data looks like before it lands, you enforce that structure rigorously, and in return, you get consistency, performance, and trust.</p><p>And it delivers on that promise. A well-designed warehouse is a thing of beauty. Queries are fast, the data is clean (well, at least, it should be), and relationships are enforced. When the finance team pulls a report, the numbers tie out because the structure guarantees they tie out. Decades of accumulated engineering, from star schemas to columnar storage to query optimizers, have made the warehouse extraordinarily good at what it does.</p><p>So what does it leave on the table?</p><p>Flexibility. The same rigid structure that makes the warehouse trustworthy also makes it slow to change. Every new data source needs to be modeled, transformed, and fitted into the existing schema before anyone can use it. Want to bring in semi-structured data, like JSON event logs or sensor readings? You will spend significant effort flattening and structuring it first. Want to explore data before you know what questions you will ask? The warehouse is not built for that. It rewards knowing the questions in advance.</p><p>For decades, this was an acceptable trade. Most analytical questions were known in advance, and most data was structured anyway. But the shape of data changed. More of it became messy, nested, high-volume, and fast-moving. And the warehouse, for all its strengths, started to feel like a beautifully organized library that only accepts books in one specific format.</p><h2><em>The data lake: flexibility at the cost of order</em></h2><p>So the industry swung the other way.</p><p>If the warehouse was too rigid, the data lake offered the opposite: store everything, in any format, and figure out the structure later. Schema-on-read. Dump the raw data into cheap object storage, structured or not, and impose meaning at the moment you query it rather than the moment you store it.</p><p>This solved real problems. Suddenly you could store data that did not fit neatly into tables, like images, logs, clickstreams, audio, nested JSON. Storage was cheap, so you could keep everything, even data you were not sure you needed yet. Data scientists loved it, because they could access raw data in its original form rather than a pre-modeled version that had already had decisions baked into it.</p><p>The lake gave us flexibility and scale that the warehouse could not match.</p><p>And then the bill came due.</p><p>The same freedom that made lakes powerful also made them dangerous. When you can store anything in any format with no enforced structure, you very often end up storing everything in every format with no enforced structure. The industry even coined a term for what lakes frequently became: data swamps. Lakes full of data that nobody could find, nobody could trust, and nobody quite remembered the meaning of.</p><p>Schema-on-read sounds liberating until you are the fifth analyst trying to read the same poorly documented file, each of you interpreting it slightly differently, each of you producing a slightly different number. The structure did not go away. It just moved from the storage layer into the head of whoever happened to be querying the data that day.</p><p>Sound familiar? It should. This is the &#8220;meaning in too many heads&#8221; problem in its purest form.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!ciLK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d61001a-7d98-4643-8ba7-ac920360e614_1472x600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!ciLK!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d61001a-7d98-4643-8ba7-ac920360e614_1472x600.png 424w, /__u/substackcdn.com/image/fetch/$s_!ciLK!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d61001a-7d98-4643-8ba7-ac920360e614_1472x600.png 848w, /__u/substackcdn.com/image/fetch/$s_!ciLK!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d61001a-7d98-4643-8ba7-ac920360e614_1472x600.png 1272w, /__u/substackcdn.com/image/fetch/$s_!ciLK!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d61001a-7d98-4643-8ba7-ac920360e614_1472x600.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!ciLK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d61001a-7d98-4643-8ba7-ac920360e614_1472x600.png" width="1456" height="593" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5d61001a-7d98-4643-8ba7-ac920360e614_1472x600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:593,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:68464,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/199562432?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d61001a-7d98-4643-8ba7-ac920360e614_1472x600.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!ciLK!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d61001a-7d98-4643-8ba7-ac920360e614_1472x600.png 424w, /__u/substackcdn.com/image/fetch/$s_!ciLK!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d61001a-7d98-4643-8ba7-ac920360e614_1472x600.png 848w, /__u/substackcdn.com/image/fetch/$s_!ciLK!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d61001a-7d98-4643-8ba7-ac920360e614_1472x600.png 1272w, /__u/substackcdn.com/image/fetch/$s_!ciLK!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d61001a-7d98-4643-8ba7-ac920360e614_1472x600.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><em>The lakehouse: can we have both?</em></h2><p>By now, you can probably see the pattern, and you can probably guess what came next.</p><p>The warehouse gave us order without flexibility. The lake gave us flexibility without order. So the obvious question became: why not both?</p><p>That is the lakehouse. The pitch is genuinely compelling: keep your data in cheap, open storage like a lake, but add a transactional metadata layer on top that brings warehouse-like structure, reliability, and performance. Technologies like Delta Lake, Apache Iceberg, and Apache Hudi made this real. You get ACID transactions on top of object storage. You get schema enforcement when you want it and schema flexibility when you do not. You get one copy of the data that can serve both the data scientist exploring raw files and the analyst running a governed report.</p><p>I want to be clear: this is a real architectural achievement. The lakehouse is not marketing fluff. The convergence of lake economics with warehouse reliability practically resolved a tension that had forced organizations to maintain two separate systems and copy data between them. Microsoft Fabric, Databricks, Snowflake, and others have built serious, capable platforms on this foundation.</p><p>So, with the lakehouse solving the order-versus-flexibility tension, are we done? Did the lakehouse finally answer the question?</p><p>It answered <em>a</em> question. A big one. But not the one this series is about.</p><p>Here is what the lakehouse still does not give you. It is, fundamentally, still a place where data lives. A very good place, with excellent properties. But the lakehouse is an answer to &#8220;where should the data be and how should it be stored?&#8221; It manages tables, files, transactions, and schemas brilliantly. What it does not manage, because it was never designed to, is meaning.</p><p>A lakehouse will happily store seventeen tables that each contain a column called revenue. It will enforce the schema of each one flawlessly. It will give you ACID guarantees on every write. And it will tell you absolutely nothing about which of those seventeen revenue columns finance actually trusts, what business rules sit behind each one, who owns the definition, or whether &#8220;revenue&#8221; in this table includes canceled orders.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!zD3A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31f0aa5f-e446-4993-a2c3-e6d4a60a43f7_1472x680.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!zD3A!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31f0aa5f-e446-4993-a2c3-e6d4a60a43f7_1472x680.png 424w, /__u/substackcdn.com/image/fetch/$s_!zD3A!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31f0aa5f-e446-4993-a2c3-e6d4a60a43f7_1472x680.png 848w, /__u/substackcdn.com/image/fetch/$s_!zD3A!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31f0aa5f-e446-4993-a2c3-e6d4a60a43f7_1472x680.png 1272w, /__u/substackcdn.com/image/fetch/$s_!zD3A!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31f0aa5f-e446-4993-a2c3-e6d4a60a43f7_1472x680.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!zD3A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31f0aa5f-e446-4993-a2c3-e6d4a60a43f7_1472x680.png" width="1456" height="673" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/31f0aa5f-e446-4993-a2c3-e6d4a60a43f7_1472x680.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:673,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:102581,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/199562432?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31f0aa5f-e446-4993-a2c3-e6d4a60a43f7_1472x680.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!zD3A!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31f0aa5f-e446-4993-a2c3-e6d4a60a43f7_1472x680.png 424w, /__u/substackcdn.com/image/fetch/$s_!zD3A!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31f0aa5f-e446-4993-a2c3-e6d4a60a43f7_1472x680.png 848w, /__u/substackcdn.com/image/fetch/$s_!zD3A!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31f0aa5f-e446-4993-a2c3-e6d4a60a43f7_1472x680.png 1272w, /__u/substackcdn.com/image/fetch/$s_!zD3A!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31f0aa5f-e446-4993-a2c3-e6d4a60a43f7_1472x680.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>That is not a criticism of the lakehouse. It is a statement about what layer the lakehouse operates at. You would not criticize a warehouse for not making coffee.</p><h2><em>The common thread</em></h2><p>Now, I want you to take a step back and look at all three together, and something becomes clear.</p><p>The warehouse, the lake, and the lakehouse are all answers to questions about <em>storage and structure</em>. Where does the data live? How is it formatted? How do we query it efficiently? How do we keep it consistent? These are important questions, and the progression from warehouse to lake to lakehouse represents real, genuine progress in answering them.</p><p>But none of these three architectures was designed to answer a different category of question entirely:</p><p>What does this data <em>mean</em>? Which definition is the trusted one? What business rules turn a raw column into a metric someone can make a decision on? Who owns that meaning? How do we make sure a human analyst and an AI agent both interpret &#8220;active customer&#8221; the same way?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!_hEV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b67b6e5-7303-4994-ac73-caf3c6a1dfee_1472x680.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!_hEV!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b67b6e5-7303-4994-ac73-caf3c6a1dfee_1472x680.png 424w, /__u/substackcdn.com/image/fetch/$s_!_hEV!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b67b6e5-7303-4994-ac73-caf3c6a1dfee_1472x680.png 848w, /__u/substackcdn.com/image/fetch/$s_!_hEV!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b67b6e5-7303-4994-ac73-caf3c6a1dfee_1472x680.png 1272w, /__u/substackcdn.com/image/fetch/$s_!_hEV!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b67b6e5-7303-4994-ac73-caf3c6a1dfee_1472x680.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!_hEV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b67b6e5-7303-4994-ac73-caf3c6a1dfee_1472x680.png" width="1456" height="673" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1b67b6e5-7303-4994-ac73-caf3c6a1dfee_1472x680.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:673,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:93445,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/199562432?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b67b6e5-7303-4994-ac73-caf3c6a1dfee_1472x680.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!_hEV!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b67b6e5-7303-4994-ac73-caf3c6a1dfee_1472x680.png 424w, /__u/substackcdn.com/image/fetch/$s_!_hEV!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b67b6e5-7303-4994-ac73-caf3c6a1dfee_1472x680.png 848w, /__u/substackcdn.com/image/fetch/$s_!_hEV!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b67b6e5-7303-4994-ac73-caf3c6a1dfee_1472x680.png 1272w, /__u/substackcdn.com/image/fetch/$s_!_hEV!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b67b6e5-7303-4994-ac73-caf3c6a1dfee_1472x680.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>These are not storage questions. They are not solved by a better file format, a smarter query engine, or a more elegant transactional metadata layer. They live one level up, in a layer that sits between where the data is stored and how people and systems actually consume it.</p><p>And that, finally, is the gap this series is really about.</p><p>I am not going to pretend that logical data management makes warehouses, lakes, or lakehouses obsolete. That would be both wrong and a little insulting to the genuinely brilliant engineering behind all three. You will still need a place to store your data, and a lakehouse may well be the best place yet invented to do it.</p><p>The point is narrower, and I think more interesting: the storage problem and the meaning problem are different problems. We have spent twenty years getting very, very good at the first one. We have barely started on the second.</p><p>In the next article, I want to leave architecture diagrams behind for a bit and spend a day in the life of the people who feel this gap most acutely: the data users. The analysts, the business users, the people who were promised self-service and got self-navigation instead. Because the limitations I described here are abstract until you watch someone actually run into them on a Tuesday afternoon.</p><p>Thanks for reading!</p><p>Thanks to Claude for creating these nice-looking diagrams.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Logical Data Management for mere mortals]]></title><description><![CDATA[The story I wasn't ready to tell two years ago. AI changed that...]]></description><link>https://datamozart.substack.com/p/logical-data-management-for-mere</link><guid isPermaLink="false">https://datamozart.substack.com/p/logical-data-management-for-mere</guid><dc:creator><![CDATA[Nikola Ilic]]></dc:creator><pubDate>Sat, 23 May 2026 07:01:41 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!BRv_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feba720ab-f468-4649-8f10-cff15756bcdd_1360x760.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!BRv_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feba720ab-f468-4649-8f10-cff15756bcdd_1360x760.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!BRv_!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feba720ab-f468-4649-8f10-cff15756bcdd_1360x760.png 424w, /__u/substackcdn.com/image/fetch/$s_!BRv_!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feba720ab-f468-4649-8f10-cff15756bcdd_1360x760.png 848w, /__u/substackcdn.com/image/fetch/$s_!BRv_!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feba720ab-f468-4649-8f10-cff15756bcdd_1360x760.png 1272w, /__u/substackcdn.com/image/fetch/$s_!BRv_!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feba720ab-f468-4649-8f10-cff15756bcdd_1360x760.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!BRv_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feba720ab-f468-4649-8f10-cff15756bcdd_1360x760.png" width="1360" height="760" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eba720ab-f468-4649-8f10-cff15756bcdd_1360x760.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:760,&quot;width&quot;:1360,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:75770,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/198841767?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feba720ab-f468-4649-8f10-cff15756bcdd_1360x760.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!BRv_!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feba720ab-f468-4649-8f10-cff15756bcdd_1360x760.png 424w, /__u/substackcdn.com/image/fetch/$s_!BRv_!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feba720ab-f468-4649-8f10-cff15756bcdd_1360x760.png 848w, /__u/substackcdn.com/image/fetch/$s_!BRv_!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feba720ab-f468-4649-8f10-cff15756bcdd_1360x760.png 1272w, /__u/substackcdn.com/image/fetch/$s_!BRv_!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feba720ab-f468-4649-8f10-cff15756bcdd_1360x760.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1 style="text-align: center;"><strong>Logical Data Management series</strong></h1><ol><li><p>Logical Data Management for mere mortals (this article)</p></li><li><p><a href="/__u/datamozart.substack.com/p/logical-data-management-storage-was">Logical Data Management - Storage Was Always the Easy Part</a></p></li><li><p><a href="/__u/datamozart.substack.com/p/logical-data-management-why-just">Logical Data Management: Why &#8220;Just a quick number&#8221; is never quick...</a></p></li></ol><p></p><p>Two years ago, I was approached by a publisher to write a short book (~100 pages) about Logical Data Management.</p><p>I did not write it.</p><p>Not because the topic was weak (quite the opposite). The topic was strong, maybe even stronger than I fully realized at the time. But I had this strange feeling that the story was not ready yet. It sounded like an architecture topic. Useful, yes. Important, hell, yes. But still one (or two) step away from the pain that real people feel every Monday morning when someone asks them for &#8220;just a simple number&#8221;.</p><p>And, of course, that number is never simple.</p><p><em>&#8220;Can you give me revenue by customer segment for last quarter?&#8221;</em></p><p>Sounds like a piece of cake, right?.</p><p>Then you open the first report and realize that &#8220;customer segment&#8221; means one thing in CRM, another thing in the data warehouse, something completely different in the finance model, and absolutely nothing in the Excel file that the sales team has been updating manually since 2019.</p><p>Welcome to modern data management.</p><p>Everything is centralized.</p><p>Everyone is still waiting.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><em>We solved the movement problem</em></h2><p>For the last 20 years, a huge part of data management was about movement.</p><p>Move data from operational systems into a data warehouse. Move it from the warehouse into marts. Move it from files into tables. Move it from on-premises into the cloud. Move it from a lake into a lakehouse. Move it from one platform into another platform because the previous platform promised to solve everything, but apparently everything needed a new SKU.</p><p>I am exaggerating a bit.</p><p>Only a bit.</p><p>The logic was easy to understand. Data was scattered across systems, and scattered data is painful. If sales data lives in CRM, product data lives in ERP, finance data lives in another system, and web analytics lives somewhere else, then the business cannot ask questions across those systems without a lot of glue.</p><p><em>So, we built the glue.</em></p><p>ETL pipelines. ELT pipelines. Data warehouses. Data lakes. Lakehouses. Medallion design pattern. Data marts. Semantic models. Cubes, if you have a few gray hairs (or no hair at all) like me.</p><p>The industry became very good at moving data.</p><p>And that solved many problems. I do not want to pretend otherwise. Centralized analytical platforms brought consistency, scale, performance, governance, and a much better foundation for reporting. Without them, many organizations would still be living in spreadsheet archaeology.</p><p>But moving data into one place did not automatically make it usable.</p><p>That is the part we did not always say loudly enough.</p><h2><em>The report is fast. The answer is slow.</em></h2><p>There is a funny thing that happens in many data projects.</p><p>The technical team celebrates that the warehouse query now runs in 4 seconds instead of 40 minutes. And they should celebrate! That is real progress.</p><p>Then the business user says: &#8220;Great. But is this number correct?&#8221;</p><p>Silence.</p><p>Because the query may be fast, but trust is not fast. Meaning is not fast. Ownership is not fast. Security approval is not fast. The conversation about whether canceled orders should be included in net revenue is definitely not fast.</p><p>This is the less obvious truth: the speed of the database is only one part of the speed of analytics.</p><p>If the report runs in 4 seconds, but it takes 4 days to understand which table to use, which column is certified, whether the definition changed last month, and who owns the metric, then the business is not experiencing self-service.</p><p>It is experiencing a faster waiting room.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!FDVv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7911a493-0f8b-40d2-9d12-1e99cb85a301_1360x920.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!FDVv!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7911a493-0f8b-40d2-9d12-1e99cb85a301_1360x920.png 424w, /__u/substackcdn.com/image/fetch/$s_!FDVv!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7911a493-0f8b-40d2-9d12-1e99cb85a301_1360x920.png 848w, /__u/substackcdn.com/image/fetch/$s_!FDVv!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7911a493-0f8b-40d2-9d12-1e99cb85a301_1360x920.png 1272w, /__u/substackcdn.com/image/fetch/$s_!FDVv!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7911a493-0f8b-40d2-9d12-1e99cb85a301_1360x920.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!FDVv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7911a493-0f8b-40d2-9d12-1e99cb85a301_1360x920.png" width="1360" height="920" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7911a493-0f8b-40d2-9d12-1e99cb85a301_1360x920.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:920,&quot;width&quot;:1360,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:98818,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/198841767?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7911a493-0f8b-40d2-9d12-1e99cb85a301_1360x920.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!FDVv!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7911a493-0f8b-40d2-9d12-1e99cb85a301_1360x920.png 424w, /__u/substackcdn.com/image/fetch/$s_!FDVv!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7911a493-0f8b-40d2-9d12-1e99cb85a301_1360x920.png 848w, /__u/substackcdn.com/image/fetch/$s_!FDVv!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7911a493-0f8b-40d2-9d12-1e99cb85a301_1360x920.png 1272w, /__u/substackcdn.com/image/fetch/$s_!FDVv!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7911a493-0f8b-40d2-9d12-1e99cb85a301_1360x920.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><em>Self-service became self-navigation</em></h2><p>I have always liked the idea of self-service analytics. Power BI, semantic models, dataflows, Fabric, Databricks, Snowflake, all of it. Give people the tools. Give them governed data. Let them answer more questions without opening a ticket every time.</p><p>Beautiful idea.</p><p>But in many organizations, self-service became something else: self-navigation.</p><p>This is the data lake. Good luck.</p><p>Here are 600 tables. Good luck.</p><p>Here are 80 semantic models, 17 of which contain a measure called Revenue. Good luck.</p><p>Here is the certified dataset, but the person who built it left the company last year. Good luck.</p><p>But, you might say: &#8220;Nikola, this is not a technology problem. This is a governance problem.&#8221;</p><p>Yes&#8230;</p><p>&#8230;And no.</p><p>It <em><strong>is</strong></em> a governance problem. It is also an architecture problem. It is also a product problem. It is also a language problem.</p><p>The business does not think in tables, pipelines, partitions, notebooks, and bronze-silver-gold layers. The business thinks in customers, orders, invoices, churn, margin, inventory, risk, claims, campaigns, and targets.</p><p>If our data platform exposes only technical objects, we should not be surprised when business users keep asking technical people to translate.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!oNRQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F158100cd-7565-4ac9-af65-569965afa15c_1360x760.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!oNRQ!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F158100cd-7565-4ac9-af65-569965afa15c_1360x760.png 424w, /__u/substackcdn.com/image/fetch/$s_!oNRQ!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F158100cd-7565-4ac9-af65-569965afa15c_1360x760.png 848w, /__u/substackcdn.com/image/fetch/$s_!oNRQ!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F158100cd-7565-4ac9-af65-569965afa15c_1360x760.png 1272w, /__u/substackcdn.com/image/fetch/$s_!oNRQ!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F158100cd-7565-4ac9-af65-569965afa15c_1360x760.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!oNRQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F158100cd-7565-4ac9-af65-569965afa15c_1360x760.png" width="1360" height="760" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/158100cd-7565-4ac9-af65-569965afa15c_1360x760.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:760,&quot;width&quot;:1360,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:94302,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/198841767?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F158100cd-7565-4ac9-af65-569965afa15c_1360x760.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!oNRQ!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F158100cd-7565-4ac9-af65-569965afa15c_1360x760.png 424w, /__u/substackcdn.com/image/fetch/$s_!oNRQ!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F158100cd-7565-4ac9-af65-569965afa15c_1360x760.png 848w, /__u/substackcdn.com/image/fetch/$s_!oNRQ!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F158100cd-7565-4ac9-af65-569965afa15c_1360x760.png 1272w, /__u/substackcdn.com/image/fetch/$s_!oNRQ!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F158100cd-7565-4ac9-af65-569965afa15c_1360x760.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><em>Centralization created a new bottleneck</em></h2><p>Traditional data architecture had an obvious bottleneck: data lived in too many places.</p><p>Centralization attacked that bottleneck. Good.</p><p>Then a new bottleneck appeared.</p><p>The meaning of data lived in too many heads.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>This is the part that makes logical data management interesting to me. And, it&#8217;s not because it is another architecture label. We have enough labels to wallpaper a small apartment. It is interesting because it asks a better question:</p><p>How do we manage the logic around data, not only the data itself?</p><p>That logic includes definitions, relationships, business rules, security policies, ownership, lineage, quality signals, delivery patterns, and the semantic layer that allows humans to ask questions without memorizing physical storage.</p><p>In plain English: if the data platform is the kitchen, logical data management is the menu, the recipe book, the allergy warnings, and the person who knows that &#8220;the usual&#8221; means black coffee with no sugar.</p><p>The ingredients matter.</p><p>But nobody wants to eat ingredients.</p>
      <p>
          <a href="/__u/datamozart.substack.com/p/logical-data-management-for-mere">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[The Power BI developer's survival guide to Microsoft Fabric]]></title><description><![CDATA[Power BI Premium is gone. Microsoft Fabric took its place. Here's what actually changed for you, what didn't, and where to start - without the panic.]]></description><link>https://datamozart.substack.com/p/the-power-bi-developers-survival</link><guid isPermaLink="false">https://datamozart.substack.com/p/the-power-bi-developers-survival</guid><dc:creator><![CDATA[Nikola Ilic]]></dc:creator><pubDate>Sat, 16 May 2026 16:47:51 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!jzTe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b896234-7d1c-4dfe-a578-1ca528e2d1dc_1200x630.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!jzTe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b896234-7d1c-4dfe-a578-1ca528e2d1dc_1200x630.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!jzTe!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b896234-7d1c-4dfe-a578-1ca528e2d1dc_1200x630.png 424w, /__u/substackcdn.com/image/fetch/$s_!jzTe!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b896234-7d1c-4dfe-a578-1ca528e2d1dc_1200x630.png 848w, /__u/substackcdn.com/image/fetch/$s_!jzTe!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b896234-7d1c-4dfe-a578-1ca528e2d1dc_1200x630.png 1272w, /__u/substackcdn.com/image/fetch/$s_!jzTe!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b896234-7d1c-4dfe-a578-1ca528e2d1dc_1200x630.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!jzTe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b896234-7d1c-4dfe-a578-1ca528e2d1dc_1200x630.png" width="1200" height="630" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8b896234-7d1c-4dfe-a578-1ca528e2d1dc_1200x630.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:630,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:58510,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/198014558?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b896234-7d1c-4dfe-a578-1ca528e2d1dc_1200x630.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!jzTe!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b896234-7d1c-4dfe-a578-1ca528e2d1dc_1200x630.png 424w, /__u/substackcdn.com/image/fetch/$s_!jzTe!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b896234-7d1c-4dfe-a578-1ca528e2d1dc_1200x630.png 848w, /__u/substackcdn.com/image/fetch/$s_!jzTe!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b896234-7d1c-4dfe-a578-1ca528e2d1dc_1200x630.png 1272w, /__u/substackcdn.com/image/fetch/$s_!jzTe!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b896234-7d1c-4dfe-a578-1ca528e2d1dc_1200x630.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>If your social media feed has been making you feel like you missed the bus on Microsoft Fabric - take a breath. You didn&#8217;t miss anything. You&#8217;ve been riding the bus the whole time. It just got a new name and a few extra stops.</p><p>I&#8217;ve been talking to a lot of Power BI developers in the last 12 months who are truly anxious about Fabric. Truth to be said, the messaging from Microsoft has been hype-heavy, and the community has been moving fast. And every time you open LinkedIn or Reddit, somebody is announcing a new Fabric feature you&#8217;ve never heard of, with a screenshot of a Lakehouse you don&#8217;t understand, talking about MLVs and Direct Lake on OneLake and Fabric IQ as if everyone already knows what those things are.</p><p>I get it. It feels like the ground is shifting under your feet.</p><p>So, the first thing I&#8217;m telling everyone (and all of you who have ever attended my trainings/live sessions already heard this from me): <strong>your Power BI skills are intact</strong>. Your reports still work. Your DAX matters more than ever. And you do not need to learn Spark this weekend.</p><p>What you DO need is a map. One that tells you what actually changed for YOU as a Power BI developer, what you can safely ignore for now, and where to start when you&#8217;re ready to take the next step. This article aims to be that map. By the way, I already wrote about <a href="/__u/datamozart.substack.com/p/power-bi-in-the-era-of-microsoft">Power BI in the era of Microsoft Fabric here</a>.</p><h2>What didn&#8217;t change (start here and breathe)</h2><p>Before we talk about anything new, let me confirm what&#8217;s still exactly the same. Because in all the noise about Fabric, this part rarely gets said.</p><p><strong>Power BI&#8217;s authoring experience</strong> is still the same. Whether you build models and reports in Power BI Desktop or in the browser using web modeling (which is now essentially at parity with Desktop), the workflow you know hasn&#8217;t changed. You still load data, build a model, write DAX, design a report, and publish. Same skills, same patterns.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p><strong>DAX</strong> is still &#8220;the language&#8221; for semantic models, and it&#8217;s not going anywhere. If anything, it&#8217;s MORE important now - Copilot generates DAX, Direct Lake queries run on DAX, and every new AI feature in Fabric depends on well-written measures. The better your DAX, the better everything downstream works.</p><p><strong>Power Query and the M language</strong> still handle data transformation across Desktop, web modeling, and Dataflows. And, although the old Dataflows Gen1 will be officially deprecated, <a href="/__u/datamozart.substack.com/p/from-dataslows-to-dataflows-the-gen2">the Gen2 version</a> is here to stay, and it relies on Power Query/M skills. Your existing knowledge of Power Query patterns - merging, appending, conditional columns, parameters - all still applies.</p><p><strong>Semantic models</strong> are still the same thing. Same <a href="https://data-mozart.com/vertipaq-brain-muscles-behind-power-bi/">VertiPaq columnar storage</a>, same relationships, same calculated columns, same measures, same <a href="https://data-mozart.com/mastering-dp-500-dp-600-exam-optimize-data-model-with-tabular-editor/">Best Practice Analyzer rules</a>&#8230;</p><p><strong>The Power BI service</strong> is now part of the Fabric portal, but if you log in tomorrow morning, you&#8217;ll find the same workspaces, the same reports, the same scheduled refreshes, the same Apps experience. Even the URL didn&#8217;t change.</p><p><strong>Import mode and DirectQuery</strong> still work exactly as they did before. You don&#8217;t HAVE to use Direct Lake. If your reports run fine on Import mode with a daily refresh, that&#8217;s a perfectly valid architecture in 2026.</p><p><strong><a href="https://data-mozart.com/mastering-dp-500-exam-design-row-level-and-object-level-security-in-power-bi/">Row-level security</a>, deployment pipelines, gateways, Apps</strong> - all still there. Nothing was removed.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!AYIW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe248232d-569f-47c3-aeab-492404f3514e_1100x620.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!AYIW!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe248232d-569f-47c3-aeab-492404f3514e_1100x620.png 424w, /__u/substackcdn.com/image/fetch/$s_!AYIW!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe248232d-569f-47c3-aeab-492404f3514e_1100x620.png 848w, /__u/substackcdn.com/image/fetch/$s_!AYIW!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe248232d-569f-47c3-aeab-492404f3514e_1100x620.png 1272w, /__u/substackcdn.com/image/fetch/$s_!AYIW!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe248232d-569f-47c3-aeab-492404f3514e_1100x620.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!AYIW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe248232d-569f-47c3-aeab-492404f3514e_1100x620.png" width="1100" height="620" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e248232d-569f-47c3-aeab-492404f3514e_1100x620.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:620,&quot;width&quot;:1100,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:77835,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/198014558?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe248232d-569f-47c3-aeab-492404f3514e_1100x620.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!AYIW!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe248232d-569f-47c3-aeab-492404f3514e_1100x620.png 424w, /__u/substackcdn.com/image/fetch/$s_!AYIW!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe248232d-569f-47c3-aeab-492404f3514e_1100x620.png 848w, /__u/substackcdn.com/image/fetch/$s_!AYIW!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe248232d-569f-47c3-aeab-492404f3514e_1100x620.png 1272w, /__u/substackcdn.com/image/fetch/$s_!AYIW!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe248232d-569f-47c3-aeab-492404f3514e_1100x620.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>OK, so your foundation is solid. But some things DID change, and a few of them actually matter to you. Let me walk you through the ones that are worth your time.</p><h2>What changed and actually matters to you</h2><p>I&#8217;ve identified five things. If you understand these five changes, you understand 90% of what&#8217;s different about being a Power BI developer in Fabric.</p><h3>1. Your license changed (and it&#8217;s fine)</h3><p>In January 2025, Microsoft retired the Power BI Premium P SKUs. If your organization was running on Premium - P1, P2, P3 - your environment has already been moved to <a href="https://data-mozart.com/microsoft-fabric-pricing-model-everything-you-need-to-know/">Fabric capacity (F SKUs)</a>. P1 is roughly equivalent to F64. P2 is roughly F128, and so on.</p><p>The key thing to remember is that nothing broke during that transition. Reports work, semantic models work, paginated reports work, scheduled refreshes work&#8230; Your existing investment is preserved.</p><p>What you GAINED was access to the full Fabric platform under the same license - Lakehouses, Warehouses, pipelines, Real-Time Intelligence, all of it. You don&#8217;t have to use them, but they&#8217;re sitting there, included, ready when you want them.</p><p>One thing to keep in mind: below F64, report consumers still need Power BI Pro licenses to view content. At F64 and above, viewer access is included in the capacity license, which is why F64 is the commercial threshold most organizations target if they have more than 300 report consumers.</p><h3>2. OneLake exists, and your data lives there now</h3><p><a href="https://data-mozart.com/mastering-dp-600-exam-create-and-manage-onelake-shortcuts/">OneLake</a> is the unified storage layer for everything in Fabric. Think of it as &#8220;OneDrive for data.&#8221; One lake. One location. One copy.</p><p>When you create a Lakehouse, a Warehouse in Fabric, the data is stored in OneLake as Delta format - the open table format that&#8217;s become the industry standard for analytics. Your semantic models, Lakehouse tables, Warehouse tables, they all live in the same place underneath.</p><p>Why does this matter to you as a Power BI developer? Because of the next change&#8230;</p><h3>3. Direct Lake is a new storage mode option</h3><p>You already know two storage modes: Import (load data into the model, refresh on a schedule) and DirectQuery (query the source live every time). Each has trade-offs you&#8217;ve probably learned the hard way: Import is fast but stale, DirectQuery is fresh but slow.</p><p><a href="/__u/datamozart.substack.com/p/50-shades-of-direct-lake-everything">Direct Lake</a> is a third option. It reads Delta tables directly from OneLake into memory - no scheduled refresh, no live query overhead. Fast queries AND fresh data. Direct Lake is the closest thing to &#8220;you can have both&#8221; that Power BI has ever offered.</p><p>The key thing to bear in mind is that the experience of building reports doesn&#8217;t change. You still author DAX the same way, you still design visuals the same way. The mechanics underneath changed (your model is reading directly from Delta in OneLake instead of holding its own copy), but as a developer, the workflow looks the same.</p><p>When should you care about Direct Lake? If your semantic models are large (millions of rows, multi-GB models) and refresh times are painful, Direct Lake is worth investigating. If your models are small and refresh takes 30 seconds, Import mode is still perfectly fine. No urgency.</p><p>I wrote about the <a href="/__u/datamozart.substack.com/p/a-tale-of-two-direct-lakes-in-microsoft">two flavors of Direct Lake</a> - Direct Lake on SQL and Direct Lake on OneLake, so you may want to read that one as well.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h3>4. Copilot is everywhere</h3><p>Copilot in Power BI has expanded significantly in the last year. You&#8217;ll find it in Desktop (generates report pages, generates DAX, suggests measures, explains formulas), in the service (report-level chat, creates visuals from natural language), and on mobile (as of April 2026, conversational report exploration on your phone or tablet).</p><p>I built an <a href="https://app.pluralsight.com/ilx/video-courses/power-bi-copilot-analyze-data/course-overview">entire Pluralsight course on Copilot in Power BI</a>, so here&#8217;s my honest take: it&#8217;s useful, not magical. Copilot is really good at generating starter DAX measures, summarising what&#8217;s on a report page, and helping you ask exploratory questions of a model. It&#8217;s NOT that good at writing complex measures from scratch, understanding nuanced business logic, or working with poorly-designed semantic models.</p><p>The pattern I&#8217;ve seen is consistent: the better your semantic model, the better Copilot performs. Good table names, good column names, properly defined measures, clear relationships&#8230; If those are in place, Copilot becomes a real productivity tool. If they&#8217;re not, Copilot generates plausible-looking nonsense.</p><p>If there&#8217;s interest, I&#8217;ll write a full, honest field report on Copilot in a future post. Let me know in the comments.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!EXOT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa62b9ca4-28d7-4665-9319-38525b877a0e_1100x640.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!EXOT!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa62b9ca4-28d7-4665-9319-38525b877a0e_1100x640.png 424w, /__u/substackcdn.com/image/fetch/$s_!EXOT!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa62b9ca4-28d7-4665-9319-38525b877a0e_1100x640.png 848w, /__u/substackcdn.com/image/fetch/$s_!EXOT!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa62b9ca4-28d7-4665-9319-38525b877a0e_1100x640.png 1272w, /__u/substackcdn.com/image/fetch/$s_!EXOT!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa62b9ca4-28d7-4665-9319-38525b877a0e_1100x640.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!EXOT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa62b9ca4-28d7-4665-9319-38525b877a0e_1100x640.png" width="1100" height="640" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a62b9ca4-28d7-4665-9319-38525b877a0e_1100x640.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:640,&quot;width&quot;:1100,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:85296,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/198014558?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa62b9ca4-28d7-4665-9319-38525b877a0e_1100x640.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!EXOT!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa62b9ca4-28d7-4665-9319-38525b877a0e_1100x640.png 424w, /__u/substackcdn.com/image/fetch/$s_!EXOT!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa62b9ca4-28d7-4665-9319-38525b877a0e_1100x640.png 848w, /__u/substackcdn.com/image/fetch/$s_!EXOT!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa62b9ca4-28d7-4665-9319-38525b877a0e_1100x640.png 1272w, /__u/substackcdn.com/image/fetch/$s_!EXOT!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa62b9ca4-28d7-4665-9319-38525b877a0e_1100x640.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>What you can safely ignore (yes, I really mean it)</h2><p>Now, the section that nobody else will write for you:) The Fabric ecosystem is enormous: Spark, KQL, Real-Time Intelligence, Data Factory, Data Activator, MLVs, Fabric IQ, Data Agents&#8230; And the social media-driven pressure to learn ALL of it RIGHT NOW is misplaced.</p><p>You can safely ignore most of it. I&#8217;ll try to share the breakdown:</p><p><strong>Spark notebooks and PySpark.</strong> Unless your role is expanding into data engineering, you don&#8217;t need these. Your Power Query skills are still the right tool for Power BI data prep. If a data engineer on your team builds a Spark notebook that lands clean Delta tables in OneLake - great. You <em>consume</em> them. You don&#8217;t need to write them.</p><p><strong><a href="/__u/datamozart.substack.com/p/the-new-house-on-the-block-why-you">KQL databases and Real-Time Intelligence</a>.</strong> Only relevant if you&#8217;re working with streaming data, IoT telemetry, or high-volume event logs. Most PBI developers aren&#8217;t. If your data lives in a database and refreshes daily, Real-Time Intelligence is not your problem.</p><p><strong>Data Activator.</strong> Event-driven automation. Honestly, it&#8217;s very interesting, but not core to report development. File this under &#8220;explore when curiosity pulls you there.&#8221;</p><p><strong><a href="/__u/datamozart.substack.com/p/beyond-the-lakehouse-first-thoughts">Fabric IQ</a> and Data Agents.</strong> The new AI/natural language layer that lets users ask questions of their data in plain English. Worth keeping an eye on, but you don&#8217;t need to architect around it yet.</p><p><strong><a href="/__u/datamozart.substack.com/p/materialized-lake-views-in-microsoft">Materialized Lake Views (MLVs)</a>.</strong> Brilliant for data engineers building medallion architectures. Not something Power BI developers need to create, though you&#8217;ll happily consume the silver and gold MLVs that data engineers build for you. If you&#8217;re curious, my MLV deep dive explains them in detail. But you don&#8217;t need to read it to keep doing your job well.</p><p>The key message: learn these <strong>when your role demands it</strong> or when your curiosity genuinely pulls you toward them. Not because the algorithm told you to be scared.</p><h2>The &#8220;start here&#8221; path</h2><p>OK, you&#8217;re ready to take the first concrete step. Here&#8217;s the sequence I&#8217;d recommend - the one I give to Power BI developers on my team when they ask where to begin.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!Ek65!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e192ec5-ab3e-4395-922e-d8d14b2b1dce_1100x480.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!Ek65!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e192ec5-ab3e-4395-922e-d8d14b2b1dce_1100x480.png 424w, /__u/substackcdn.com/image/fetch/$s_!Ek65!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e192ec5-ab3e-4395-922e-d8d14b2b1dce_1100x480.png 848w, /__u/substackcdn.com/image/fetch/$s_!Ek65!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e192ec5-ab3e-4395-922e-d8d14b2b1dce_1100x480.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Ek65!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e192ec5-ab3e-4395-922e-d8d14b2b1dce_1100x480.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!Ek65!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e192ec5-ab3e-4395-922e-d8d14b2b1dce_1100x480.png" width="1100" height="480" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4e192ec5-ab3e-4395-922e-d8d14b2b1dce_1100x480.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:480,&quot;width&quot;:1100,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:49966,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/198014558?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e192ec5-ab3e-4395-922e-d8d14b2b1dce_1100x480.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!Ek65!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e192ec5-ab3e-4395-922e-d8d14b2b1dce_1100x480.png 424w, /__u/substackcdn.com/image/fetch/$s_!Ek65!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e192ec5-ab3e-4395-922e-d8d14b2b1dce_1100x480.png 848w, /__u/substackcdn.com/image/fetch/$s_!Ek65!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e192ec5-ab3e-4395-922e-d8d14b2b1dce_1100x480.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Ek65!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e192ec5-ab3e-4395-922e-d8d14b2b1dce_1100x480.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Step 1: Understand your capacity.</strong> Find out whether your organization is on Fabric capacity (an F SKU), Power BI Pro, or Premium Per User. This single fact determines what&#8217;s available to you.</p><p><strong>Step 2: Explore OneLake and a Lakehouse.</strong> Create a Lakehouse in a workspace. Upload a CSV file. Watch it become a Delta table. Query it from the SQL analytics endpoint. Connect Power BI to it - from Desktop or directly in the browser, your choice. This single hands-on exercise demystifies 80% of the Fabric terminology you&#8217;ve been seeing. The best thing? It takes an afternoon.</p><p><strong>Step 3: Try Direct Lake on a non-production dataset.</strong> Create a semantic model from your Lakehouse using Direct Lake storage mode. Build a small report. Notice that there&#8217;s no refresh button - you just publish, and the data is always current. Compare query performance to your existing Import model. Get a feel for how Direct Lake behaves.</p><p><strong>Step 4: Let Copilot help you with something real, but verify.</strong> Open Copilot - it&#8217;s available wherever you author Power BI content. Ask it to generate a DAX measure for something specific to your model. Check its work. Iterate. Then ask Copilot to summarise a report page and see if the summary is accurate. Build your own sense of where Copilot is trustworthy and where it isn&#8217;t.</p><p>Each step takes an afternoon. Not a month or quarter.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>The career question nobody wants to ask</h2><p>And, to wrap this up, let me address the elephant in the room: &#8220;<strong>Is my Power BI career safe?</strong>&#8221;</p><p>Short answer: yes. But the long answer is more interesting and more nuanced. I already wrote an article about the future of Power BI from the rapid rise of AI-generated dashboards. Here, I want to focus on the Power BI future, looking through the Fabric lenses.</p><p>Power BI developers are NOT being replaced by Fabric developers. The roles are different. Power BI development - semantic modeling, DAX, report design, business-facing analytics, is a distinct and valuable skillset that the platform fundamentally depends on.</p><p>What IS changing is that the best Power BI developers in 2026 will be the ones who understand where their data comes from (OneLake, Lakehouses, Warehouses) and how it gets there. You don&#8217;t need to BUILD the pipeline. But understanding the architecture around your reports makes you significantly more effective and significantly more valuable in conversations with data engineers, architects, and stakeholders.</p><p>If you are looking for certifications as a method to prove your skills, there are a few certifications to keep on your radar. The PL-300 (Power BI Data Analyst) is still the core PBI certification and is being kept current - it&#8217;s still the foundation. The natural next step for Power BI developers moving into Fabric is the DP-600 (Fabric Analytics Engineer Associate). DP-600 bridges semantic modeling, DAX, and the broader Fabric platform from a BI perspective. If colleagues on your team are heading into data engineering, DP-700 (Fabric Data Engineer Associate) is their path - different role, different exam. For Power BI developers, PL-300 followed by DP-600 is the combination I&#8217;d recommend.</p><p>Another point that is worth saying out loud: your DAX and modeling skills are MORE valuable in Fabric, not less. Direct Lake performance depends on well-designed Delta tables and clean semantic models. Copilot performs better with clean models. Data Agents generate better answers from clean models. Fabric IQ surfaces better insights from clean models. EVERYTHING downstream depends on the quality of the semantic layer, and the semantic layer is YOUR domain.</p><p>The best career move you can make right now isn&#8217;t learning Spark. It&#8217;s getting even better at semantic modeling and DAX. Master Power BI&#8217;s modeling fundamentals, get fluent in advanced DAX patterns, learn how to design models for Direct Lake performance, and then, when you&#8217;re ready, add Fabric context around it.</p><h2>Wrapping up</h2><p>Fabric isn&#8217;t a replacement for Power BI. It&#8217;s the platform Power BI now lives inside. Your skills are intact. Your reports work. Your DAX matters more than ever. And you don&#8217;t need to learn the entire Fabric stack to be excellent at your job.</p><p>Start with the four steps. Take them at your own pace, ignore the parts that don&#8217;t apply to your role yet, and if you want to go deeper, I&#8217;ve been writing about Fabric architecture, Direct Lake, materialized lake views, and the Warehouse vs. Lakehouse decision - all from a working architect&#8217;s perspective. </p><p>You haven&#8217;t missed the bus. You&#8217;re on it. The destination is just a little further than you thought.</p><p>Thanks for reading!</p><p>Thanks to Claude for creating these nice-looking illustrations.</p>]]></content:encoded></item><item><title><![CDATA[Same lake, different shores: Warehouse vs. Lakehouse in 2026]]></title><description><![CDATA[If I had a euro for every time someone asked me "should I use the Warehouse or the Lakehouse?" - I'd have enough to fund a month of exclusive vacation...]]></description><link>https://datamozart.substack.com/p/same-lake-different-shores-warehouse</link><guid isPermaLink="false">https://datamozart.substack.com/p/same-lake-different-shores-warehouse</guid><dc:creator><![CDATA[Nikola Ilic]]></dc:creator><pubDate>Thu, 07 May 2026 07:38:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!lNHd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5f018c4-c49a-46be-af53-d564ec319aa3_1200x630.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!lNHd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5f018c4-c49a-46be-af53-d564ec319aa3_1200x630.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!lNHd!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5f018c4-c49a-46be-af53-d564ec319aa3_1200x630.png 424w, /__u/substackcdn.com/image/fetch/$s_!lNHd!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5f018c4-c49a-46be-af53-d564ec319aa3_1200x630.png 848w, /__u/substackcdn.com/image/fetch/$s_!lNHd!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5f018c4-c49a-46be-af53-d564ec319aa3_1200x630.png 1272w, /__u/substackcdn.com/image/fetch/$s_!lNHd!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5f018c4-c49a-46be-af53-d564ec319aa3_1200x630.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!lNHd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5f018c4-c49a-46be-af53-d564ec319aa3_1200x630.png" width="1200" height="630" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a5f018c4-c49a-46be-af53-d564ec319aa3_1200x630.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:630,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:69519,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/196747171?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5f018c4-c49a-46be-af53-d564ec319aa3_1200x630.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!lNHd!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5f018c4-c49a-46be-af53-d564ec319aa3_1200x630.png 424w, /__u/substackcdn.com/image/fetch/$s_!lNHd!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5f018c4-c49a-46be-af53-d564ec319aa3_1200x630.png 848w, /__u/substackcdn.com/image/fetch/$s_!lNHd!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5f018c4-c49a-46be-af53-d564ec319aa3_1200x630.png 1272w, /__u/substackcdn.com/image/fetch/$s_!lNHd!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5f018c4-c49a-46be-af53-d564ec319aa3_1200x630.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If I had a euro for every time someone asked me &#8220;should I use the Warehouse or the Lakehouse in Microsoft Fabric?&#8221; - I&#8217;d have enough to fund an F64 for a month:) And, my answer has been the same for a while now: you&#8217;re asking the wrong question.</p><p>Let me explain why - even if you were asking the right question a year ago, the answer has changed. Three things happened in the last 12 months that fundamentally shifted the calculus: materialized lake views went GA at FabCon Atlanta in March 2026, SQL databases in Fabric went GA, and the Warehouse got many limitations lifted in the meantime.</p><p>The old framing - &#8220;Lakehouse for data engineering, Warehouse for BI&#8221; - doesn&#8217;t hold anymore. In 2026, the question isn&#8217;t <em>which one</em>. It&#8217;s <em>which combination, and where does each layer sit</em>.</p><p>Let me walk you through what changed and what I&#8217;m doing differently in client engagements because of it.</p><h2>The ground truth: same lake, same engine</h2><p>Before we get into the shifts, let me make sure we&#8217;re on the same page about what these things actually share, because this is the most important fact and the most underappreciated one.</p><p>Both the Warehouse and the Lakehouse store data as Delta tables in OneLake. Same storage, same format, same lake. When you create a table in a Lakehouse and then query it from a Warehouse using a three-part name, no data moves. You&#8217;re reading the same Delta files from the same OneLake location.</p><p>And, both use the same SQL engine under the hood - the Polaris engine. The SQL analytics endpoint that Fabric auto-generates for every Lakehouse? That IS the Warehouse engine, just in read-only mode. So the compute is the same too.</p><p>If storage is the same and the SQL engine is the same&#8230; What&#8217;s actually different?</p><p>The <strong>write model</strong> and the <strong>transformation interface</strong>. That&#8217;s it. That&#8217;s the real fork in the road.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>The Warehouse gives you full T-SQL DML: INSERT, UPDATE, DELETE, MERGE, stored procedures, views, functions - the complete toolbox that SQL Server developers have used for decades. You write data with T-SQL. You transform data with T-SQL. You serve data with T-SQL.</p><p>The Lakehouse SQL endpoint is read-only. If you want to write data to a Lakehouse, you go through Spark - PySpark notebooks, Spark SQL, Scala, or R. The Lakehouse is a Spark-first environment that happens to expose a SQL endpoint for querying.</p><p>Ok, so far so familiar. But, bear with me, now it gets interesting, because three things happened in the last year that blurred these boundaries in ways most comparison articles haven&#8217;t caught up with yet.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!5Ql9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d7c86d-b422-43a4-87e6-7aa171f65cee_1100x500.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!5Ql9!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d7c86d-b422-43a4-87e6-7aa171f65cee_1100x500.png 424w, /__u/substackcdn.com/image/fetch/$s_!5Ql9!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d7c86d-b422-43a4-87e6-7aa171f65cee_1100x500.png 848w, /__u/substackcdn.com/image/fetch/$s_!5Ql9!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d7c86d-b422-43a4-87e6-7aa171f65cee_1100x500.png 1272w, /__u/substackcdn.com/image/fetch/$s_!5Ql9!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d7c86d-b422-43a4-87e6-7aa171f65cee_1100x500.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!5Ql9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d7c86d-b422-43a4-87e6-7aa171f65cee_1100x500.png" width="1100" height="500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5d7c86d-b422-43a4-87e6-7aa171f65cee_1100x500.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:1100,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:91419,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/196747171?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d7c86d-b422-43a4-87e6-7aa171f65cee_1100x500.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!5Ql9!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d7c86d-b422-43a4-87e6-7aa171f65cee_1100x500.png 424w, /__u/substackcdn.com/image/fetch/$s_!5Ql9!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d7c86d-b422-43a4-87e6-7aa171f65cee_1100x500.png 848w, /__u/substackcdn.com/image/fetch/$s_!5Ql9!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d7c86d-b422-43a4-87e6-7aa171f65cee_1100x500.png 1272w, /__u/substackcdn.com/image/fetch/$s_!5Ql9!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d7c86d-b422-43a4-87e6-7aa171f65cee_1100x500.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>What changed: three shifts that broke the old framing</h2><h3>Shift 1: MLVs gave the Lakehouse a transformation layer</h3><p>Before materialized lake views, the Lakehouse&#8217;s transformation story was: write notebooks, build pipelines to orchestrate them, configure schedules, add custom data quality logic, and wire up monitoring. Five different surfaces, five different things to debug when something broke.</p><p>The Warehouse, meanwhile, had stored procedures, views, and T-SQL - a mature, self-contained transformation story that SQL developers already knew.</p><p>That gap was real, and it was the single strongest argument for choosing the Warehouse: &#8220;use the Warehouse because it has a proper transformation layer.&#8221;</p><p>Then MLVs went GA at FabCon Atlanta. <a href="/__u/datamozart.substack.com/p/materialized-lake-views-in-microsoft">I already wrote about MLVs in my previous article</a>. Now? The Lakehouse has declarative SQL transformations with automatic lineage inference, optimal refresh (skip / incremental / full), built-in data quality constraints, and multi-schedule support. You can build a full medallion pipeline ( bronze to silver to gold) without writing a single notebook. Just SQL statements.</p><p>The implication is significant: the Lakehouse&#8217;s transformation story isn&#8217;t better or worse than the Warehouse&#8217;s anymore - it&#8217;s just <em>different</em>. MLVs are declarative and dependency-aware. The engine figures out the execution order from your SQL. T-SQL stored procedures are procedural and manually orchestrated. You tell the engine what to do and in what order. Different tools for different thinking styles.</p><p>I wrote a full deep dive on MLVs recently - if you haven&#8217;t read it, <a href="/__u/datamozart.substack.com/p/materialized-lake-views-in-microsoft">start there</a>. It covers the syntax, optimal refresh internals, the five GA changes, and the limitations you need to know.</p><p>Can it get better than this? Actually, yes.</p><h3>Shift 2: SQL databases brought OLTP into Fabric</h3><p>Before SQL databases in Fabric, the platform was analytics-only. If you needed an operational data store, a reference data hub, or a transactional backend for a Power App, you went to Azure SQL Database outside Fabric. Your OLTP and OLAP worlds lived on separate planets. You built pipelines to move data between them. </p><p>If you want to learn more about SQL database in Fabric, I have you covered in <a href="/__u/datamozart.substack.com/p/sql-database-in-fabric-what-why-and">this article</a>.</p><p>Then Fabric databases went GA in late 2025. SQL database in Fabric is essentially a SaaS Azure SQL DB that lives inside Fabric, backed by the same SQL Server engine that&#8217;s been trusted for 30+ years. But, with one crucial enhancement: it automatically mirrors its data to OneLake as Delta, making it instantly available for analytics across Fabric, without you building a single pipeline.</p><p>I covered this in detail <a href="https://data-mozart.com/fabric-sql-database-what-why-and-how/">on my blog</a>, but the short version is: the old two-player game (Warehouse vs. Lakehouse) is now a three-player game. SQL database handles the use cases that neither Warehouse nor Lakehouse was designed for: high-frequency writes, OLTP workloads, reference data management, operational data stores, and even reverse ETL scenarios where curated analytics data gets pushed back into operational systems.</p><p>I hear you, I hear you: Nikola, isn&#8217;t it confusing to have yet ANOTHER data store in Fabric? I thought the whole point was simplification! And, you&#8217;d be right to feel that way. But think of it like this: the stores aren&#8217;t competing with each other. They&#8217;re specialized. The Lakehouse handles batch engineering and declarative transformations. The Warehouse handles T-SQL serving and procedural logic. The SQL database handles transactional operations. All three sit on the same lake, all three store Delta, and all three can query each other using three-part names.</p><p>And then there&#8217;s the third shift...</p><h3>Shift 3: The Warehouse got real developer ergonomics</h3><p>This one flew under the radar because it wasn&#8217;t a single headline announcement. It was a steady accumulation of features across the January-April 2026 updates that collectively made the Warehouse feel like a proper development environment:</p><p>The Warehouse now supports explicit user transactions for ALTER TABLE (April 2026). Schema migrations that combine ALTER TABLE with other DDL/DML can be executed atomically in a single transaction. Previously, ALTER TABLE couldn&#8217;t participate in explicit transactions, which meant schema changes were risky and non-atomic. That&#8217;s fixed now.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Git integration got meaningfully better: branched workspaces give developers clearer visual cues when working with feature branches. Selective branching lets you pick only the items you need for a feature, reducing workspace clutter. And notebook auto-binding means notebooks resolve their Lakehouse references automatically as they move across Git-connected workspaces (dev -&gt; test -&gt; prod).</p><p>Cross-database queries work across Warehouses, Lakehouses, SQL databases, and mirrored databases using standard three-part naming. One SELECT can join a dimension from your Warehouse with a fact table in your Lakehouse. No shortcuts needed, no data movement.</p><p>And SQL Pool Insights now gives you pool-level telemetry for monitoring and troubleshooting - tracking pressure events, configuration changes, and capacity utilization over time.</p><p>The implication: the Warehouse is no longer &#8220;just&#8221; a query engine. It&#8217;s becoming a proper development platform with CI/CD support, transactional DDL, cross-store queries, and observability built in.</p><p>So if all three stores are getting more capable and the boundaries are blurring, how do you actually decide?</p><h2>The decision framework - 4 questions</h2><p>I don&#8217;t use comparison tables in client engagements anymore. There are 50 of those on the internet already, and they all say the same thing. Instead, I ask four questions. The answers tell me which combination fits.</p>
      <p>
          <a href="/__u/datamozart.substack.com/p/same-lake-different-shores-warehouse">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Materialized Lake Views in Microsoft Fabric: When your medallion fits in a SELECT statement]]></title><description><![CDATA[Five surfaces collapsed into one declarative layer. Here's the full story of Materialized Lake Views in Microsoft Fabric - from syntax to the new GA capabilities announced at FabCon Atlanta]]></description><link>https://datamozart.substack.com/p/materialized-lake-views-in-microsoft</link><guid isPermaLink="false">https://datamozart.substack.com/p/materialized-lake-views-in-microsoft</guid><dc:creator><![CDATA[Nikola Ilic]]></dc:creator><pubDate>Thu, 16 Apr 2026 09:07:47 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!pduR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20d590d-7701-4043-8831-498997b3e5d1_673x417.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!pduR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20d590d-7701-4043-8831-498997b3e5d1_673x417.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!pduR!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20d590d-7701-4043-8831-498997b3e5d1_673x417.png 424w, /__u/substackcdn.com/image/fetch/$s_!pduR!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20d590d-7701-4043-8831-498997b3e5d1_673x417.png 848w, /__u/substackcdn.com/image/fetch/$s_!pduR!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20d590d-7701-4043-8831-498997b3e5d1_673x417.png 1272w, /__u/substackcdn.com/image/fetch/$s_!pduR!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20d590d-7701-4043-8831-498997b3e5d1_673x417.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!pduR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20d590d-7701-4043-8831-498997b3e5d1_673x417.png" width="673" height="417" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d20d590d-7701-4043-8831-498997b3e5d1_673x417.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:417,&quot;width&quot;:673,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:397572,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/194383749?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20d590d-7701-4043-8831-498997b3e5d1_673x417.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!pduR!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20d590d-7701-4043-8831-498997b3e5d1_673x417.png 424w, /__u/substackcdn.com/image/fetch/$s_!pduR!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20d590d-7701-4043-8831-498997b3e5d1_673x417.png 848w, /__u/substackcdn.com/image/fetch/$s_!pduR!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20d590d-7701-4043-8831-498997b3e5d1_673x417.png 1272w, /__u/substackcdn.com/image/fetch/$s_!pduR!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20d590d-7701-4043-8831-498997b3e5d1_673x417.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>For the longest time, building a medallion architecture in Microsoft Fabric meant stitching together a small orchestra of moving parts: notebooks for the transformations, pipelines for orchestration, schedules for refresh, custom code for data quality checks, and the Monitor Hub for keeping an eye on whether anything actually worked. Every layer worked - until something didn&#8217;t, and then you had to figure out which layer broke, why, and which downstream layers got affected along the way.</p><p>If you&#8217;ve ever tried to debug a silver layer that didn&#8217;t update because the bronze notebook failed three hours ago, you know exactly what I&#8217;m talking about.</p><p>Then, at FabCon Atlanta in March 2026, materialized lake views (MLVs) went generally available. And the story they&#8217;re telling is simple: what if your entire medallion pipeline could be a few SELECT statements?</p><p>Let me walk you through the whole thing - what they are, how they work, what changed between preview and GA, and where they fit (and where they don&#8217;t) in your architecture.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>Materialized Lake View - WHAT?</h2><p>A materialized lake view is a persisted, automatically refreshed view defined in Spark SQL or PySpark. You write a SELECT query that describes the transformation you want, and Fabric takes care of execution, storage, refresh, dependency tracking, and data quality enforcement.</p><p>The result is stored as a Delta table in your lakehouse. So downstream consumers, such as Power BI Direct Lake, Spark notebooks, SQL endpoints, can query it just like any other Delta table. No special handling, no different syntax.</p><p>To put it in plain English: an MLV is nothing else but a SELECT statement that learned to materialize itself, manage its own dependencies, schedule its own refresh, and check its own data quality.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!tUFU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8697935-b721-45e6-ae68-a197ba9bc486_1100x520.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!tUFU!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8697935-b721-45e6-ae68-a197ba9bc486_1100x520.png 424w, /__u/substackcdn.com/image/fetch/$s_!tUFU!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8697935-b721-45e6-ae68-a197ba9bc486_1100x520.png 848w, /__u/substackcdn.com/image/fetch/$s_!tUFU!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8697935-b721-45e6-ae68-a197ba9bc486_1100x520.png 1272w, /__u/substackcdn.com/image/fetch/$s_!tUFU!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8697935-b721-45e6-ae68-a197ba9bc486_1100x520.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!tUFU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8697935-b721-45e6-ae68-a197ba9bc486_1100x520.png" width="1100" height="520" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b8697935-b721-45e6-ae68-a197ba9bc486_1100x520.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:520,&quot;width&quot;:1100,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:74251,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/194383749?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8697935-b721-45e6-ae68-a197ba9bc486_1100x520.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!tUFU!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8697935-b721-45e6-ae68-a197ba9bc486_1100x520.png 424w, /__u/substackcdn.com/image/fetch/$s_!tUFU!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8697935-b721-45e6-ae68-a197ba9bc486_1100x520.png 848w, /__u/substackcdn.com/image/fetch/$s_!tUFU!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8697935-b721-45e6-ae68-a197ba9bc486_1100x520.png 1272w, /__u/substackcdn.com/image/fetch/$s_!tUFU!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8697935-b721-45e6-ae68-a197ba9bc486_1100x520.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>OK, that&#8217;s nice. But what does that actually replace?</p><p>That&#8217;s a fair question. Before MLVs, building a single bronze-to-silver-to-gold flow looked roughly like this: you&#8217;d write a notebook for each transformation, set up a Data Factory pipeline to call them in the right order, configure schedules, build custom validation logic, and then wire up the Monitor Hub to watch for failures. Five different surfaces, five different things to debug when something breaks.</p><p>With MLVs, all of that collapses into declarative SQL. You describe what you want. Fabric figures out the rest.</p><h2>The four stages of an MLV&#8217;s life</h2><p>Every MLV moves through four stages. According to the <a href="https://learn.microsoft.com/en-us/fabric/data-engineering/materialized-lake-views/overview-materialized-lake-view">Microsoft documentation</a>, understanding them is the foundation for everything else:</p><ol><li><p><strong>Create</strong> - You write the Spark SQL (or PySpark) that defines the transformation. Fabric stores the definition and materializes the initial result as a Delta table.</p></li><li><p><strong>Refresh</strong> - When source data changes, Fabric chooses the optimal strategy: incremental (process only changes), full (rebuild), or skip (no changes detected).</p></li><li><p><strong>Query</strong> - Any application or tool reads the materialized result. They don&#8217;t know - and don&#8217;t need to know - that it&#8217;s an MLV.</p></li><li><p><strong>Monitor</strong> - Refresh history, execution status, data quality metrics, and lineage are all tracked and visualised natively in Fabric.</p></li></ol><p>Now let&#8217;s dive into each piece.</p><h2>Create: the syntax</h2><p>Here&#8217;s the full Spark SQL pseudo-code syntax for creating an MLV, <a href="https://learn.microsoft.com/en-us/fabric/data-engineering/materialized-lake-views/create-materialized-lake-view">straight from the Microsoft Learn reference</a>:</p><p><code>CREATE [OR REPLACE] MATERIALIZED LAKE VIEW [IF NOT EXISTS]</code></p><p><code>  [workspace.lakehouse.schema].MLV_Identifier</code></p><p><code>[(CONSTRAINT constraint_name CHECK (condition) [ON MISMATCH DROP | FAIL], ...)]</code></p><p><code>[PARTITIONED BY (col1, col2, ...)]</code></p><p><code>[COMMENT &#8220;description&#8221;]</code></p><p><code>[TBLPROPERTIES (&#8221;key1&#8221;=&#8221;val1&#8221;, ...)]</code></p><p><code>AS select_statement</code></p><p>A real example - cleaning order data joined from products and orders, with a data quality constraint and partitioning:</p><p><code>CREATE OR REPLACE MATERIALIZED LAKE VIEW silver.cleaned_order_data</code></p><p><code>(</code></p><p><code>  CONSTRAINT valid_quantity CHECK (quantity &gt; 0) ON MISMATCH DROP</code></p><p><code>)</code></p><p><code>PARTITIONED BY (category)</code></p><p><code>COMMENT &#8220;Cleaned order data joined from products and orders&#8221;</code></p><p><code>AS</code></p><p><code>SELECT</code></p><p><code>  p.productID, p.productName, p.category,</code></p><p><code>  o.orderDate, o.quantity, o.totalAmount</code></p><p><code>FROM bronze.products p</code></p><p><code>INNER JOIN bronze.orders o ON p.productID = o.productID</code></p><p></p><p>Two things worth flagging right away. First, MLV names are case-insensitive (<code>MyView</code> becomes <code>myview</code>). Second, all-uppercase schema names (like <code>MYSCHEMA</code>) aren&#8217;t supported, so use either mixed or lowercase.</p><p>You also need a schema-enabled lakehouse and Fabric Runtime 1.3 or higher. If your lakehouse doesn&#8217;t have schemas turned on, MLVs aren&#8217;t available, that&#8217;s the very first prerequisite.</p><h2>Refresh: the brain of MLVs</h2><p>Here&#8217;s where MLVs stop being clever and start being smart.</p><p>When source data changes, Fabric&#8217;s optimal refresh engine looks at every MLV in the lineage and asks a series of questions: Did anything actually change? Can I process just the changes? Or do I need to rebuild from scratch?</p><p>Three possible outcomes:</p><ul><li><p><strong>Skip refresh</strong> - source data hasn&#8217;t changed. Don&#8217;t waste compute. Move on.</p></li><li><p><strong>Incremental refresh</strong> - process only the new or changed rows. Fast, cheap, ideal.</p></li><li><p><strong>Full refresh</strong> - rebuild the whole thing. Slowest path, used when incremental isn&#8217;t safe or possible.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!fXO-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0256c5ca-8975-487a-b9a1-d79d16c96db4_1100x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!fXO-!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0256c5ca-8975-487a-b9a1-d79d16c96db4_1100x720.png 424w, /__u/substackcdn.com/image/fetch/$s_!fXO-!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0256c5ca-8975-487a-b9a1-d79d16c96db4_1100x720.png 848w, /__u/substackcdn.com/image/fetch/$s_!fXO-!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0256c5ca-8975-487a-b9a1-d79d16c96db4_1100x720.png 1272w, /__u/substackcdn.com/image/fetch/$s_!fXO-!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0256c5ca-8975-487a-b9a1-d79d16c96db4_1100x720.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!fXO-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0256c5ca-8975-487a-b9a1-d79d16c96db4_1100x720.png" width="1100" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0256c5ca-8975-487a-b9a1-d79d16c96db4_1100x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1100,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:92576,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/194383749?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0256c5ca-8975-487a-b9a1-d79d16c96db4_1100x720.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!fXO-!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0256c5ca-8975-487a-b9a1-d79d16c96db4_1100x720.png 424w, /__u/substackcdn.com/image/fetch/$s_!fXO-!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0256c5ca-8975-487a-b9a1-d79d16c96db4_1100x720.png 848w, /__u/substackcdn.com/image/fetch/$s_!fXO-!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0256c5ca-8975-487a-b9a1-d79d16c96db4_1100x720.png 1272w, /__u/substackcdn.com/image/fetch/$s_!fXO-!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0256c5ca-8975-487a-b9a1-d79d16c96db4_1100x720.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>But, and this is important, incremental refresh isn&#8217;t free. It has prerequisites:</p><ol><li><p>The Delta change data feed (CDF) must be enabled on every source table referenced by the MLV (<code>delta.enableChangeDataFeed=true</code>).</p></li><li><p>The source must be a Delta table. Non-Delta sources always get a full refresh.</p></li><li><p>The data must be append-only. If your source has updates or deletes, Fabric falls back to a full refresh.</p></li><li><p>The query must use only supported SQL constructs (more on this in a moment).</p></li></ol><p>Without CDF enabled, optimal refresh can only choose between skip and full. With CDF on, the full incremental path opens up. Enabling CDF on your source tables has no measurable storage or performance impact for append-only workloads, so there&#8217;s very little reason not to turn it on:</p><p><code>ALTER TABLE bronze.orders SET TBLPROPERTIES (delta.enableChangeDataFeed = true);</code></p><p><code>ALTER TABLE bronze.products SET TBLPROPERTIES (delta.enableChangeDataFeed = true);</code></p><p>Can it get better than this? Actually, yes! And, this is where the GA story really begins.</p><h2>What&#8217;s new in GA - The FabCon Atlanta story</h2><p>MLVs were introduced in preview at Build 2025. Between then and GA in March 2026, Microsoft closed the most important gaps. Five major changes turned MLVs from &#8220;interesting&#8221; into &#8220;production-ready&#8221;:</p><ol><li><p>Multi-schedule support</p></li><li><p>Broader incremental refresh coverage</p></li><li><p>PySpark authoring (preview)</p></li><li><p>In-place updates with Replace</p></li><li><p>Stronger data quality controls</p></li></ol><p>Let me take them one at a time.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h3>1. Multi-schedule support</h3><p>In preview, you could only refresh all MLVs in a lakehouse on a single schedule. Need finance to update hourly, but analytics to update every six hours? You had to work around it with notebooks, which broke dependency awareness, error reporting, and retry logic. Notebook-triggered refreshes don&#8217;t surface MLV error details. Failures appear only in cell output, and dependent views have no awareness of them. Errors can persist week after week without anyone knowing the pipeline is broken.</p><p>Now you can define named schedules within a single lakehouse, each targeting a specific subset of views. Finance pipeline hourly. Analytics every six hours. Marketing every 15 minutes. All in the same lakehouse, no custom code.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!g8v1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6365b259-39af-4b9c-bec0-01b6033f6098_1100x580.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!g8v1!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6365b259-39af-4b9c-bec0-01b6033f6098_1100x580.png 424w, /__u/substackcdn.com/image/fetch/$s_!g8v1!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6365b259-39af-4b9c-bec0-01b6033f6098_1100x580.png 848w, /__u/substackcdn.com/image/fetch/$s_!g8v1!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6365b259-39af-4b9c-bec0-01b6033f6098_1100x580.png 1272w, /__u/substackcdn.com/image/fetch/$s_!g8v1!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6365b259-39af-4b9c-bec0-01b6033f6098_1100x580.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!g8v1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6365b259-39af-4b9c-bec0-01b6033f6098_1100x580.png" width="1100" height="580" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6365b259-39af-4b9c-bec0-01b6033f6098_1100x580.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:580,&quot;width&quot;:1100,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:101016,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/194383749?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6365b259-39af-4b9c-bec0-01b6033f6098_1100x580.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!g8v1!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6365b259-39af-4b9c-bec0-01b6033f6098_1100x580.png 424w, /__u/substackcdn.com/image/fetch/$s_!g8v1!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6365b259-39af-4b9c-bec0-01b6033f6098_1100x580.png 848w, /__u/substackcdn.com/image/fetch/$s_!g8v1!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6365b259-39af-4b9c-bec0-01b6033f6098_1100x580.png 1272w, /__u/substackcdn.com/image/fetch/$s_!g8v1!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6365b259-39af-4b9c-bec0-01b6033f6098_1100x580.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p>
      <p>
          <a href="/__u/datamozart.substack.com/p/materialized-lake-views-in-microsoft">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[The new house on the block: Why you need a smoke alarm, not just a newspaper]]></title><description><![CDATA[You&#8217;ve probably spent the last year hearing about Lakehouses and Warehouses until your ears are ringing. This article helps you understand in which scenarios you might need an eventhouse]]></description><link>https://datamozart.substack.com/p/the-new-house-on-the-block-why-you</link><guid isPermaLink="false">https://datamozart.substack.com/p/the-new-house-on-the-block-why-you</guid><dc:creator><![CDATA[Nikola Ilic]]></dc:creator><pubDate>Wed, 08 Apr 2026 10:29:17 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!BFqY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc88c0a8-cb5a-47e2-a38a-c2eb31f4b6b5_1530x700.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!BFqY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc88c0a8-cb5a-47e2-a38a-c2eb31f4b6b5_1530x700.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!BFqY!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc88c0a8-cb5a-47e2-a38a-c2eb31f4b6b5_1530x700.png 424w, /__u/substackcdn.com/image/fetch/$s_!BFqY!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc88c0a8-cb5a-47e2-a38a-c2eb31f4b6b5_1530x700.png 848w, /__u/substackcdn.com/image/fetch/$s_!BFqY!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc88c0a8-cb5a-47e2-a38a-c2eb31f4b6b5_1530x700.png 1272w, /__u/substackcdn.com/image/fetch/$s_!BFqY!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc88c0a8-cb5a-47e2-a38a-c2eb31f4b6b5_1530x700.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!BFqY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc88c0a8-cb5a-47e2-a38a-c2eb31f4b6b5_1530x700.png" width="1456" height="666" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dc88c0a8-cb5a-47e2-a38a-c2eb31f4b6b5_1530x700.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:666,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Featured Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Featured Image" title="Featured Image" srcset="/__u/substackcdn.com/image/fetch/$s_!BFqY!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc88c0a8-cb5a-47e2-a38a-c2eb31f4b6b5_1530x700.png 424w, /__u/substackcdn.com/image/fetch/$s_!BFqY!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc88c0a8-cb5a-47e2-a38a-c2eb31f4b6b5_1530x700.png 848w, /__u/substackcdn.com/image/fetch/$s_!BFqY!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc88c0a8-cb5a-47e2-a38a-c2eb31f4b6b5_1530x700.png 1272w, /__u/substackcdn.com/image/fetch/$s_!BFqY!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc88c0a8-cb5a-47e2-a38a-c2eb31f4b6b5_1530x700.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>You&#8217;ve probably spent the last year hearing about Lakehouses and Warehouses until your ears are ringing. But today, we&#8217;re talking about another house in Microsoft Fabric &#8211; the <strong>Eventhouse</strong>.</p><p>I&#8217;ve recently had a chance to work with a large client on the Real-Time Intelligence project implementation, and was amazed by the power of Eventhouse!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>If a Lakehouse is a massive library and a Warehouse is a high-end bank vault, the <strong>Eventhouse is a 24-hour Air Traffic Control Tower.</strong> In technical terms, an Eventhouse is a logical container tailored for <strong>streaming data</strong>. It&#8217;s built on the Kusto (KQL) engine. While the rest of Fabric is busy thinking about &#8216;data at rest&#8217; (data that&#8217;s sitting in a file waiting to be read), the Eventhouse is obsessed with <strong>&#8216;data in motion&#8217;</strong>. It&#8217;s where your logs, your IoT sensor data, and your real-time clicks live. It doesn&#8217;t just store data &#8211; it catches it mid-air.</p><h2><em><strong>&#8220;The newspaper&#8221; analogy</strong></em></h2><p>You might be thinking, <em>&#8216;Can&#8217;t I just put my sensor data in a Lakehouse?&#8217;</em> Well, sure you can. But there&#8217;s a massive catch: <strong>latency.</strong></p><p>Think about it like this:</p><ul><li><p><strong>The Warehouse/Lakehouse approach</strong> is like reading the <strong>morning newspaper</strong>. It&#8217;s great! It&#8217;s detailed, it&#8217;s curated, and it tells you exactly what happened yesterday. But if your house is currently on fire, a newspaper delivered tomorrow morning isn&#8217;t going to help you much.</p></li><li><p><strong>The Eventhouse approach</strong> is the <strong>live smoke alarm</strong>. It&#8217;s scanning the air every second. It doesn&#8217;t care about the history; it cares about what is happening <em>right now</em>.</p></li></ul><p>If you have a million rows of data coming in every minute from a factory floor, you don&#8217;t want to wait for a Spark job to spin up, &#8216;shuffle&#8217; the data, and write a Delta table. You want to query it the millisecond it hits the wire. That is why we need an Eventhouse.</p><h2><em><strong>The difference in architecture</strong></em></h2><p>Warehouses and Lakehouses are built for <strong>throughput</strong> (moving big chunks of data at once). The Eventhouse is built for <strong>concurrency and low latency</strong> (handling thousands of tiny &#8216;events&#8217; coming in at the same time and letting you query them instantly).</p><p>The reason Eventhouse is so fast is the engine: <strong>KQL (Kusto Query Language).</strong> If SQL is a precise surgical scalpel, then <strong>KQL is a high-powered leaf blower.</strong> It is designed specifically to scan through billions of rows of text and logs in seconds.</p><p>In an Eventhouse, you aren&#8217;t worried about complex joins between 50 tables. You&#8217;re doing &#8216;Search&#8217; and &#8216;Filter&#8217; across massive streams. It&#8217;s built to index everything by default, so when you hit &#8216;Run,&#8217; the answer is there before you&#8217;ve finished clicking the mouse.</p><p>So, the rule of thumb for your next project:</p><ol><li><p>If your data is coming in <strong>batches</strong> and you want to do <strong>standard reporting</strong>, go <strong>Warehouse</strong>.</p></li><li><p>If you have <strong>massive raw unstructured data, </strong>such as PDFs, images, video, or audio files, and you want <strong>maximum flexibility</strong>, go <strong>Lakehouse</strong>.</p></li><li><p>If your data is <strong>streaming</strong>, comes in <strong>high volumes</strong>, and you need to <strong>react in seconds</strong>, go <strong>Eventhouse</strong>.</p></li></ol><p>Additionally, the big differentiator between the Lakehouse/Warehouse vs. Eventstream approach could be: use Lakehouse/Warehouse for analytical workloads, and use the Eventhouse for operational workloads.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!YUWx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd681bf70-643f-4b81-b83d-528261a2a4aa_1024x549.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!YUWx!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd681bf70-643f-4b81-b83d-528261a2a4aa_1024x549.png 424w, /__u/substackcdn.com/image/fetch/$s_!YUWx!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd681bf70-643f-4b81-b83d-528261a2a4aa_1024x549.png 848w, /__u/substackcdn.com/image/fetch/$s_!YUWx!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd681bf70-643f-4b81-b83d-528261a2a4aa_1024x549.png 1272w, /__u/substackcdn.com/image/fetch/$s_!YUWx!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd681bf70-643f-4b81-b83d-528261a2a4aa_1024x549.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!YUWx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd681bf70-643f-4b81-b83d-528261a2a4aa_1024x549.png" width="1024" height="549" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d681bf70-643f-4b81-b83d-528261a2a4aa_1024x549.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:549,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!YUWx!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd681bf70-643f-4b81-b83d-528261a2a4aa_1024x549.png 424w, /__u/substackcdn.com/image/fetch/$s_!YUWx!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd681bf70-643f-4b81-b83d-528261a2a4aa_1024x549.png 848w, /__u/substackcdn.com/image/fetch/$s_!YUWx!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd681bf70-643f-4b81-b83d-528261a2a4aa_1024x549.png 1272w, /__u/substackcdn.com/image/fetch/$s_!YUWx!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd681bf70-643f-4b81-b83d-528261a2a4aa_1024x549.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>It&#8217;s not about which one is &#8216;better&#8217; &#8211; it&#8217;s about choosing the right tool for the speed of your business.</p><h2><em><strong>Eventhouse vs. KQL Database</strong></em></h2><p>This is a point of confusion for a lot of people because, when you look at the workspace, they look very similar. But there is a clear <strong>parent-child relationship</strong> here.</p><p>Think of it like this: <strong>The Eventhouse is the apartment building, and the KQL Database is the apartment.</strong></p><p>The Eventhouse is the high-level <strong>container</strong>. It&#8217;s the architectural &#8220;host.&#8221; When you create an Eventhouse, you aren&#8217;t just creating a place to put data, you are also setting up the <strong>compute and management layer</strong>.</p><ul><li><p><strong>Shared resources:</strong> The Eventhouse manages the &#8220;capacity&#8221; (resources) for everything inside it.</p></li><li><p><strong>Centralized management:</strong> You use the Eventhouse to manage things like data ingestion, networking, and security at scale across multiple KQL databases.</p></li><li><p><strong>Think of it:</strong> The building provides the electricity, the water, the security guard at the front desk, and the overall structure. Without the building, the individual apartments have nowhere to exist.</p></li></ul><p>The KQL Database is where the <strong>actual work</strong> happens. This is where your data is stored and where your queries run.</p><ul><li><p><strong>Storage and tables:</strong> This is where you create your tables, your functions, and your materialized views.</p></li><li><p><strong>Data isolation:</strong> You might have one KQL Database for &#8220;Production Logs&#8221; and another for &#8220;Test Logs&#8221; inside the <em>same</em> Eventhouse.</p></li><li><p><strong>Think of it:</strong> This is your actual living space. It has your furniture (tables) and your rules (functions). You can have many apartments in one building, but they all share the building&#8217;s foundation.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!L4sE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F336fd3e3-b9cc-4fc6-afe1-3df859345a17_1024x576.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!L4sE!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F336fd3e3-b9cc-4fc6-afe1-3df859345a17_1024x576.png 424w, /__u/substackcdn.com/image/fetch/$s_!L4sE!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F336fd3e3-b9cc-4fc6-afe1-3df859345a17_1024x576.png 848w, /__u/substackcdn.com/image/fetch/$s_!L4sE!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F336fd3e3-b9cc-4fc6-afe1-3df859345a17_1024x576.png 1272w, /__u/substackcdn.com/image/fetch/$s_!L4sE!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F336fd3e3-b9cc-4fc6-afe1-3df859345a17_1024x576.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!L4sE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F336fd3e3-b9cc-4fc6-afe1-3df859345a17_1024x576.png" width="1024" height="576" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/336fd3e3-b9cc-4fc6-afe1-3df859345a17_1024x576.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:576,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!L4sE!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F336fd3e3-b9cc-4fc6-afe1-3df859345a17_1024x576.png 424w, /__u/substackcdn.com/image/fetch/$s_!L4sE!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F336fd3e3-b9cc-4fc6-afe1-3df859345a17_1024x576.png 848w, /__u/substackcdn.com/image/fetch/$s_!L4sE!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F336fd3e3-b9cc-4fc6-afe1-3df859345a17_1024x576.png 1272w, /__u/substackcdn.com/image/fetch/$s_!L4sE!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F336fd3e3-b9cc-4fc6-afe1-3df859345a17_1024x576.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><em><strong>Eventhouse OneLake availability</strong></em></h2><p>You&#8217;ve probably heard about the OneCopy principle in Fabric, right? This means, we create a single copy of the data in OneLake, and all the Fabric engines can read the same copy of the data. This principle is based on the unified, open table format, called Delta Parquet. However, when you store the data in Eventhouse, it&#8217;s not stored in Delta Parquet format. Which defeats the purpose of the OneCopy principle, right?</p><p>Well, not really. There is a special feature, called Eventhouse OneLake availability, that allows you to automatically create a logical copy of the Eventhouse data in Delta Parquet format, and then query this data using any other Fabric workload, including Direct Lake storage mode for Power BI semantic models. This feature can be enabled on both the entire KQL database level and on the individual table level.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!pxap!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0691eb9d-1329-4d2d-9282-7c1adc5d032e_1024x576.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!pxap!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0691eb9d-1329-4d2d-9282-7c1adc5d032e_1024x576.png 424w, /__u/substackcdn.com/image/fetch/$s_!pxap!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0691eb9d-1329-4d2d-9282-7c1adc5d032e_1024x576.png 848w, /__u/substackcdn.com/image/fetch/$s_!pxap!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0691eb9d-1329-4d2d-9282-7c1adc5d032e_1024x576.png 1272w, /__u/substackcdn.com/image/fetch/$s_!pxap!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0691eb9d-1329-4d2d-9282-7c1adc5d032e_1024x576.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!pxap!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0691eb9d-1329-4d2d-9282-7c1adc5d032e_1024x576.png" width="1024" height="576" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0691eb9d-1329-4d2d-9282-7c1adc5d032e_1024x576.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:576,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!pxap!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0691eb9d-1329-4d2d-9282-7c1adc5d032e_1024x576.png 424w, /__u/substackcdn.com/image/fetch/$s_!pxap!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0691eb9d-1329-4d2d-9282-7c1adc5d032e_1024x576.png 848w, /__u/substackcdn.com/image/fetch/$s_!pxap!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0691eb9d-1329-4d2d-9282-7c1adc5d032e_1024x576.png 1272w, /__u/substackcdn.com/image/fetch/$s_!pxap!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0691eb9d-1329-4d2d-9282-7c1adc5d032e_1024x576.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><em><strong>Key strengths</strong></em></h2><p>Let me now quickly introduce some of the key strengths of the Eventhouse in Microsoft Fabric. In this article, I&#8217;ll just briefly introduce them, and then I plan to cover them in more detail in the future.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!4VI5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13463f3c-a3e9-4f4b-a620-bb34c4e0db0c_1024x576.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!4VI5!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13463f3c-a3e9-4f4b-a620-bb34c4e0db0c_1024x576.png 424w, /__u/substackcdn.com/image/fetch/$s_!4VI5!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13463f3c-a3e9-4f4b-a620-bb34c4e0db0c_1024x576.png 848w, /__u/substackcdn.com/image/fetch/$s_!4VI5!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13463f3c-a3e9-4f4b-a620-bb34c4e0db0c_1024x576.png 1272w, /__u/substackcdn.com/image/fetch/$s_!4VI5!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13463f3c-a3e9-4f4b-a620-bb34c4e0db0c_1024x576.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!4VI5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13463f3c-a3e9-4f4b-a620-bb34c4e0db0c_1024x576.png" width="1024" height="576" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/13463f3c-a3e9-4f4b-a620-bb34c4e0db0c_1024x576.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:576,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!4VI5!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13463f3c-a3e9-4f4b-a620-bb34c4e0db0c_1024x576.png 424w, /__u/substackcdn.com/image/fetch/$s_!4VI5!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13463f3c-a3e9-4f4b-a620-bb34c4e0db0c_1024x576.png 848w, /__u/substackcdn.com/image/fetch/$s_!4VI5!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13463f3c-a3e9-4f4b-a620-bb34c4e0db0c_1024x576.png 1272w, /__u/substackcdn.com/image/fetch/$s_!4VI5!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13463f3c-a3e9-4f4b-a620-bb34c4e0db0c_1024x576.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3><em><strong>Shortcuts</strong></em></h3><p>I&#8217;ve already written about <a href="https://data-mozart.com/mastering-dp-600-exam-create-and-manage-onelake-shortcuts/">shortcuts in Microsoft Fabric</a>. As a reminder, a shortcut is a OneLake object that points to another storage location. Essentially, it allows you to create a virtual copy of the data without physically moving it from its original location.</p><p>Shortcuts in a KQL database conceptually work the same as in the Lakehouse, but there are also some specifics when it comes to their physical implementation. As already mentioned, I&#8217;ll cover KQL database shortcuts in detail in one of the next articles.</p><h3><em><strong>Eventhouse endpoint for Lakehouse/Warehouse</strong></em></h3><p>The Eventhouse endpoint is a capability in Microsoft Fabric that lets users query lakehouse or warehouse data in a high-performing and real-time querying way, using both KQL and SQL.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!J3e2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa6ed611-2aa7-4503-b7c5-4408f63ad0d6_758x390.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!J3e2!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa6ed611-2aa7-4503-b7c5-4408f63ad0d6_758x390.png 424w, /__u/substackcdn.com/image/fetch/$s_!J3e2!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa6ed611-2aa7-4503-b7c5-4408f63ad0d6_758x390.png 848w, /__u/substackcdn.com/image/fetch/$s_!J3e2!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa6ed611-2aa7-4503-b7c5-4408f63ad0d6_758x390.png 1272w, /__u/substackcdn.com/image/fetch/$s_!J3e2!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa6ed611-2aa7-4503-b7c5-4408f63ad0d6_758x390.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!J3e2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa6ed611-2aa7-4503-b7c5-4408f63ad0d6_758x390.png" width="758" height="390" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aa6ed611-2aa7-4503-b7c5-4408f63ad0d6_758x390.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:390,&quot;width&quot;:758,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!J3e2!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa6ed611-2aa7-4503-b7c5-4408f63ad0d6_758x390.png 424w, /__u/substackcdn.com/image/fetch/$s_!J3e2!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa6ed611-2aa7-4503-b7c5-4408f63ad0d6_758x390.png 848w, /__u/substackcdn.com/image/fetch/$s_!J3e2!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa6ed611-2aa7-4503-b7c5-4408f63ad0d6_758x390.png 1272w, /__u/substackcdn.com/image/fetch/$s_!J3e2!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa6ed611-2aa7-4503-b7c5-4408f63ad0d6_758x390.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3><em><strong>Auto-indexing</strong></em></h3><p>One of the biggest headaches in database history is <strong>indexing.</strong> In the old days, you had to guess which columns people would query and build indexes manually. If you missed one, your query would crawl.</p><p>In an Eventhouse, <strong>everything is indexed by default.</strong> Because it&#8217;s built on the Kusto engine, it indexes data as it arrives. You don&#8217;t &#8216;tune&#8217; an Eventhouse, you just feed it.</p><h3><em><strong>Partitioning</strong></em></h3><p>Then there&#8217;s <strong>partitioning</strong>. Usually, you have to decide: &#8220;Do I partition by year? By month? By department?&#8221; If you get it wrong, moving data is a nightmare.</p><p>The Eventhouse handles partitioning based on <strong>ingestion time</strong> automatically. It&#8217;s like having a closet that reorganizes itself every night so the clothes you wear most often are right in front.</p><p>And the <strong>compression</strong>? It&#8217;s amazing. Eventhouse automatically squishes data down.</p><h3><em><strong>Native time-series</strong></em></h3><p>Now, let&#8217;s talk about <strong>time series</strong>. Most databases treat time like just another number. But the Eventhouse <em><strong>understands</strong></em> time.</p><p>If you want to see a trend, find an anomaly, or predict where a sensor reading is going, you usually need a math degree and 200 lines of Python. In Eventhouse, we use <strong>KQL</strong>, which has &#8220;Time Series&#8221; baked into its DNA.</p><p>Standard SQL is like looking at a series of polaroid photos. You have to flip through them one by one to see what changed. <strong>Eventhouse</strong> is like having a <strong>video editing suite</strong>. You can use one command like <strong>make-series</strong> to fill in missing data points, or <strong>series_decompose</strong> to strip away the &#8220;noise&#8221; and see the actual trend. It&#8217;s built to answer &#8220;What&#8217;s normal?&#8221; and &#8220;When did it stop being normal?&#8221; in milliseconds.</p><h3><em><strong>Complex JSON and XML parsing</strong></em></h3><p>Let&#8217;s wrap it up by talking about the messy stuff: <strong>nested JSON and XML.</strong> We&#8217;ve all seen those JSON files that look like a giant tangled ball of Christmas lights &#8211; arrays inside objects inside other arrays.</p><p>In a traditional warehouse, you&#8217;d spend three days writing a flattening script. The Eventhouse has a feature called <strong>Dynamic Columns.</strong> You just dump the JSON in. You don&#8217;t even have to define the schema first! It&#8217;s like a high-end wood chipper. You throw in a whole tree (a complex, nested JSON object), and the Eventhouse shreds it into perfectly organized wood chips (columns) that you can query immediately. You want to reach deep into a nested array? You just use a simple dot notation (like Log.Details.Sensor.Value). It&#8217;s that easy.</p><p>Stay tuned for more about Eventhouse and Real-Time Intelligence workloads in Microsoft Fabric!</p><p>Thanks for reading!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Data Modeling for Analytics Engineers: The Complete Primer]]></title><description><![CDATA[The best data models make it hard to ask bad questions and easy to answer good ones.]]></description><link>https://datamozart.substack.com/p/data-modeling-for-analytics-engineers</link><guid isPermaLink="false">https://datamozart.substack.com/p/data-modeling-for-analytics-engineers</guid><dc:creator><![CDATA[Nikola Ilic]]></dc:creator><pubDate>Sun, 15 Feb 2026 18:16:17 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!BZT_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F508dfd3d-4d86-466b-a8cc-0c7df6e94968_2400x1260.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!BZT_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F508dfd3d-4d86-466b-a8cc-0c7df6e94968_2400x1260.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!BZT_!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F508dfd3d-4d86-466b-a8cc-0c7df6e94968_2400x1260.png 424w, /__u/substackcdn.com/image/fetch/$s_!BZT_!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F508dfd3d-4d86-466b-a8cc-0c7df6e94968_2400x1260.png 848w, /__u/substackcdn.com/image/fetch/$s_!BZT_!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F508dfd3d-4d86-466b-a8cc-0c7df6e94968_2400x1260.png 1272w, /__u/substackcdn.com/image/fetch/$s_!BZT_!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F508dfd3d-4d86-466b-a8cc-0c7df6e94968_2400x1260.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!BZT_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F508dfd3d-4d86-466b-a8cc-0c7df6e94968_2400x1260.png" width="1456" height="764" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/508dfd3d-4d86-466b-a8cc-0c7df6e94968_2400x1260.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:764,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1362860,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/188052022?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F508dfd3d-4d86-466b-a8cc-0c7df6e94968_2400x1260.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!BZT_!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F508dfd3d-4d86-466b-a8cc-0c7df6e94968_2400x1260.png 424w, /__u/substackcdn.com/image/fetch/$s_!BZT_!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F508dfd3d-4d86-466b-a8cc-0c7df6e94968_2400x1260.png 848w, /__u/substackcdn.com/image/fetch/$s_!BZT_!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F508dfd3d-4d86-466b-a8cc-0c7df6e94968_2400x1260.png 1272w, /__u/substackcdn.com/image/fetch/$s_!BZT_!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F508dfd3d-4d86-466b-a8cc-0c7df6e94968_2400x1260.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Your data model isn't about tech specs. It's about thinking like a business. Consider it the blueprint for your entire analytics house. If the blueprint's chaotic, your house crumbles. If it's structured and organized, your team finds insights fast.</p><p>You&#8217;re staring at a spreadsheet full of customer orders, product prices, and sales dates. It&#8217;s messy. Your &#8220;dashboard&#8221; is slow. You&#8217;ve tried to answer a simple question like: <em>How much revenue did pizza make last quarter?</em> and ended up with numbers that don&#8217;t add up. Why? Because your data model is a pure mess.</p><p>In this blog post - adapted from a chapter of my book <strong><a href="https://www.oreilly.com/library/view/analytics-engineering-with/9798341645868/">Analytics Engineering with Microsoft Fabric and Power BI</a></strong>, which I&#8217;m writing with Shabnam Watson for O&#8217;Reilly, I&#8217;ll walk you through the core data modeling concepts that every analytics engineer should know. Forget Power BI and Microsoft Fabric for a second. This is about core principles - the <em>why</em> behind models. These ideas work regardless of the tool.</p><p>Let&#8217;s start by introducing the challenge. Imagine you run a tiny pizzeria. Your &#8220;database&#8221; is a single Excel sheet: Order ID, Customer Name, Address, Pizza Type, Quantity, Price. Looks simple enough, right? The problem? John Smith&#8217;s address is repeated in every single order. If he moves, you&#8217;ve got to edit 37,000 rows of orders just to update his address. Doesn&#8217;t look smart, right?</p><p>Your data model is the fix. It literally says: <em>Customers live in their own table. Orders link to Customers without copying addresses.</em> It&#8217;s not about how you&#8217;re going to visualize the data. It&#8217;s about organizing it so the data makes sense when you ask questions.</p><p>However, data modeling begins long before your data is stored in a spreadsheet or in a real database. In the following sections, we will introduce core data modeling concepts - the ones that should be implemented in every single data modeling scenario, regardless of the modeling approach you plan to take or the tool you are going to use for the physical implementation.</p><p>Just as an architect doesn&#8217;t go straight from an idea to a finished building, a data modeler doesn&#8217;t create a database schema in a single step. The process progresses through three levels of increasing detail, each serving a distinct purpose and audience. Think of it as progressing from a conceptual sketch, to a detailed architectural blueprint, to a final construction plan used by the builders.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>Conceptual model: The napkin sketch</strong></h2><p>Every great data model begins not with code or tables, but with a conversation. The <strong>conceptual model</strong> is the very first, highest-level view of your data. It&#8217;s completely non-technical and focuses solely on understanding and defining the business concepts and the rules that govern them.</p><p>The conceptual model identifies the main <em>things</em> or <em>entities</em> a business cares about and how they relate to each other. It creates a vocabulary for talking with business stakeholders to ensure you&#8217;re speaking the same language.</p><p>Imagine an architect meeting with a client at a coffee shop. The client might say something like: <em>I want a family home that feels open and connected.</em> The architect takes a napkin and draws a few bubbles: Kitchen, Living Room, Bedrooms, and draws lines between them labeled &#8220;connects to&#8221; or &#8220;is separate from.&#8221; There are no dimensions, no materials, no technical details. It&#8217;s just about capturing the core idea and ensuring that everyone agrees on the fundamental concepts. That napkin sketch is the <em>conceptual data model</em>.</p><p>Let&#8217;s look at a real example - events at a stadium. In a conceptual model for this scenario, you&#8217;d identify several entities: Stadium, Event, Customer, Attendee, and Ticket. You&#8217;d also notice how these entities are interconnected. This high-level overview provides a simplified picture of the business workflow within the organization.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!CXVG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c93a3e1-cf28-4bd4-920a-d0986776f2d6_853x627.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!CXVG!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c93a3e1-cf28-4bd4-920a-d0986776f2d6_853x627.png 424w, /__u/substackcdn.com/image/fetch/$s_!CXVG!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c93a3e1-cf28-4bd4-920a-d0986776f2d6_853x627.png 848w, /__u/substackcdn.com/image/fetch/$s_!CXVG!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c93a3e1-cf28-4bd4-920a-d0986776f2d6_853x627.png 1272w, /__u/substackcdn.com/image/fetch/$s_!CXVG!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c93a3e1-cf28-4bd4-920a-d0986776f2d6_853x627.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!CXVG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c93a3e1-cf28-4bd4-920a-d0986776f2d6_853x627.png" width="853" height="627" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2c93a3e1-cf28-4bd4-920a-d0986776f2d6_853x627.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:627,&quot;width&quot;:853,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!CXVG!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c93a3e1-cf28-4bd4-920a-d0986776f2d6_853x627.png 424w, /__u/substackcdn.com/image/fetch/$s_!CXVG!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c93a3e1-cf28-4bd4-920a-d0986776f2d6_853x627.png 848w, /__u/substackcdn.com/image/fetch/$s_!CXVG!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c93a3e1-cf28-4bd4-920a-d0986776f2d6_853x627.png 1272w, /__u/substackcdn.com/image/fetch/$s_!CXVG!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c93a3e1-cf28-4bd4-920a-d0986776f2d6_853x627.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A <strong>Stadium</strong> has a name and is located in a specific country and city, which uniquely identifies it. This Stadium may host many events, and there can be many attendees coming to these events. An <strong>Event</strong> cannot exist outside of the Stadium where it is scheduled. An event can be attended by an attendee, and there can be many attendees for one event. An <strong>Attendee</strong> is the entity that attends the event. They can also be a <strong>Customer</strong> of the Stadium entity - for example, by visiting a stadium museum or buying at a fan shop - but that doesn&#8217;t make them an attendee of a specific event. Finally, a <strong>Ticket</strong> represents confirmation that the attendee will attend a specific event. Each Ticket has a unique identifier, and one Attendee can purchase multiple Tickets.</p><p>Now, you might be wondering: why is this important? Why should someone spend time and effort describing all the entities and relations between them?</p><p>Remember, the conceptual data model is all about building trust between business and data personas - ensuring that business stakeholders will get what they need, explained in a common language, so that they can easily understand the entire workflow. Setting up a conceptual data model also provides business stakeholders with a way to identify a whole range of business questions that need to be answered before building anything physical. Questions like: Are the Customer and Attendee the same entity (and why are they not)? Can one Attendee buy multiple Tickets? What uniquely identifies a specific Event?</p><p>Additionally, the conceptual data model depicts very complex business processes in an easier-to-consume way. Instead of going through pages and pages of written documentation, you can take a look at the illustration of entities and relationships, all explained in a user-friendly way, and quickly understand the core elements of the business process.</p><h2><strong>Logical model: The blueprint</strong></h2><p>Once business and data teams align on the conceptual data model, the next step is designing a <strong>logical data model</strong>. In this stage, we are building upon the previous step by identifying the exact structure of the entities and providing more details about the relationships between them. You should identify all the attributes of interest for each entity, as well as relationship cardinality.</p><p>Note that, just as during the conceptual data modeling phase, we&#8217;re still not talking about any specific platform or solution. The focus is still on understanding business requirements and how these requirements can be efficiently translated into a data model.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!iGag!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd11a9128-492d-452f-9ffd-156d7869d2d0_843x674.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!iGag!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd11a9128-492d-452f-9ffd-156d7869d2d0_843x674.png 424w, /__u/substackcdn.com/image/fetch/$s_!iGag!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd11a9128-492d-452f-9ffd-156d7869d2d0_843x674.png 848w, /__u/substackcdn.com/image/fetch/$s_!iGag!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd11a9128-492d-452f-9ffd-156d7869d2d0_843x674.png 1272w, /__u/substackcdn.com/image/fetch/$s_!iGag!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd11a9128-492d-452f-9ffd-156d7869d2d0_843x674.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!iGag!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd11a9128-492d-452f-9ffd-156d7869d2d0_843x674.png" width="843" height="674" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d11a9128-492d-452f-9ffd-156d7869d2d0_843x674.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:674,&quot;width&quot;:843,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!iGag!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd11a9128-492d-452f-9ffd-156d7869d2d0_843x674.png 424w, /__u/substackcdn.com/image/fetch/$s_!iGag!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd11a9128-492d-452f-9ffd-156d7869d2d0_843x674.png 848w, /__u/substackcdn.com/image/fetch/$s_!iGag!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd11a9128-492d-452f-9ffd-156d7869d2d0_843x674.png 1272w, /__u/substackcdn.com/image/fetch/$s_!iGag!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd11a9128-492d-452f-9ffd-156d7869d2d0_843x674.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>There are several steps to ensure that the conceptual model successfully evolves into a logical model. You need to <strong>identify entity attributes</strong> - the specific data points each entity should contain. Then <strong>identify candidate keys</strong> - which attribute, or set of attributes, uniquely identifies a specific entity. From there, <strong>choose primary keys</strong> based on the findings from the previous step. You&#8217;ll also <strong>apply normalization or denormalization</strong> as appropriate (more on that later). Next, <strong>set relationships between entities</strong>, validating how entities interconnect and, if needed, breaking down complex entities into multiple simpler ones. Then <strong>identify the relationship cardinality</strong> &#8212; defining how many instances of one entity relate to instances of another. There are three main types: one-to-one (1:1), one-to-many (1:M), and many-to-many (M:M). Finally, and critically, <strong>iterate and fine-tune</strong>. In real life, it&#8217;s almost impossible to find a data model that suits everyone&#8217;s needs immediately. Ask for feedback from business stakeholders and fine-tune the logical data model before materializing it in physical form.</p><p>The potential gains of the logical model are significant. First, it serves as the best quality assurance test, identifying gaps and issues in understanding the business workflow, thereby saving you a significant amount of time and effort in the long run. It&#8217;s much easier and less costly to fix issues at this stage, before locking into a specific platform. Building a logical data model can be considered part of the agile data modeling cycle, which ensures more robust, scalable, and future-proof models. And ultimately, it serves as a blueprint for the final physical implementation.</p><h2><strong>Physical model: The construction plan</strong></h2><p>A <strong>physical data model</strong> represents the final touch: how the data model will actually be implemented in a specific database. Unlike conceptual and logical data models, which are platform and solution-agnostic, physical implementation requires defining low-level details that may be specific to a certain database provider.</p><p>There&#8217;s a whole list of necessary steps to make your physical data model implementation successful. You need to <strong>choose the platform</strong> - this decision shapes your future design principles. Then <strong>translate logical entities into physical tables</strong> - since a real database doesn&#8217;t support the abstract level of a logical entity, you need to define the data type of each attribute: whole number, decimal number, or plain text. Additionally, each physical table should rely on keys (primary, foreign, unique) to ensure data integrity.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!y_gF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f7e8358-179c-4bc1-937e-7135872b8402_831x646.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!y_gF!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f7e8358-179c-4bc1-937e-7135872b8402_831x646.png 424w, /__u/substackcdn.com/image/fetch/$s_!y_gF!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f7e8358-179c-4bc1-937e-7135872b8402_831x646.png 848w, /__u/substackcdn.com/image/fetch/$s_!y_gF!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f7e8358-179c-4bc1-937e-7135872b8402_831x646.png 1272w, /__u/substackcdn.com/image/fetch/$s_!y_gF!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f7e8358-179c-4bc1-937e-7135872b8402_831x646.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!y_gF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f7e8358-179c-4bc1-937e-7135872b8402_831x646.png" width="831" height="646" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7f7e8358-179c-4bc1-937e-7135872b8402_831x646.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:646,&quot;width&quot;:831,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!y_gF!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f7e8358-179c-4bc1-937e-7135872b8402_831x646.png 424w, /__u/substackcdn.com/image/fetch/$s_!y_gF!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f7e8358-179c-4bc1-937e-7135872b8402_831x646.png 848w, /__u/substackcdn.com/image/fetch/$s_!y_gF!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f7e8358-179c-4bc1-937e-7135872b8402_831x646.png 1272w, /__u/substackcdn.com/image/fetch/$s_!y_gF!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f7e8358-179c-4bc1-937e-7135872b8402_831x646.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>You must also <strong>establish relationships</strong> based on the key columns. <strong>Apply normalization or denormalization</strong> as appropriate - remember, in OLTP systems, tables should be normalized (typically to 3NF) to reduce redundancy and support write operations efficiently, while in OLAP systems, data may be denormalized to eliminate joins and make read operations more performant.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p><strong>Define table constraints</strong> to ensure data integrity - not just keys, but logical checks too. For example, if your table stores student grades in the range of 5 to 10, why not define that constraint on the column, preventing the insertion of nonsensical values?</p><p><strong>Create indexes and/or partitions</strong> - these are special physical data structures that increase the efficiency of the data model. Table partitioning, for example, splits one big table into multiple smaller sub-tables, reducing scanning time during query execution. A classic approach is partitioning by calendar year. And finally, <strong>extend with programmatic objects</strong> - stored procedures, functions, triggers &#8212; that are de facto standard in almost every data platform solution.</p><p>The main benefit of the physical data model is to ensure efficiency, optimal performance, and scalability. When we talk about efficiency, we have in mind the two most precious business assets: time and money. Unless you think that time = money, then you have only one asset to consider. The more efficient your data model, the more users it can serve, the faster it can serve them, and that, in the end, brings more money to the business.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!x6cV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ab6cdc7-ece6-43ca-b280-322d43c04a6d_836x371.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!x6cV!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ab6cdc7-ece6-43ca-b280-322d43c04a6d_836x371.png 424w, /__u/substackcdn.com/image/fetch/$s_!x6cV!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ab6cdc7-ece6-43ca-b280-322d43c04a6d_836x371.png 848w, /__u/substackcdn.com/image/fetch/$s_!x6cV!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ab6cdc7-ece6-43ca-b280-322d43c04a6d_836x371.png 1272w, /__u/substackcdn.com/image/fetch/$s_!x6cV!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ab6cdc7-ece6-43ca-b280-322d43c04a6d_836x371.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!x6cV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ab6cdc7-ece6-43ca-b280-322d43c04a6d_836x371.png" width="836" height="371" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8ab6cdc7-ece6-43ca-b280-322d43c04a6d_836x371.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:371,&quot;width&quot;:836,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:45049,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/188052022?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ab6cdc7-ece6-43ca-b280-322d43c04a6d_836x371.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!x6cV!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ab6cdc7-ece6-43ca-b280-322d43c04a6d_836x371.png 424w, /__u/substackcdn.com/image/fetch/$s_!x6cV!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ab6cdc7-ece6-43ca-b280-322d43c04a6d_836x371.png 848w, /__u/substackcdn.com/image/fetch/$s_!x6cV!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ab6cdc7-ece6-43ca-b280-322d43c04a6d_836x371.png 1272w, /__u/substackcdn.com/image/fetch/$s_!x6cV!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ab6cdc7-ece6-43ca-b280-322d43c04a6d_836x371.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!qcqt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575e4e82-23c4-4d47-adb4-63f6b3ad0f67_873x360.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!qcqt!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575e4e82-23c4-4d47-adb4-63f6b3ad0f67_873x360.png 424w, /__u/substackcdn.com/image/fetch/$s_!qcqt!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575e4e82-23c4-4d47-adb4-63f6b3ad0f67_873x360.png 848w, /__u/substackcdn.com/image/fetch/$s_!qcqt!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575e4e82-23c4-4d47-adb4-63f6b3ad0f67_873x360.png 1272w, /__u/substackcdn.com/image/fetch/$s_!qcqt!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575e4e82-23c4-4d47-adb4-63f6b3ad0f67_873x360.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!qcqt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575e4e82-23c4-4d47-adb4-63f6b3ad0f67_873x360.png" width="873" height="360" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/575e4e82-23c4-4d47-adb4-63f6b3ad0f67_873x360.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:360,&quot;width&quot;:873,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:55135,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/188052022?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575e4e82-23c4-4d47-adb4-63f6b3ad0f67_873x360.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!qcqt!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575e4e82-23c4-4d47-adb4-63f6b3ad0f67_873x360.png 424w, /__u/substackcdn.com/image/fetch/$s_!qcqt!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575e4e82-23c4-4d47-adb4-63f6b3ad0f67_873x360.png 848w, /__u/substackcdn.com/image/fetch/$s_!qcqt!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575e4e82-23c4-4d47-adb4-63f6b3ad0f67_873x360.png 1272w, /__u/substackcdn.com/image/fetch/$s_!qcqt!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575e4e82-23c4-4d47-adb4-63f6b3ad0f67_873x360.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Each level adds detail - like zooming into a map</em></figcaption></figure></div><p></p><blockquote><p><em>Why bother with all three? Because fixing a gap in the conceptual model costs a conversation. Fixing it in the physical model costs a sprint. The earlier you catch issues, the cheaper they are to resolve.</em></p></blockquote><h2><strong>OLTP vs. OLAP: Writing vs. Reading</strong></h2><h3><strong>Online Transaction Processing Systems (OLTP)</strong></h3><p>To be a successful analytics engineer, you must first understand where your data comes from. The vast majority of business data isn&#8217;t created for analytics. It&#8217;s created by applications that run the daily operations of the business: a point-of-sale system, a customer relationship management (CRM) tool, an e-commerce website&#8217;s backend database, and many more.</p><p>These source systems are called <strong>online transaction processing (OLTP)</strong> systems. They are designed and optimized for one primary goal: to process a high volume of transactions quickly and reliably. OLTP systems need to instantly confirm a customer&#8217;s order or update their shipping address. Speed and data integrity for <em>writing</em> data are paramount.</p><p>To achieve this, OLTP systems use a relational data model that is highly <em>normalized</em>. Let&#8217;s dive deep into what that actually means.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!XtBN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe52e9773-7b8f-4692-b302-6ebfe52487ab_878x291.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!XtBN!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe52e9773-7b8f-4692-b302-6ebfe52487ab_878x291.png 424w, /__u/substackcdn.com/image/fetch/$s_!XtBN!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe52e9773-7b8f-4692-b302-6ebfe52487ab_878x291.png 848w, /__u/substackcdn.com/image/fetch/$s_!XtBN!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe52e9773-7b8f-4692-b302-6ebfe52487ab_878x291.png 1272w, /__u/substackcdn.com/image/fetch/$s_!XtBN!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe52e9773-7b8f-4692-b302-6ebfe52487ab_878x291.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!XtBN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe52e9773-7b8f-4692-b302-6ebfe52487ab_878x291.png" width="878" height="291" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e52e9773-7b8f-4692-b302-6ebfe52487ab_878x291.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:291,&quot;width&quot;:878,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:31414,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/188052022?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe52e9773-7b8f-4692-b302-6ebfe52487ab_878x291.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!XtBN!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe52e9773-7b8f-4692-b302-6ebfe52487ab_878x291.png 424w, /__u/substackcdn.com/image/fetch/$s_!XtBN!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe52e9773-7b8f-4692-b302-6ebfe52487ab_878x291.png 848w, /__u/substackcdn.com/image/fetch/$s_!XtBN!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe52e9773-7b8f-4692-b302-6ebfe52487ab_878x291.png 1272w, /__u/substackcdn.com/image/fetch/$s_!XtBN!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe52e9773-7b8f-4692-b302-6ebfe52487ab_878x291.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>The core job: transforming write-optimized data into read-optimized data</em></figcaption></figure></div><h3><strong>Normalization: The library card catalog</strong></h3><p><strong>Normalization</strong> is the process of organizing data in a database to minimize data redundancy and improve data integrity. In simple terms, it means you don&#8217;t repeat information if you don&#8217;t have to.</p><p>Imagine a library in the pre-computer era. Each and every book has an index card. If the author&#8217;s full name, nationality, and date of birth had to be written on every card for every book an author wrote, it would be tedious. You&#8217;d be writing &#8220;William Shakespeare, English, 1564-1616&#8221; on the cards for Hamlet, Macbeth, and Romeo and Juliet. And if you discovered a mistake in Shakespeare&#8217;s birth year, you&#8217;d have to find and correct every single card for every book he wrote. It&#8217;s almost guaranteed you&#8217;d miss one.</p><p>A smart librarian would use normalization. They would create a separate Authors card catalog. The card for Hamlet would just say &#8220;Author ID: 302.&#8221; You would then go to the Authors catalog, look up ID 302, and find all of William Shakespeare&#8217;s details in one single place. If you need to make a correction, you only have to do it once.</p><h4><strong>Normal Forms</strong></h4><p>This is the essence of normalization: breaking data down into many small, discrete tables to avoid repeating ourselves. The <em>rules</em> for doing this are called <strong>normal forms</strong> (1NF, 2NF, 3NF...). There are seven normal forms in total, although in most real-life scenarios, normalizing data to the third normal form (3NF) is considered optimal.</p><p>Let&#8217;s briefly break down the key principles behind the first three normal forms. <strong>First normal form (1NF)</strong> eliminates repeating groups. Each cell should hold a single value, and each record should be unique. <strong>Second normal form (2NF)</strong> builds on 1NF and ensures that all attributes depend on the <em>entire</em> primary key - this is mainly relevant for tables with composite keys. <strong>Third normal form (3NF)</strong> builds on 2NF and ensures that no attribute depends on another non-key attribute. This is the library example: AuthorNationality doesn&#8217;t depend on the book; it depends on the author. So, you move AuthorNationality to the Authors table.</p><p>Let&#8217;s look at a before-and-after example. Imagine a non-normalized spreadsheet for tracking orders: OrderID, OrderDate, CustomerID, CustomerName, CustomerCity, ProductID, ProductName, Qty, UnitPrice - all in one flat table. Notice all the repetition? John Smith&#8217;s name and city are repeated. Widget A&#8217;s name and price are repeated. To update Widget A&#8217;s price, you have to change it in two places, and that&#8217;s just in a tiny sample.</p><p>To normalize this data to 3NF, we break it down into four separate tables: a <strong>Customer</strong> table (CustomerID, CustomerName, CustomerCity), a <strong>Product</strong> table (ProductID, ProductName, UnitPrice), an <strong>Orders</strong> table (OrderID, OrderDate, CustomerID), and an <strong>OrderDetails</strong> table (OrderID, ProductID, Qty). Now if John Smith moves to Los Angeles, we update his city in exactly one place. If the price of Widget A changes, we update it in exactly one place. This is perfect for the OLTP system.</p><p>However, life is not a fairy tale. And here&#8217;s the twist. While this normalized structure is brilliant for <em>writing</em> data, it&#8217;s inefficient for <em>analyzing</em> it. To answer a simple question like <em>&#8220;What is the total sales amount for products in the &#8216;Widgets&#8217; category to customers in New York?&#8221;</em> you&#8217;d have to perform multiple complex JOIN operations across all these little tables. With dozens or even hundreds of tables, these queries become incredibly slow and a nightmare for your business users to write.</p><p>This leads us to the core job of an analytics engineer: <strong>transforming data from a model optimized for writing (OLTP) to one optimized for reading (OLAP)</strong>.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>Online Analytical Processing Systems (OLAP)</strong></h2><p>If OLTP systems are for <em>running</em> the business, <strong>online analytical processing (OLAP)</strong> systems are for <em>understanding</em> the business. Our main goal as analytics engineers is to build OLAP systems. These systems are designed to answer complex business questions over large volumes of data as quickly as possible.</p><h3><strong>Denormalization: The strategic reversal</strong></h3><p>Let&#8217;s kick it off by explaining <strong>denormalization</strong>. As you may rightly assume, with denormalization we are strategically reversing the process of normalization that we previously examined. We intentionally re-combine many small tables into a few larger, wider tables, even if it means repeating some data and creating redundancy.</p><p>Denormalization is essentially a trade-off: we are sacrificing a bit of storage space and update operation efficiency to obtain potentially massive gains in query performance and ease of use. Denormalization is one of the core concepts for implementing dimensional data modeling techniques, covered next.</p><h2><strong>Dimensional modeling: The Star schema and beyond</strong></h2><p>A <strong>dimensional model</strong> represents the gold-standard paradigm when designing OLAP systems. Before we explain the dimensional aspect, let's have a brief history lesson. Ralph Kimball's book <em>The Data Warehouse Toolkit</em> (Wiley, 1996) is still considered a dimensional modeling bible. In it, Kimball introduced a completely new approach to modeling data for analytical workloads - the so-called bottom-up approach. The focus is on identifying key business processes within the organization and modeling these first, before introducing additional business processes.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!4xEP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6966be13-c87a-4653-9e71-bd73d316cf6c_917x227.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!4xEP!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6966be13-c87a-4653-9e71-bd73d316cf6c_917x227.png 424w, /__u/substackcdn.com/image/fetch/$s_!4xEP!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6966be13-c87a-4653-9e71-bd73d316cf6c_917x227.png 848w, /__u/substackcdn.com/image/fetch/$s_!4xEP!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6966be13-c87a-4653-9e71-bd73d316cf6c_917x227.png 1272w, /__u/substackcdn.com/image/fetch/$s_!4xEP!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6966be13-c87a-4653-9e71-bd73d316cf6c_917x227.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!4xEP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6966be13-c87a-4653-9e71-bd73d316cf6c_917x227.png" width="917" height="227" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6966be13-c87a-4653-9e71-bd73d316cf6c_917x227.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:227,&quot;width&quot;:917,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:36593,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/188052022?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6966be13-c87a-4653-9e71-bd73d316cf6c_917x227.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!4xEP!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6966be13-c87a-4653-9e71-bd73d316cf6c_917x227.png 424w, /__u/substackcdn.com/image/fetch/$s_!4xEP!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6966be13-c87a-4653-9e71-bd73d316cf6c_917x227.png 848w, /__u/substackcdn.com/image/fetch/$s_!4xEP!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6966be13-c87a-4653-9e71-bd73d316cf6c_917x227.png 1272w, /__u/substackcdn.com/image/fetch/$s_!4xEP!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6966be13-c87a-4653-9e71-bd73d316cf6c_917x227.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption"><em>Dimensions answer the W-questions &#183; Facts capture the measurements</em></figcaption></figure></div><p>Kimball&#8217;s approach is elegant in its simplicity. It consists of four steps, each based on a decision:</p>
      <p>
          <a href="/__u/datamozart.substack.com/p/data-modeling-for-analytics-engineers">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Beyond the Lakehouse: First Thoughts on Fabric IQ]]></title><description><![CDATA[Announced at Microsoft Ignite 2025, Fabric IQ represents a fundamental shift in how Microsoft Fabric operates]]></description><link>https://datamozart.substack.com/p/beyond-the-lakehouse-first-thoughts</link><guid isPermaLink="false">https://datamozart.substack.com/p/beyond-the-lakehouse-first-thoughts</guid><dc:creator><![CDATA[Nikola Ilic]]></dc:creator><pubDate>Sat, 24 Jan 2026 10:25:31 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Ssxn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcdd4cca-414b-40a6-bfaa-2b6ffaafe4d4_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!Ssxn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcdd4cca-414b-40a6-bfaa-2b6ffaafe4d4_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!Ssxn!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcdd4cca-414b-40a6-bfaa-2b6ffaafe4d4_1280x720.png 424w, /__u/substackcdn.com/image/fetch/$s_!Ssxn!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcdd4cca-414b-40a6-bfaa-2b6ffaafe4d4_1280x720.png 848w, /__u/substackcdn.com/image/fetch/$s_!Ssxn!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcdd4cca-414b-40a6-bfaa-2b6ffaafe4d4_1280x720.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Ssxn!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcdd4cca-414b-40a6-bfaa-2b6ffaafe4d4_1280x720.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!Ssxn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcdd4cca-414b-40a6-bfaa-2b6ffaafe4d4_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bcdd4cca-414b-40a6-bfaa-2b6ffaafe4d4_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:35885,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/185621073?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcdd4cca-414b-40a6-bfaa-2b6ffaafe4d4_1280x720.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!Ssxn!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcdd4cca-414b-40a6-bfaa-2b6ffaafe4d4_1280x720.png 424w, /__u/substackcdn.com/image/fetch/$s_!Ssxn!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcdd4cca-414b-40a6-bfaa-2b6ffaafe4d4_1280x720.png 848w, /__u/substackcdn.com/image/fetch/$s_!Ssxn!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcdd4cca-414b-40a6-bfaa-2b6ffaafe4d4_1280x720.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Ssxn!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcdd4cca-414b-40a6-bfaa-2b6ffaafe4d4_1280x720.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If you&#8217;ve been working in enterprise data for a while, you&#8217;ve probably experienced the following scenario: the marketing team calls a customer anyone who&#8217;s ever downloaded a whitepaper from your company&#8217;s website. Sales defines a customer as someone with an active contract. And finance? They only count someone as a customer after the first payment clears. Same word, three different meanings, and chaos in every cross-functional dashboard. Welcome to the world of semantic drift - the silent killer of data initiatives that Microsoft Fabric IQ is designed to eliminate.</p><p>Announced at Microsoft Ignite 2025, Fabric IQ represents a fundamental shift in how Microsoft Fabric operates. While the rest of the platform has been laser-focused on where your data lives (lakehouses, warehouses, eventhouses), Fabric IQ is obsessed with what your data <em>means</em>.</p><h2><em><strong>Ontology at the core</strong></em></h2><p>At its core sits the <em>Ontology</em> item - think of it as the Rosetta Stone for your business. An ontology is a shared, machine-understandable vocabulary that defines the things in your environment (represented as entity types), their facts (represented as properties), and the ways they connect (represented as relationships). If you&#8217;re thinking &#8220;this sounds like a fancy data model,&#8221; you&#8217;re not far from the truth. However, there is one critical difference: unlike a data model that lives in a single Power BI semantic model or database schema, an ontology sits above all your physical data sources and provides a single source of truth that every tool, every analyst, and every AI agent can reference.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>The following illustration shows the simplified overview of the Fabric IQ architecture:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!2tHj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5244aa0-3993-4544-a357-30898a949c92_1024x842.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!2tHj!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5244aa0-3993-4544-a357-30898a949c92_1024x842.png 424w, /__u/substackcdn.com/image/fetch/$s_!2tHj!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5244aa0-3993-4544-a357-30898a949c92_1024x842.png 848w, /__u/substackcdn.com/image/fetch/$s_!2tHj!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5244aa0-3993-4544-a357-30898a949c92_1024x842.png 1272w, /__u/substackcdn.com/image/fetch/$s_!2tHj!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5244aa0-3993-4544-a357-30898a949c92_1024x842.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!2tHj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5244aa0-3993-4544-a357-30898a949c92_1024x842.png" width="1024" height="842" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5244aa0-3993-4544-a357-30898a949c92_1024x842.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:842,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!2tHj!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5244aa0-3993-4544-a357-30898a949c92_1024x842.png 424w, /__u/substackcdn.com/image/fetch/$s_!2tHj!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5244aa0-3993-4544-a357-30898a949c92_1024x842.png 848w, /__u/substackcdn.com/image/fetch/$s_!2tHj!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5244aa0-3993-4544-a357-30898a949c92_1024x842.png 1272w, /__u/substackcdn.com/image/fetch/$s_!2tHj!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5244aa0-3993-4544-a357-30898a949c92_1024x842.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><em><strong>The power of Binding</strong></em></h2><p>The power of Fabric IQ happens through a concept called <em>binding.</em> When you create an ontology, you&#8217;re not just drawing boxes and arrows in a diagram - you&#8217;re rather connecting those abstract business concepts to real data living across your OneLake ecosystem. A single entity type like Customer can be bound to columns from your lakehouse tables, eventhouse streams, and even existing Power BI semantic models. The ontology handles the heavy lifting: it maps data types, defines identity keys, describes how columns map to properties, and establishes how those keys create relationships across multiple sources. This means when your marketing automation system, your CRM, and your billing platform all have slightly different customer records, the ontology can reconcile them into a single, coherent business entity. Updates in upstream sources require manual refresh, but once refreshed, every downstream consumer, whether it&#8217;s a Power BI report, a Fabric Data Agent, or an Operations Agent, sees the same unified view.</p><p><em><strong>You might be wondering: &#8220;Can&#8217;t I just standardize my data upfront in a data warehouse and call it a day?&#8221; Well, sure you can. But, that only works if you control every single data source and can enforce perfect consistency at ingestion time. In the real world, you&#8217;re dealing with acquired companies running different systems, third-party APIs with their own schemas, and legacy databases that predate your entire career. The ontology approach says: &#8220;Let the data be messy at the source level, but enforce semantic consistency at the consumption layer.&#8221; It&#8217;s the difference between trying to make everyone speak the same language versus having a really good translator.</strong></em></p><p>What makes Fabric IQ particularly powerful for Real-Time Intelligence workloads is its integration with Graph capabilities in Microsoft Fabric. While traditional analytics asks &#8220;what happened?&#8221; and &#8220;why did it happen?&#8221;, graph-enabled ontologies let you traverse complex relationships to answer questions like &#8220;Which stores have fewer ice cream sales when their freezer temperature rises above -18&#176;C?&#8221; or &#8220;Find all shipments exposed to risky routes and the related cold chain breaches that resulted.&#8221;</p><p>The ontology declares which things connect and why, while the Graph engine stores and computes those traversals with sub-second performance. This isn&#8217;t just about drawing pretty network diagrams. It&#8217;s more about enabling AI agents and analysts to follow cause-and-effect chains across domains that traditional SQL joins simply can&#8217;t handle efficiently.</p><p>The real-world applications of Fabric IQ are already emerging across industries. Some companies are leveraging ontology in Fabric IQ to unify transmission and distribution grid data, breaking down the silos created by traditional relational databases. By structuring relationships between assets, events, and operational domains, such as weather systems, outage management systems, GIS data, and telemetry data, they&#8217;re building a foundation for advanced forecasting and risk evaluation.</p><p>In the retail sector, companies are using ontologies to link sales transactions, supply chain events, IoT sensor data, and customer behavior into unified business entities that Operations Agents can monitor in real-time. When a freezer temperature sensor crosses a threshold, the agent doesn&#8217;t just send an alert - it understands the downstream implications for inventory spoilage, sales impact, and customer satisfaction, because all those concepts are explicitly modeled in the ontology.</p><p>Despite its emerging popularity, Fabric IQ is not a silver bullet. If your organization struggles to agree on basic definitions now, an ontology won&#8217;t magically create consensus. What it will do is make those disagreements painfully obvious. The power comes when you commit to treating the ontology as a living, governed artifact with clear ownership, approval workflows, and version control. When that happens, you unlock benefits that cascade through your entire data ecosystem: consistent semantics across tools, fewer one-off models, less duplicated logic, and most importantly, AI agents that can move beyond answering questions to taking safe, auditable actions.</p><p>Because when business rules and constraints live in the ontology rather than scattered across 47 different Power BI semantic models and Fabric notebooks, your AI systems finally have the context they need to not just be helpful, but to actually understand your business.</p><h2><em><strong>Build your first Ontology</strong></em></h2><p>Let&#8217;s quickly see Fabric IQ in action. In this section, we will build our first Ontology. At the moment of writing, there are two options for creating an ontology:</p><ul><li><p><strong>Generate Ontology from semantic model</strong> - automatically generates an ontology on top of the existing Power BI semantic model</p></li><li><p><strong>Build directly from OneLake</strong> - manually create the ontology by binding properties directly from OneLake</p></li></ul><p>In our example, we will build an Ontology directly from OneLake. Before we start, there are certain prerequisites - you must enable specific settings on your Fabric tenant. All these settings can be found under the Tenant settings tab of the Admin portal.</p><ul><li><p>Enable Ontology item</p></li><li><p>User can create Graph</p></li><li><p>Allow XMLA endpoints and Analyze in Excel with on-premises semantic models - required only if you want to generate an ontology from a semantic model</p></li></ul><p>The following settings are required only if you want to use ontology with a Fabric Data agent:</p><ul><li><p>Users can create and share Data agent item types</p></li><li><p>Users can use Copilot and other features powered by Azure OpenAI</p></li><li><p>Data sent to Azure OpenAI can be processed outside your capacity&#8217;s geographic region, compliance boundary, or national cloud instance</p></li><li><p>Data sent to Azure OpenAI can be stored outside your capacity&#8217;s geographic region, compliance boundary, or national cloud instance</p></li></ul><p>For this example, we will need some sample data. You can download all the necessary files from <a href="https://github.com/microsoft/fabric-samples/tree/main/docs-samples/iq">here</a>.</p><p>Next, let&#8217;s make this data available in the lakehouse. Let&#8217;s upload the files to the Files section of the lakehouse, and then transform them to Delta tables in the Tables section, as shown below. We will do that for all the files except the FreezerTelemetry file.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!FiQF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff26e46f5-f6a9-4d1e-a578-77d175cc8b4d_1024x269.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!FiQF!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff26e46f5-f6a9-4d1e-a578-77d175cc8b4d_1024x269.png 424w, /__u/substackcdn.com/image/fetch/$s_!FiQF!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff26e46f5-f6a9-4d1e-a578-77d175cc8b4d_1024x269.png 848w, /__u/substackcdn.com/image/fetch/$s_!FiQF!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff26e46f5-f6a9-4d1e-a578-77d175cc8b4d_1024x269.png 1272w, /__u/substackcdn.com/image/fetch/$s_!FiQF!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff26e46f5-f6a9-4d1e-a578-77d175cc8b4d_1024x269.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!FiQF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff26e46f5-f6a9-4d1e-a578-77d175cc8b4d_1024x269.png" width="1024" height="269" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f26e46f5-f6a9-4d1e-a578-77d175cc8b4d_1024x269.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:269,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!FiQF!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff26e46f5-f6a9-4d1e-a578-77d175cc8b4d_1024x269.png 424w, /__u/substackcdn.com/image/fetch/$s_!FiQF!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff26e46f5-f6a9-4d1e-a578-77d175cc8b4d_1024x269.png 848w, /__u/substackcdn.com/image/fetch/$s_!FiQF!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff26e46f5-f6a9-4d1e-a578-77d175cc8b4d_1024x269.png 1272w, /__u/substackcdn.com/image/fetch/$s_!FiQF!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff26e46f5-f6a9-4d1e-a578-77d175cc8b4d_1024x269.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Next, we will create a new Eventhouse in the same Fabric workspace. Once the eventhouse is created, click on the three dots next to the default KQL database, choose Get data, and then Local file, as illustrated below:</p>
      <p>
          <a href="/__u/datamozart.substack.com/p/beyond-the-lakehouse-first-thoughts">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Core Analytics Engineering: Data Architectures]]></title><description><![CDATA[Get the data architecture right, and everything else becomes easier.]]></description><link>https://datamozart.substack.com/p/core-analytics-engineering-data-architectures</link><guid isPermaLink="false">https://datamozart.substack.com/p/core-analytics-engineering-data-architectures</guid><dc:creator><![CDATA[Nikola Ilic]]></dc:creator><pubDate>Sat, 27 Dec 2025 09:32:15 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!XEHQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fbc6f3e-3362-42de-9cb4-ec522dfddbcc_1408x598.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!XEHQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fbc6f3e-3362-42de-9cb4-ec522dfddbcc_1408x598.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!XEHQ!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fbc6f3e-3362-42de-9cb4-ec522dfddbcc_1408x598.png 424w, /__u/substackcdn.com/image/fetch/$s_!XEHQ!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fbc6f3e-3362-42de-9cb4-ec522dfddbcc_1408x598.png 848w, /__u/substackcdn.com/image/fetch/$s_!XEHQ!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fbc6f3e-3362-42de-9cb4-ec522dfddbcc_1408x598.png 1272w, /__u/substackcdn.com/image/fetch/$s_!XEHQ!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fbc6f3e-3362-42de-9cb4-ec522dfddbcc_1408x598.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!XEHQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fbc6f3e-3362-42de-9cb4-ec522dfddbcc_1408x598.png" width="1408" height="598" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8fbc6f3e-3362-42de-9cb4-ec522dfddbcc_1408x598.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:598,&quot;width&quot;:1408,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1323053,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/178416456?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fbc6f3e-3362-42de-9cb4-ec522dfddbcc_1408x598.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!XEHQ!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fbc6f3e-3362-42de-9cb4-ec522dfddbcc_1408x598.png 424w, /__u/substackcdn.com/image/fetch/$s_!XEHQ!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fbc6f3e-3362-42de-9cb4-ec522dfddbcc_1408x598.png 848w, /__u/substackcdn.com/image/fetch/$s_!XEHQ!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fbc6f3e-3362-42de-9cb4-ec522dfddbcc_1408x598.png 1272w, /__u/substackcdn.com/image/fetch/$s_!XEHQ!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fbc6f3e-3362-42de-9cb4-ec522dfddbcc_1408x598.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Before we dive into the technical details, let&#8217;s talk about what data architecture really is. At its core, <em>data architecture</em> is just the set of rules, standards, and patterns that govern how data flows through your organization. It&#8217;s the blueprint that determines the following:</p><ul><li><p>Where different types of data live</p></li><li><p>How data moves from system to system</p></li><li><p>What happens to data as it gets transformed</p></li><li><p>Who has access to what data</p></li><li><p>How data quality is maintained</p></li><li><p>How new data sources get integrated</p></li></ul><p>Think of it as the layout of a city. You have residential areas, commercial districts, industrial zones, and transportation networks that connect everything together. Each zone serves a specific purpose, and the way they&#8217;re connected determines how efficiently the city functions.</p><p>In the data world, your architecture determines whether your organization is like a well-planned city with efficient highways and clear zoning, or like a metropolis that grew without any planning and now has traffic jams everywhere.</p><p>Here&#8217;s a story that illustrates this perfectly. We once worked with a company that had grown rapidly through acquisitions. They had inherited data systems from each company they bought, and nobody had ever taken the time to think about how all of it fit together.</p><p>Their data &#8220;architecture&#8221; looked something like this:</p><ul><li><p>Customer data residing in five different CRM systems</p></li><li><p>Financial data split between three different ERPs (Enterprise Resource Planning)</p></li><li><p>Marketing data scattered across dozens of disparate solutions</p></li><li><p>Each system had its own definition of basic concepts like <em>customer</em> and <em>revenue</em></p></li><li><p>Getting answers to simple questions required manually combining data from multiple sources</p></li></ul><p>The outcome? Their &#8220;weekly&#8221; business review actually took two weeks to prepare because analysts spent most of their time just figuring out how to join the data together. Leadership couldn&#8217;t make quick decisions because they never trusted the numbers. And the data team was constantly putting out fires instead of providing strategic value.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share Head First Data&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/datamozart.substack.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Head First Data</span></a></p><p>Six months later, after implementing a well-thought-out data architecture, the same company could do all of this:</p><ul><li><p>Generate their weekly business review in under two hours</p></li><li><p>Answer ad-hoc questions from leadership in minutes instead of days</p></li><li><p>Trust their metrics enough to base major business decisions on them</p></li><li><p>Onboard new data sources in days instead of months</p></li></ul><p>The difference wasn&#8217;t the latest technology or huge budgets. It was simply having a thoughtful approach to how data should be organized and managed.</p><p>And as an analytics engineer, understanding data architecture isn&#8217;t just helpful &#8211; it&#8217;s absolutely essential. Here&#8217;s the reasoning: every single day, you&#8217;re going to make decisions about how to structure data, where to store it, how to transform it, and how to make it accessible to others. These decisions might seem minor in the moment&#8212;<em>Should I create this as a view or a table?</em> <em>Where should I put this transformation logic?</em> <em>How should I organize these datasets?</em>but they add up together to create the foundation that your entire analytics ecosystem sits on.</p><p>In the following sections, we&#8217;ll introduce the core data architectural types and their main concepts, so that once you start designing your own analytics solutions, you&#8217;ll have a thorough understanding of both the strengths and weaknesses of each of these architectures. Please bear in mind that this is by no means a definitive guide to data architectures, as we don&#8217;t have the space to delve into the nitty-gritty details of each type. If you want to know each data architecture type in more depth, we recommend the book <em><a href="https://learning.oreilly.com/library/view/deciphering-data-architectures/9781098150754/">Deciphering Data Architectures</a></em> by James Serra (O&#8217;Reilly, 2024).</p><p>Fasten your seatbelts, as we are now taking you on a journey through the history of data architectures!</p><h1>The Data Architecture Evolution</h1><p> The current data architecture landscape has a long history. As with any kind of technology, data architectures have been evolving to support the latest innovations and requirements. In the following sections, we will discuss key characteristics of the following data architectures:</p><ul><li><p>Relational databases</p></li><li><p>Relational data warehouses</p></li><li><p>Data lakes</p></li><li><p>Data lakehouses</p></li><li><p>Data fabric</p></li><li><p>Data mesh</p></li><li><p>Event-based architecture</p></li></ul><p><em><strong>This is the excerpt from the early release of the &#8220;Analytics Engineering with Microsoft Fabric and Power BI&#8221; book, which I&#8217;m writing together with Shabnam Watson for O&#8217;Reilly. You can already read the early release, which is updated chapter by chapter, <a href="https://learning.oreilly.com/library/view/-/9798341645868/">here</a>.</strong></em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://learning.oreilly.com/library/view/-/9798341645868/" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!jpiM!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87f915d1-cb1f-4d31-97f1-a2d2e2c83850_814x1069.png 424w, /__u/substackcdn.com/image/fetch/$s_!jpiM!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87f915d1-cb1f-4d31-97f1-a2d2e2c83850_814x1069.png 848w, /__u/substackcdn.com/image/fetch/$s_!jpiM!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87f915d1-cb1f-4d31-97f1-a2d2e2c83850_814x1069.png 1272w, /__u/substackcdn.com/image/fetch/$s_!jpiM!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87f915d1-cb1f-4d31-97f1-a2d2e2c83850_814x1069.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!jpiM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87f915d1-cb1f-4d31-97f1-a2d2e2c83850_814x1069.png" width="814" height="1069" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/87f915d1-cb1f-4d31-97f1-a2d2e2c83850_814x1069.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1069,&quot;width&quot;:814,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:536043,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://learning.oreilly.com/library/view/-/9798341645868/&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/176228111?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87f915d1-cb1f-4d31-97f1-a2d2e2c83850_814x1069.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!jpiM!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87f915d1-cb1f-4d31-97f1-a2d2e2c83850_814x1069.png 424w, /__u/substackcdn.com/image/fetch/$s_!jpiM!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87f915d1-cb1f-4d31-97f1-a2d2e2c83850_814x1069.png 848w, /__u/substackcdn.com/image/fetch/$s_!jpiM!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87f915d1-cb1f-4d31-97f1-a2d2e2c83850_814x1069.png 1272w, /__u/substackcdn.com/image/fetch/$s_!jpiM!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87f915d1-cb1f-4d31-97f1-a2d2e2c83850_814x1069.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Relational Operational Database</h2><p>Relational databases may be rightly considered the <em>fine old wine</em> in the data architecture realm. They have a long history, going all the way to the 1970s, when Edgar F. Codd proposed the relational model as a way to organize data.</p><p>At its core, a <em>relational database</em> is a highly organized, digital filing cabinet. For decades, it&#8217;s been the gold standard for storing business data for an extremely simple reason: it&#8217;s incredibly reliable. Think of each table in the database as a drawer in the cabinet, dedicated to one thing - say, customers or orders. Each <em>row</em> in a table is a single file folder (one customer, one order), and each <em>column</em> is a specific piece of information on a form inside that folder (a customer&#8217;s name, their email address, the order date, and so on).</p><p>The <em>relational</em> part is where the power comes from. It means the database understands how these tables are connected. It knows that the customer X in the <em>Customers</em> drawer is the same Customer X who placed the order in the <em>Orders</em> drawer. This structure is what allows us to ask complex questions using a language called SQL (Structured Query Language). SQL is just how you tell the database: <em>Go get me all the orders placed by customer X.</em></p><p>When you work with these organized systems, you have to follow a strict rule called <em>schema-on-write</em>. Think of building a house: you must have a detailed blueprint (the schema) <em>before</em> you can even start laying the foundation. You define every room, every window, and every doorway upfront. The data must fit this blueprint perfectly when you save - or <em>write</em> - it. This upfront work ensures everything is consistent and the data is trustworthy.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>The opposite approach, common in more flexible systems like data lakes, covered in one of the following sections, is <em>schema-on-read</em>. This is like dumping all your building materials - bricks, wood, windows - into a big pile. There&#8217;s no blueprint to start. You only decide how to structure it all <em>when you need to build something</em>, or when you <em>read</em> the data. It&#8217;s incredibly flexible and great for storing all kinds of messy, unstructured information, but it puts the responsibility of making sense of it all on the person analyzing it later.</p><p>Let&#8217;s break down a typical relational database structure. Figure below displays a simplified relational model that consists of four tables: Customer, Product, Orders, and OrderDetails.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!uTTF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c1aebea-3351-4d09-9b3e-f19e7303ce99_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!uTTF!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c1aebea-3351-4d09-9b3e-f19e7303ce99_1280x720.png 424w, /__u/substackcdn.com/image/fetch/$s_!uTTF!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c1aebea-3351-4d09-9b3e-f19e7303ce99_1280x720.png 848w, /__u/substackcdn.com/image/fetch/$s_!uTTF!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c1aebea-3351-4d09-9b3e-f19e7303ce99_1280x720.png 1272w, /__u/substackcdn.com/image/fetch/$s_!uTTF!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c1aebea-3351-4d09-9b3e-f19e7303ce99_1280x720.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!uTTF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c1aebea-3351-4d09-9b3e-f19e7303ce99_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2c1aebea-3351-4d09-9b3e-f19e7303ce99_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!uTTF!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c1aebea-3351-4d09-9b3e-f19e7303ce99_1280x720.png 424w, /__u/substackcdn.com/image/fetch/$s_!uTTF!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c1aebea-3351-4d09-9b3e-f19e7303ce99_1280x720.png 848w, /__u/substackcdn.com/image/fetch/$s_!uTTF!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c1aebea-3351-4d09-9b3e-f19e7303ce99_1280x720.png 1272w, /__u/substackcdn.com/image/fetch/$s_!uTTF!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c1aebea-3351-4d09-9b3e-f19e7303ce99_1280x720.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If you don&#8217;t understand each piece in this illustration, don&#8217;t worry too much. In the next article, we will cover various data modeling concepts in depth.</p><p>Let&#8217;s briefly look at a couple of key points from the figure above:</p><ul><li><p>Each table stores the information about a specific type of object</p></li><li><p>Each column represents the property, or attribute of the object defined within a table (e.g., FirstName, ProductName, OrderDate, etc.)</p></li><li><p>Some columns are different from others. These columns are used to uniquely identify records and connect tables:</p><ul><li><p><em>Primary key (PK):</em> A unique identifier for each record within a table</p></li><li><p><em>Foreign key (FK):</em> A field in one table that uniquely identifies a record in another table, and as such, is used to connect two tables</p></li></ul></li><li><p>Relationships are connectors between tables. In relational databases, relationships are enforced through schema design and constraints, not by creating separate <em>relationship objects</em> like in some other systems. For example, the CustomerID from the Customer table is also stored in the Orders table as a foreign key, allowing us to see all orders placed by a specific customer. In this particular case, one customer may place multiple orders, so we are talking about the <em>one-to-many</em> (1:M) relationship here. We cover relationships in detail in the next chapter</p></li></ul><p>That example illustrates what&#8217;s known as a <em>normalized</em> structure - a design approach that organizes data efficiently by minimizing redundancy. This normalized structure - and, again, don&#8217;t stress if you don&#8217;t know what <em>normalized structure</em> is yet, as the next chapter explains it in detail - is highly efficient in scenarios when you need to frequently write or update the data. For example, a product name is stored only once in the Product table. Therefore, even if that product is sold five million times, you only need to update its name in one single place within the database, and the change will be immediately applied everywhere.</p><h2>Relational Data Warehouse</h2><p>In bygone days, relational databases were the undisputed kings of the data world. They were, and still are, fantastic at running the daily operations of a business, like processing orders, managing inventory, or updating customer records. We refer to these as <em>operational</em> or <em>transactional</em> (aka OLTP, which stands for online transactional processing) systems, and they must be lightning-fast. When a customer places an order, you can&#8217;t have them waiting around.</p><p>But this created a huge challenge. We call this the <em>Don&#8217;t touch the live system!</em> challenge. Business leaders needed answers to questions such as <em>How many widgets did we sell last quarter?</em> And <em>Which products are most profitable?</em> They needed to <em>analyze</em> the data to <em>find insights</em>.</p><p>But if you tried to run a big, complex analytical query on the same live database that was busy processing thousands of transactions a minute, everything would grind to a halt. It was like trying to do a deep, detailed inventory count in a busy supermarket during peak hours - you&#8217;d just get in everyone&#8217;s way and slow the whole operation down. This conflict between fast ongoing transactions and slow, heavy analysis was a major headache. The solution was to create a separate playground for analysts.</p><p>The invention of the <em>relational data warehouse </em>(RDW) solved the problem brilliantly. The concept was simple yet powerful: instead of running reports on live systems, you create a <em>copy</em> of all your important data from various operational systems (Sales, Inventory, CRM, and so on) and centralize it in a separate, dedicated database built specifically for analysis.</p><p>This was a true game-changer for two main reasons:</p><ul><li><p><em>It protected the live systems.</em> Analysts could now run massive, complex queries in their own playground (the data warehouse) without any risk of slowing down the daily business operations.</p></li><li><p><em>It created a single source of truth.</em> For the first time, you could pull data from your sales system, your inventory system, and your customer relationship system into one place. This allowed you to answer much more sophisticated questions, like <em>What is the lifetime value of customers who buy Product X?</em> as shown in the diagram.</p></li></ul><p>The illustration below best describes the need to implement a data warehouse. You may notice how complicated and inefficient it is to run a report that retrieves the data from multiple applications, where each business unit creates a report that retrieves the data from all the databases connected with each application. It&#8217;s fair to say that this is total chaos.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!j3wO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef814fec-39c6-47d0-af0e-148b985d6ac7_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!j3wO!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef814fec-39c6-47d0-af0e-148b985d6ac7_1280x720.png 424w, /__u/substackcdn.com/image/fetch/$s_!j3wO!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef814fec-39c6-47d0-af0e-148b985d6ac7_1280x720.png 848w, /__u/substackcdn.com/image/fetch/$s_!j3wO!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef814fec-39c6-47d0-af0e-148b985d6ac7_1280x720.png 1272w, /__u/substackcdn.com/image/fetch/$s_!j3wO!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef814fec-39c6-47d0-af0e-148b985d6ac7_1280x720.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!j3wO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef814fec-39c6-47d0-af0e-148b985d6ac7_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ef814fec-39c6-47d0-af0e-148b985d6ac7_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!j3wO!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef814fec-39c6-47d0-af0e-148b985d6ac7_1280x720.png 424w, /__u/substackcdn.com/image/fetch/$s_!j3wO!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef814fec-39c6-47d0-af0e-148b985d6ac7_1280x720.png 848w, /__u/substackcdn.com/image/fetch/$s_!j3wO!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef814fec-39c6-47d0-af0e-148b985d6ac7_1280x720.png 1272w, /__u/substackcdn.com/image/fetch/$s_!j3wO!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef814fec-39c6-47d0-af0e-148b985d6ac7_1280x720.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Business reporting without a data warehouse is chaos</figcaption></figure></div><p>On the other hand, when you copy the data from all the applications into a data warehouse, life becomes much easier, as shown below.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!pzS2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff01a1732-cfc2-4808-bbd3-e532f1d0c955_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!pzS2!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff01a1732-cfc2-4808-bbd3-e532f1d0c955_1280x720.png 424w, /__u/substackcdn.com/image/fetch/$s_!pzS2!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff01a1732-cfc2-4808-bbd3-e532f1d0c955_1280x720.png 848w, /__u/substackcdn.com/image/fetch/$s_!pzS2!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff01a1732-cfc2-4808-bbd3-e532f1d0c955_1280x720.png 1272w, /__u/substackcdn.com/image/fetch/$s_!pzS2!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff01a1732-cfc2-4808-bbd3-e532f1d0c955_1280x720.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!pzS2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff01a1732-cfc2-4808-bbd3-e532f1d0c955_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f01a1732-cfc2-4808-bbd3-e532f1d0c955_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!pzS2!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff01a1732-cfc2-4808-bbd3-e532f1d0c955_1280x720.png 424w, /__u/substackcdn.com/image/fetch/$s_!pzS2!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff01a1732-cfc2-4808-bbd3-e532f1d0c955_1280x720.png 848w, /__u/substackcdn.com/image/fetch/$s_!pzS2!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff01a1732-cfc2-4808-bbd3-e532f1d0c955_1280x720.png 1272w, /__u/substackcdn.com/image/fetch/$s_!pzS2!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff01a1732-cfc2-4808-bbd3-e532f1d0c955_1280x720.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"> Business reporting with a data warehouse - from chaos to clarity</figcaption></figure></div><p>Conceptually, a data warehouse is just a copy of the data stored in transactional processing systems. But, technically, it&#8217;s more than just a copy. It&#8217;s a special type of relational database optimized for high-speed analytical queries on huge volumes of data. It comes with its own powerful compute engine designed to slice, dice, and aggregate information, giving businesses a comprehensive view of their performance that was impossible before.</p><p>Essentially, the data warehouse gave businesses the best of both worlds: rock-solid, fast operational systems and a powerful, dedicated environment for deep data analysis.</p><p>In a typical scenario, a data warehouse is built by leveraging data pipelines that perform three core steps, or actions, called <em>extract, transform, and load</em> (ETL). Chapter 1 already discussed the shift from ETL to ELT paradigm, when we examined the circumstances that enabled the rise of analytics engineering.</p><p>Before examining the two most common approaches to creating a data warehouse, we&#8217;ll first highlight one of the main pitfalls in numerous real-life data warehouse implementations. As in many other scenarios, a lack of planning can easily come back to haunt you. Data warehouses are not an exception to this rule. What usually starts as a simple, one-off solution for a small number of users may later expand and become a real data monster. Thus, you should spend some time planning the data warehouse implementation.</p><p>We can segregate two fundamental approaches for building a data warehouse, and the following sections explore them in depth.</p><h3>Top-down approach</h3><p>This method starts with designing the overall data warehouse architecture and then creating data marts for specific business units, as shown in the illustration below.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!vb7L!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2ec996e-a024-4b99-90fa-14f6e37960cb_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!vb7L!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2ec996e-a024-4b99-90fa-14f6e37960cb_1280x720.png 424w, /__u/substackcdn.com/image/fetch/$s_!vb7L!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2ec996e-a024-4b99-90fa-14f6e37960cb_1280x720.png 848w, /__u/substackcdn.com/image/fetch/$s_!vb7L!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2ec996e-a024-4b99-90fa-14f6e37960cb_1280x720.png 1272w, /__u/substackcdn.com/image/fetch/$s_!vb7L!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2ec996e-a024-4b99-90fa-14f6e37960cb_1280x720.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!vb7L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2ec996e-a024-4b99-90fa-14f6e37960cb_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b2ec996e-a024-4b99-90fa-14f6e37960cb_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!vb7L!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2ec996e-a024-4b99-90fa-14f6e37960cb_1280x720.png 424w, /__u/substackcdn.com/image/fetch/$s_!vb7L!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2ec996e-a024-4b99-90fa-14f6e37960cb_1280x720.png 848w, /__u/substackcdn.com/image/fetch/$s_!vb7L!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2ec996e-a024-4b99-90fa-14f6e37960cb_1280x720.png 1272w, /__u/substackcdn.com/image/fetch/$s_!vb7L!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2ec996e-a024-4b99-90fa-14f6e37960cb_1280x720.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Top-down approach when designing a data warehouse</figcaption></figure></div><p>This method was introduced by Bill Inmon, widely recognized as the father of the data warehouse. It begins with building a centralized, company-wide data warehouse. The data is normalized to avoid redundancy. This centralized repository serves as a single source of truth for managing and analyzing the data across the entire organization.</p>
      <p>
          <a href="/__u/datamozart.substack.com/p/core-analytics-engineering-data-architectures">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Announcing FabriQuiz - Your Bi-weekly Fun&Learn Show!]]></title><description><![CDATA[I&#8217;m extremely thrilled to announce the brand-new initiative I&#8217;m launching in early 2026: FabriQuiz!]]></description><link>https://datamozart.substack.com/p/announcing-fabriquiz-your-bi-weekly</link><guid isPermaLink="false">https://datamozart.substack.com/p/announcing-fabriquiz-your-bi-weekly</guid><dc:creator><![CDATA[Nikola Ilic]]></dc:creator><pubDate>Mon, 22 Dec 2025 13:16:27 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!yvNF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6568ecfb-a508-4568-bca3-c9973192a4f1_1305x690.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!yvNF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6568ecfb-a508-4568-bca3-c9973192a4f1_1305x690.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!yvNF!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6568ecfb-a508-4568-bca3-c9973192a4f1_1305x690.png 424w, /__u/substackcdn.com/image/fetch/$s_!yvNF!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6568ecfb-a508-4568-bca3-c9973192a4f1_1305x690.png 848w, /__u/substackcdn.com/image/fetch/$s_!yvNF!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6568ecfb-a508-4568-bca3-c9973192a4f1_1305x690.png 1272w, /__u/substackcdn.com/image/fetch/$s_!yvNF!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6568ecfb-a508-4568-bca3-c9973192a4f1_1305x690.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!yvNF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6568ecfb-a508-4568-bca3-c9973192a4f1_1305x690.png" width="1305" height="690" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6568ecfb-a508-4568-bca3-c9973192a4f1_1305x690.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:690,&quot;width&quot;:1305,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1214441,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/182323635?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6568ecfb-a508-4568-bca3-c9973192a4f1_1305x690.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!yvNF!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6568ecfb-a508-4568-bca3-c9973192a4f1_1305x690.png 424w, /__u/substackcdn.com/image/fetch/$s_!yvNF!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6568ecfb-a508-4568-bca3-c9973192a4f1_1305x690.png 848w, /__u/substackcdn.com/image/fetch/$s_!yvNF!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6568ecfb-a508-4568-bca3-c9973192a4f1_1305x690.png 1272w, /__u/substackcdn.com/image/fetch/$s_!yvNF!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6568ecfb-a508-4568-bca3-c9973192a4f1_1305x690.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I&#8217;m extremely thrilled to announce the brand-new initiative I&#8217;m launching in early 2026: FabriQuiz! As you may assume based on its name, FabriQuiz is a live show with a quiz related to Microsoft Fabric - the fastest-growing analytics and AI platform in the world.</p><p>In this article, I&#8217;ll try to break down all the details about FabriQuiz, but, of course, if you have any further questions, don&#8217;t hesitate to reach out.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>What is FabriQuiz?</strong></h2><p>FabriQuiz is an engaging and interactive way to learn about Microsoft Fabric, while having some fun and enjoying time with like-minded people. It is a live, online event streamed on the <strong><a href="https://www.youtube.com/@DataMozart">Data Mozart YouTube channel</a></strong>. Everyone is welcome to join! Even if you don&#8217;t plan to compete and participate in the quiz, you are free to attend and discuss various Fabric (and data in general) topics in the chat. The only &#8220;prerequisite&#8221; that I ask for is: <em><strong>be kind and respect others</strong></em>.</p><h2><strong>When is the FabriQuiz?</strong></h2><p>The inaugural edition of FabriQuiz will be on Sunday, <strong>January 11th at 7 PM CET/10 AM PST/1 PM EST</strong>. From there, we will gather <strong>every second Sunday</strong> (so, the 2nd episode will be streamed on January 25th), always at the same time. If there are any changes to the upcoming episodes, I&#8217;ll make sure to announce them in advance. In any case, the best way to stay up to date is to subscribe to the&nbsp;<strong><a href="https://www.youtube.com/@DataMozart">Data Mozart YouTube channel</a></strong>&nbsp;and set a reminder for FabriQuiz.</p><h2><strong>Why FabriQuiz?</strong></h2><p>Back in the days, and I&#8217;m sure a lot of you from the community remember it, we had a Power BI Quiz, run by&nbsp;<strong><a href="https://www.linkedin.com/in/blindbaek?miniProfileUrn=urn%3Ali%3Afs_miniProfile%3AACoAAABOBj8BNpFhYKWS1ss_QjEvToolMQuY8So">Just Blindb&#230;k</a></strong>. It was such great fun, but also an extraordinary way to learn about various aspects of the Power BI as a platform. Personally, this was one of my favorite ways to spend 45-60 minutes on Sunday evenings. This quiz doesn&#8217;t exist anymore, although my friend <strong><a href="https://www.linkedin.com/in/nexus150?miniProfileUrn=urn%3Ali%3Afs_miniProfile%3AACoAAATw2E4BE8OBZtaTRD_N-eK6-YM6UPoSG4I">Ricardo Rinc&#243;n</a></strong> is running a Spanish version (I wish I knew Spanish so I could join&#128521;).</p><p>Hence, I was thinking: why not revive such an engaging live show, but this time targeting everything around Microsoft Fabric?</p><h2><strong>How will FabriQuiz work?</strong></h2><p>Each edition of FabriQuiz will consist of 10 questions. In most cases, these will be classic, multiple-choice questions with one or multiple correct answers. The winner is the player with the highest number of points (not necessarily the one with the most correct answers), because we are measuring both accuracy (the most important) and speed (also very important).</p><p>The quiz itself is hosted and run on a dedicated platform similar to Kahoot.</p><p>I plan to invite special guests to FabriQuiz (the same as Just did for Power BI quiz) to provide their unique perspective on Fabric. Guests might be from both the Microsoft Fabric product team and the data community. The first episode will be without special guests, and then I&#8217;ll see how it goes from there:)</p><h2><strong>Sponsors wanted!</strong></h2><p>Just to make this crystal clear - I don&#8217;t plan to make any money out of FabriQuiz, but I&#8217;m looking for sponsors for winners&#8217; prizes. It can be a gift card, free license, or subscription to your product (of course, if the product is relevant to the quiz topic. I definitely won&#8217;t accept any cosmetics, sports equipment, or similar&#128522;). If we manage to attract multiple sponsors, I&#8217;m happy to provide prizes for the top N players:)</p><p>For the first two episodes, prizes are already secured, and we&#8217;ll see how it goes from February onwards:)</p><p>Each sponsor gets a proper shout during the show, both verbally and using visual elements (logo, promo message, etc.).</p><h2><strong>Key facts about FabriQuiz</strong></h2><p>&#10067;WHAT: A fun and interactive way of learning about Microsoft Fabric, with a chance to grab some cool prizes</p><p>&#128198; WHEN: January 11th, 2026, 7 PM CET/1 PM EST/10 AM PST (the inaugural episode). Then, bi-weekly (every second Sunday)</p><p>&#128205;WHERE: Online, <strong><a href="https://www.youtube.com/@DataMozart">Data Mozart YouTube channel</a></strong></p><p>Enjoy the holidays and looking forward to seeing you on January 11th! Let&#8217;s have some Fabric fun:)</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[From ‘Dataslows’ to Dataflows: The Gen2 Performance Revolution in Microsoft Fabric]]></title><description><![CDATA[Dataflows were (rightly?) considered "the slowest and least performant option" for ingesting data into Power BI/Microsoft Fabric. However, things are changing rapidly...]]></description><link>https://datamozart.substack.com/p/from-dataslows-to-dataflows-the-gen2</link><guid isPermaLink="false">https://datamozart.substack.com/p/from-dataslows-to-dataflows-the-gen2</guid><dc:creator><![CDATA[Nikola Ilic]]></dc:creator><pubDate>Sun, 23 Nov 2025 13:19:28 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!96NA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b8a5680-5c09-492d-b78e-8ed01b9ca8d1_1409x665.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!96NA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b8a5680-5c09-492d-b78e-8ed01b9ca8d1_1409x665.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!96NA!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b8a5680-5c09-492d-b78e-8ed01b9ca8d1_1409x665.png 424w, /__u/substackcdn.com/image/fetch/$s_!96NA!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b8a5680-5c09-492d-b78e-8ed01b9ca8d1_1409x665.png 848w, /__u/substackcdn.com/image/fetch/$s_!96NA!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b8a5680-5c09-492d-b78e-8ed01b9ca8d1_1409x665.png 1272w, /__u/substackcdn.com/image/fetch/$s_!96NA!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b8a5680-5c09-492d-b78e-8ed01b9ca8d1_1409x665.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!96NA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b8a5680-5c09-492d-b78e-8ed01b9ca8d1_1409x665.png" width="1409" height="665" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1b8a5680-5c09-492d-b78e-8ed01b9ca8d1_1409x665.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:665,&quot;width&quot;:1409,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Featured Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Featured Image" title="Featured Image" srcset="/__u/substackcdn.com/image/fetch/$s_!96NA!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b8a5680-5c09-492d-b78e-8ed01b9ca8d1_1409x665.png 424w, /__u/substackcdn.com/image/fetch/$s_!96NA!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b8a5680-5c09-492d-b78e-8ed01b9ca8d1_1409x665.png 848w, /__u/substackcdn.com/image/fetch/$s_!96NA!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b8a5680-5c09-492d-b78e-8ed01b9ca8d1_1409x665.png 1272w, /__u/substackcdn.com/image/fetch/$s_!96NA!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b8a5680-5c09-492d-b78e-8ed01b9ca8d1_1409x665.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In the ocean of announcements from the recent FabCon Europe in Vienna, one that may have gone under the radar was about the enhancements in performance and cost optimization for Dataflows Gen2.</p><p>Before we delve into explaining how these enhancements impact your current Dataflows setup, let&#8217;s take a step back and provide a brief overview of Dataflows. For those of you who are new to Microsoft Fabric &#8211; a Dataflow Gen2 is the no-code/low-code Fabric item used to extract, transform, and load the data (ETL).</p><p>A Dataflow Gen2 provides numerous benefits:</p><ul><li><p>Leverage 100+ built-in connectors to extract the data from a myriad of data sources</p></li><li><p>Leverage a familiar GUI from Power Query to apply dozens of transformations to the data without writing a single line of code &#8211; a <em>dream come true</em> for many citizen developers</p></li><li><p>Store the output of data transformation as a delta table in OneLake, so that the transformed data can be used downstream by various Fabric engines (Spark, T-SQL, Power BI&#8230;)</p></li></ul><p>However, simplicity usually comes with a cost. In the case of Dataflows, the cost was significantly higher CU consumption compared to code-first solutions, such as Fabric notebooks and/or T-SQL scripts. This was already well-explained and examined in two great blog posts written by my fellow MVPs, Gilbert Quevauvilliers (Fourmoo): <a href="https://www.fourmoo.com/2024/01/25/microsoft-fabric-comparing-dataflow-gen2-vs-notebook-on-costs-and-usability/">Comparing Dataflow Gen2 vs Notebook on Costs and usability</a>, and Stepan Resl: <a href="https://datameerkat.com/copy-activity-dataflows-gen2-and-notebooks-vs-sharepoint-lists">Copy Activity, Dataflows Gen2, and Notebooks vs. SharePoint Lists</a>, so I won&#8217;t waste time discussing the past. Instead, let&#8217;s focus on what the present (and future) brings for Dataflows!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><em><strong>Changes to the pricing model</strong></em></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!Kue4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71dbfdfa-2460-4154-8c55-59b8e826b8be_1024x576.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!Kue4!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71dbfdfa-2460-4154-8c55-59b8e826b8be_1024x576.png 424w, /__u/substackcdn.com/image/fetch/$s_!Kue4!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71dbfdfa-2460-4154-8c55-59b8e826b8be_1024x576.png 848w, /__u/substackcdn.com/image/fetch/$s_!Kue4!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71dbfdfa-2460-4154-8c55-59b8e826b8be_1024x576.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Kue4!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71dbfdfa-2460-4154-8c55-59b8e826b8be_1024x576.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!Kue4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71dbfdfa-2460-4154-8c55-59b8e826b8be_1024x576.png" width="1024" height="576" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/71dbfdfa-2460-4154-8c55-59b8e826b8be_1024x576.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:576,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!Kue4!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71dbfdfa-2460-4154-8c55-59b8e826b8be_1024x576.png 424w, /__u/substackcdn.com/image/fetch/$s_!Kue4!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71dbfdfa-2460-4154-8c55-59b8e826b8be_1024x576.png 848w, /__u/substackcdn.com/image/fetch/$s_!Kue4!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71dbfdfa-2460-4154-8c55-59b8e826b8be_1024x576.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Kue4!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71dbfdfa-2460-4154-8c55-59b8e826b8be_1024x576.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Image from the official Microsoft Fabric blog</figcaption></figure></div><p>Let&#8217;s briefly examine what&#8217;s displayed in the illustration above. Previously, every second of the Dataflow Gen2 run was billed at 16 CU (<a href="https://data-mozart.com/microsoft-fabric-pricing-model-everything-you-need-to-know/">CU stands for Capacity Unit, representing a bundled set of resources &#8211; CPU, memory, and I/O &#8211; used in synergy to perform a specific operation</a>). Depending on the Fabric capacity size, you get a certain number of capacity units &#8211; F2 provides 2 CUs, F4 provides 4 CUs, and so on.</p><p>Going back to our Dataflows scenario, let&#8217;s break this down by using a real-life example. Say you have a Dataflow that runs for 20 minutes (1200 seconds)&#8230;</p><ul><li><p>Previously, this Dataflow run would have cost you <strong>19.200 CUs</strong>: 1200 seconds * 16 CUs</p></li><li><p>Now, this Dataflow run will cost you <strong>8.100 CUs</strong>: 600 seconds (first 10 minutes) * 12 CUs + 600 seconds (after first 10 minutes) * 1.5 CUs</p></li></ul><p>The longer your Dataflow needs to execute, the bigger the savings in CUs you potentially make.</p><p>This is amazing on its own, but there is still more to that. I mean, it&#8217;s nice to be charged less for the same amount of work, but what if we could make these 1200 seconds, let&#8217;s say, 800 seconds? So, it wouldn&#8217;t save us just CUs, but also reduce the time-to-analysis, since the data would have been processed faster. And, that&#8217;s exactly what the next two enhancements are all about&#8230;</p><h2><em><strong>Modern Evaluator</strong></em></h2><p>The new preview feature, named Modern Evaluator, enables using the new query execution engine (running on .NET core version 8) for running Dataflows. As per the <a href="https://learn.microsoft.com/en-us/fabric/data-factory/dataflow-gen2-modern-evaluator">official Microsoft docs</a>, Dataflows running the modern evaluator can provide the following benefits:</p><ul><li><p>Faster Dataflow execution</p></li><li><p>More efficient processing</p></li><li><p>Scalability and reliability</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!8Cr4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F904e5b63-677e-4b97-a2e4-287f300c7bb5_1024x576.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!8Cr4!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F904e5b63-677e-4b97-a2e4-287f300c7bb5_1024x576.png 424w, /__u/substackcdn.com/image/fetch/$s_!8Cr4!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F904e5b63-677e-4b97-a2e4-287f300c7bb5_1024x576.png 848w, /__u/substackcdn.com/image/fetch/$s_!8Cr4!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F904e5b63-677e-4b97-a2e4-287f300c7bb5_1024x576.png 1272w, /__u/substackcdn.com/image/fetch/$s_!8Cr4!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F904e5b63-677e-4b97-a2e4-287f300c7bb5_1024x576.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!8Cr4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F904e5b63-677e-4b97-a2e4-287f300c7bb5_1024x576.png" width="1024" height="576" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/904e5b63-677e-4b97-a2e4-287f300c7bb5_1024x576.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:576,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!8Cr4!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F904e5b63-677e-4b97-a2e4-287f300c7bb5_1024x576.png 424w, /__u/substackcdn.com/image/fetch/$s_!8Cr4!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F904e5b63-677e-4b97-a2e4-287f300c7bb5_1024x576.png 848w, /__u/substackcdn.com/image/fetch/$s_!8Cr4!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F904e5b63-677e-4b97-a2e4-287f300c7bb5_1024x576.png 1272w, /__u/substackcdn.com/image/fetch/$s_!8Cr4!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F904e5b63-677e-4b97-a2e4-287f300c7bb5_1024x576.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Image from the official Microsoft Fabric blog</figcaption></figure></div><p>The illustration above shows the performance differences between various Dataflow &#8220;flavors&#8221;. Don&#8217;t worry, we will challenge these numbers soon in a demo, and I&#8217;ll also show you how to enable these latest enhancements in your Fabric workloads.</p><h2><em><strong>Partitioned Compute</strong></em></h2><p>Previously, a Dataflow logic was executed in sequence. Hence, depending on the logic complexity, it could take a while for certain operations to complete, so that other operations in the Dataflow had to wait in the queue. With the <a href="https://learn.microsoft.com/en-us/fabric/data-factory/dataflow-gen2-partitioned-compute">Partitioned Compute feature</a>, Dataflow can now execute parts of the transformation logic in parallel, thus reducing the overall time to complete.</p><p>At this moment, there are certain limitations on when the partitioned compute will kick in. Namely, only ADLS Gen2, Fabric Lakehouse, Folder, and Azure Blob Storage connectors can leverage this new feature. Again, we&#8217;ll explore how it works later in this article.</p><h2><em><strong>3, 2, 1&#8230;Action!</strong></em></h2><p>Ok, it&#8217;s time to challenge the numbers provided by Microsoft and check if (and to what degree) there is a performance gain between various Dataflows types.</p><p>Here is our scenario: I&#8217;ve generated 50 CSV files that contain dummy data about orders. Each file contains approximately 575.000 records, so there are ca. 29 million records in total (approximately 2.5 GBs of data). All the files are already stored in the SharePoint folder, allowing for a fair comparison, as Dataflow Gen1 doesn&#8217;t support OneLake lakehouse as a data source.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!w8_L!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe01aa1ef-6efe-4e96-ab97-382374932126_1024x509.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!w8_L!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe01aa1ef-6efe-4e96-ab97-382374932126_1024x509.png 424w, /__u/substackcdn.com/image/fetch/$s_!w8_L!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe01aa1ef-6efe-4e96-ab97-382374932126_1024x509.png 848w, /__u/substackcdn.com/image/fetch/$s_!w8_L!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe01aa1ef-6efe-4e96-ab97-382374932126_1024x509.png 1272w, /__u/substackcdn.com/image/fetch/$s_!w8_L!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe01aa1ef-6efe-4e96-ab97-382374932126_1024x509.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!w8_L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe01aa1ef-6efe-4e96-ab97-382374932126_1024x509.png" width="1024" height="509" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e01aa1ef-6efe-4e96-ab97-382374932126_1024x509.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:509,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!w8_L!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe01aa1ef-6efe-4e96-ab97-382374932126_1024x509.png 424w, /__u/substackcdn.com/image/fetch/$s_!w8_L!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe01aa1ef-6efe-4e96-ab97-382374932126_1024x509.png 848w, /__u/substackcdn.com/image/fetch/$s_!w8_L!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe01aa1ef-6efe-4e96-ab97-382374932126_1024x509.png 1272w, /__u/substackcdn.com/image/fetch/$s_!w8_L!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe01aa1ef-6efe-4e96-ab97-382374932126_1024x509.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I plan to run two series of tests: first, include the Dataflow Gen1 in the comparison. In this scenario, I won&#8217;t be writing the data into OneLake using Dataflows Gen2 (yeah, I know, it defeats the purpose of the Dataflow Gen2), as I want to compare &#8220;apples to apples&#8221; and exclude the time needed for writing data into OneLake. I will test the following four scenarios, in which I perform some basic operations to combine and load the data, applying some basic transformations (renaming columns, etc.):</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><ol><li><p>Use Dataflow Gen1 (the old Power BI dataflow)</p></li><li><p>Use Dataflow Gen2 without any additional optimization enhancements</p></li><li><p>Use Dataflow Gen2 with only the Modern evaluator enabled</p></li><li><p>Use Dataflow Gen2 with both the Modern evaluator and Partitioned compute enabled</p></li></ol><p>In the second series, I&#8217;ll compare three flavors of Dataflow Gen2 only (points 2-4 from the list above), with writing the data to a lakehouse enabled.</p><p>Let&#8217;s get started!</p><h3><em><strong>Dataflow Gen1</strong></em></h3><p>The entire transformation process in the old Dataflow Gen1 is fairly basic &#8211; I simply combined all 50 files into a single query, split columns by delimiter, and renamed columns. So, nothing really advanced happens here:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!0KQY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6b6b14d-a3e2-4b99-8253-f7c1cf7f2498_1024x504.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!0KQY!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6b6b14d-a3e2-4b99-8253-f7c1cf7f2498_1024x504.png 424w, /__u/substackcdn.com/image/fetch/$s_!0KQY!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6b6b14d-a3e2-4b99-8253-f7c1cf7f2498_1024x504.png 848w, /__u/substackcdn.com/image/fetch/$s_!0KQY!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6b6b14d-a3e2-4b99-8253-f7c1cf7f2498_1024x504.png 1272w, /__u/substackcdn.com/image/fetch/$s_!0KQY!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6b6b14d-a3e2-4b99-8253-f7c1cf7f2498_1024x504.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!0KQY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6b6b14d-a3e2-4b99-8253-f7c1cf7f2498_1024x504.png" width="1024" height="504" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e6b6b14d-a3e2-4b99-8253-f7c1cf7f2498_1024x504.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:504,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!0KQY!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6b6b14d-a3e2-4b99-8253-f7c1cf7f2498_1024x504.png 424w, /__u/substackcdn.com/image/fetch/$s_!0KQY!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6b6b14d-a3e2-4b99-8253-f7c1cf7f2498_1024x504.png 848w, /__u/substackcdn.com/image/fetch/$s_!0KQY!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6b6b14d-a3e2-4b99-8253-f7c1cf7f2498_1024x504.png 1272w, /__u/substackcdn.com/image/fetch/$s_!0KQY!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6b6b14d-a3e2-4b99-8253-f7c1cf7f2498_1024x504.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The same set of operations/transformations has been applied to all three Dataflows Gen2.</p><p>Please keep in mind that with Dataflow Gen1 it&#8217;s not possible to output the data as a Delta table in OneLake. All transformations are persisted within the Dataflow itself, so when you need this data, for example, in the semantic model, you need to take into account the time and resources needed to load/refresh the data in the import mode semantic model. But, more on that later.</p><h3><em><strong>Dataflow Gen2 without enhancements</strong></em></h3><p>Let&#8217;s now do the same thing, but this time using the new Dataflow Gen2. In this first scenario, I haven&#8217;t applied any of these new performance optimization features.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!Y9-1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6c60ae7-46f6-4f35-8c5f-63ebd0926413_1024x504.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!Y9-1!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6c60ae7-46f6-4f35-8c5f-63ebd0926413_1024x504.png 424w, /__u/substackcdn.com/image/fetch/$s_!Y9-1!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6c60ae7-46f6-4f35-8c5f-63ebd0926413_1024x504.png 848w, /__u/substackcdn.com/image/fetch/$s_!Y9-1!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6c60ae7-46f6-4f35-8c5f-63ebd0926413_1024x504.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Y9-1!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6c60ae7-46f6-4f35-8c5f-63ebd0926413_1024x504.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!Y9-1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6c60ae7-46f6-4f35-8c5f-63ebd0926413_1024x504.png" width="1024" height="504" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f6c60ae7-46f6-4f35-8c5f-63ebd0926413_1024x504.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:504,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!Y9-1!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6c60ae7-46f6-4f35-8c5f-63ebd0926413_1024x504.png 424w, /__u/substackcdn.com/image/fetch/$s_!Y9-1!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6c60ae7-46f6-4f35-8c5f-63ebd0926413_1024x504.png 848w, /__u/substackcdn.com/image/fetch/$s_!Y9-1!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6c60ae7-46f6-4f35-8c5f-63ebd0926413_1024x504.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Y9-1!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6c60ae7-46f6-4f35-8c5f-63ebd0926413_1024x504.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3><em><strong>Dataflow Gen2 with Modern Evaluator</strong></em></h3><p>Ok, the moment of truth &#8211; let&#8217;s now enable the Modern Evaluator for Dataflow Gen2. I&#8217;ll go to the Options, and then under the Scale tab, check the Allow use of the modern query evaluation engine box:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!Djh2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccef0356-6f66-466d-a4f1-5e5d854875c2_1024x504.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!Djh2!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccef0356-6f66-466d-a4f1-5e5d854875c2_1024x504.png 424w, /__u/substackcdn.com/image/fetch/$s_!Djh2!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccef0356-6f66-466d-a4f1-5e5d854875c2_1024x504.png 848w, /__u/substackcdn.com/image/fetch/$s_!Djh2!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccef0356-6f66-466d-a4f1-5e5d854875c2_1024x504.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Djh2!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccef0356-6f66-466d-a4f1-5e5d854875c2_1024x504.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!Djh2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccef0356-6f66-466d-a4f1-5e5d854875c2_1024x504.png" width="1024" height="504" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ccef0356-6f66-466d-a4f1-5e5d854875c2_1024x504.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:504,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!Djh2!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccef0356-6f66-466d-a4f1-5e5d854875c2_1024x504.png 424w, /__u/substackcdn.com/image/fetch/$s_!Djh2!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccef0356-6f66-466d-a4f1-5e5d854875c2_1024x504.png 848w, /__u/substackcdn.com/image/fetch/$s_!Djh2!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccef0356-6f66-466d-a4f1-5e5d854875c2_1024x504.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Djh2!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccef0356-6f66-466d-a4f1-5e5d854875c2_1024x504.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Everything else stays exactly the same as in the previous case.</p><h3><em><strong>Dataflow Gen2 with Modern Evaluator and Partitioned Compute</strong></em></h3><p>In the final example, I&#8217;ll enable both new optimization features in the Options of the Dataflow Gen2:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!Mdzq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77aaed1e-ac4c-47ee-9bb6-7ca160cd0251_1024x509.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!Mdzq!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77aaed1e-ac4c-47ee-9bb6-7ca160cd0251_1024x509.png 424w, /__u/substackcdn.com/image/fetch/$s_!Mdzq!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77aaed1e-ac4c-47ee-9bb6-7ca160cd0251_1024x509.png 848w, /__u/substackcdn.com/image/fetch/$s_!Mdzq!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77aaed1e-ac4c-47ee-9bb6-7ca160cd0251_1024x509.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Mdzq!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77aaed1e-ac4c-47ee-9bb6-7ca160cd0251_1024x509.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!Mdzq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77aaed1e-ac4c-47ee-9bb6-7ca160cd0251_1024x509.png" width="1024" height="509" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/77aaed1e-ac4c-47ee-9bb6-7ca160cd0251_1024x509.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:509,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!Mdzq!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77aaed1e-ac4c-47ee-9bb6-7ca160cd0251_1024x509.png 424w, /__u/substackcdn.com/image/fetch/$s_!Mdzq!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77aaed1e-ac4c-47ee-9bb6-7ca160cd0251_1024x509.png 848w, /__u/substackcdn.com/image/fetch/$s_!Mdzq!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77aaed1e-ac4c-47ee-9bb6-7ca160cd0251_1024x509.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Mdzq!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77aaed1e-ac4c-47ee-9bb6-7ca160cd0251_1024x509.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Now, let&#8217;s proceed to the testing and analyzing results. I will execute all four dataflows in sequence from the Fabric pipeline, so we can be sure that each of them runs in isolation from the others.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!2bHd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56e22408-53d8-4dcb-add8-0ce9eb9d44de_1024x456.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!2bHd!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56e22408-53d8-4dcb-add8-0ce9eb9d44de_1024x456.png 424w, /__u/substackcdn.com/image/fetch/$s_!2bHd!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56e22408-53d8-4dcb-add8-0ce9eb9d44de_1024x456.png 848w, /__u/substackcdn.com/image/fetch/$s_!2bHd!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56e22408-53d8-4dcb-add8-0ce9eb9d44de_1024x456.png 1272w, /__u/substackcdn.com/image/fetch/$s_!2bHd!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56e22408-53d8-4dcb-add8-0ce9eb9d44de_1024x456.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!2bHd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56e22408-53d8-4dcb-add8-0ce9eb9d44de_1024x456.png" width="1024" height="456" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/56e22408-53d8-4dcb-add8-0ce9eb9d44de_1024x456.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:456,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!2bHd!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56e22408-53d8-4dcb-add8-0ce9eb9d44de_1024x456.png 424w, /__u/substackcdn.com/image/fetch/$s_!2bHd!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56e22408-53d8-4dcb-add8-0ce9eb9d44de_1024x456.png 848w, /__u/substackcdn.com/image/fetch/$s_!2bHd!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56e22408-53d8-4dcb-add8-0ce9eb9d44de_1024x456.png 1272w, /__u/substackcdn.com/image/fetch/$s_!2bHd!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56e22408-53d8-4dcb-add8-0ce9eb9d44de_1024x456.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>And, here are the results:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!QoqH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b678526-42b6-484a-b215-75767c802c87_1024x428.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!QoqH!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b678526-42b6-484a-b215-75767c802c87_1024x428.png 424w, /__u/substackcdn.com/image/fetch/$s_!QoqH!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b678526-42b6-484a-b215-75767c802c87_1024x428.png 848w, /__u/substackcdn.com/image/fetch/$s_!QoqH!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b678526-42b6-484a-b215-75767c802c87_1024x428.png 1272w, /__u/substackcdn.com/image/fetch/$s_!QoqH!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b678526-42b6-484a-b215-75767c802c87_1024x428.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!QoqH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b678526-42b6-484a-b215-75767c802c87_1024x428.png" width="1024" height="428" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1b678526-42b6-484a-b215-75767c802c87_1024x428.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:428,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!QoqH!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b678526-42b6-484a-b215-75767c802c87_1024x428.png 424w, /__u/substackcdn.com/image/fetch/$s_!QoqH!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b678526-42b6-484a-b215-75767c802c87_1024x428.png 848w, /__u/substackcdn.com/image/fetch/$s_!QoqH!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b678526-42b6-484a-b215-75767c802c87_1024x428.png 1272w, /__u/substackcdn.com/image/fetch/$s_!QoqH!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b678526-42b6-484a-b215-75767c802c87_1024x428.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Partitioning obviously didn&#8217;t count much in this particular scenario, and I will investigate how partitioning works in more detail in one of the following articles, with different scenarios in place. <strong>Dataflow Gen2 with Modern Evaluator enabled, outperformed all the others by far</strong>, achieving 30% savings compared to the old Dataflow Gen1 and ca. 20% time savings compared to the regular Dataflow Gen2 without any optimizations! Don&#8217;t forget, these savings also reflect in the CU savings, so the final CU estimated cost for each of the used solutions is the following;</p><ul><li><p>Dataflow Gen1: 550 seconds * 12 CUs = 6.600 CUs</p></li><li><p>Dataflow Gen2 with no optimization: 520 seconds * 12 CUs = 6.240 CUs</p></li><li><p>Dataflow Gen2 with Modern Evaluator: 368 seconds * 12 CUs = 4.416 CUs</p></li><li><p>Dataflow Gen2 with Modern Evaluator and Partitioning: 474 seconds * 12 CUs = 5.688 CUs</p></li></ul><p>However, I wanted to double-check and confirm that my calculation is accurate. Hence, I opened the Capacity Metrics App and took a look at the metrics captured by the App:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!2UVm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957f660e-96a4-4362-9daf-3751f74efdf7_1024x713.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!2UVm!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957f660e-96a4-4362-9daf-3751f74efdf7_1024x713.png 424w, /__u/substackcdn.com/image/fetch/$s_!2UVm!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957f660e-96a4-4362-9daf-3751f74efdf7_1024x713.png 848w, /__u/substackcdn.com/image/fetch/$s_!2UVm!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957f660e-96a4-4362-9daf-3751f74efdf7_1024x713.png 1272w, /__u/substackcdn.com/image/fetch/$s_!2UVm!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957f660e-96a4-4362-9daf-3751f74efdf7_1024x713.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!2UVm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957f660e-96a4-4362-9daf-3751f74efdf7_1024x713.png" width="1024" height="713" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/957f660e-96a4-4362-9daf-3751f74efdf7_1024x713.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:713,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!2UVm!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957f660e-96a4-4362-9daf-3751f74efdf7_1024x713.png 424w, /__u/substackcdn.com/image/fetch/$s_!2UVm!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957f660e-96a4-4362-9daf-3751f74efdf7_1024x713.png 848w, /__u/substackcdn.com/image/fetch/$s_!2UVm!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957f660e-96a4-4362-9daf-3751f74efdf7_1024x713.png 1272w, /__u/substackcdn.com/image/fetch/$s_!2UVm!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957f660e-96a4-4362-9daf-3751f74efdf7_1024x713.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Although the overall result accurately reflects the numbers displayed in the pipeline execution log, the exact number of used CUs in the App is different:</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><ul><li><p>Dataflow Gen1: 7.788 CUs</p></li><li><p>Dataflow Gen2 with no optimization: 5.684 CUs</p></li><li><p>Dataflow Gen2 with Modern Evaluator: 3.565 CUs</p></li><li><p>Dataflow Gen2 with Modern Evaluator and Partitioning: 4.732 CUs</p></li></ul><p>So, according to the Capacity Metrics App, a Dataflow Gen2 with Modern Evaluator enabled consumed less than 50% of the capacity compared to the Dataflow Gen1 in this particular scenario! I plan to create more test use cases in the following days/weeks and provide a more comprehensive series of tests and comparisons, which will also include a time to write the data into OneLake (using Dataflows Gen2) versus the time needed to refresh the import mode semantic model that is using the old Dataflow Gen1.</p><h2><em><strong>Conclusion</strong></em></h2><p>When compared to other (code-first) options, Dataflows were (rightly?) considered &#8220;the slowest and least performant option&#8221; for ingesting data into Power BI/Microsoft Fabric. However, things are changing rapidly in the Fabric world, and I love how the Fabric Data Integration team makes constant improvements to the product. Honestly, I&#8217;m curious to see how Dataflows Gen2&#8217;s performance and cost develop over time, so that we can consider leveraging Dataflows not only for low-code/no-code data ingestion and data transformation requirements, but also as a viable alternative to code-first solutions from the cost/performance point of view.</p><p>Thanks for reading!</p><p>Thanks to my friend Sandeep Pawar from the Fabric CAT team, I&#8217;ve been pointed to the great&nbsp;<a href="https://youtu.be/KdWuN-T7Tj8?si=yCFXWwXMweA243nC">video</a>&nbsp;by Pat Mahoney (Sandeep&#8217;s colleague from Microsoft), which provides more details about configuring the partitioning in Dataflows Gen2.</p>]]></content:encoded></item><item><title><![CDATA[Understanding the Role of an Analytics Engineer]]></title><description><![CDATA[Every business is a data business now - they just don&#8217;t know it yet&#8230;]]></description><link>https://datamozart.substack.com/p/understanding-the-role-of-an-analytics</link><guid isPermaLink="false">https://datamozart.substack.com/p/understanding-the-role-of-an-analytics</guid><dc:creator><![CDATA[Nikola Ilic]]></dc:creator><pubDate>Wed, 15 Oct 2025 12:48:22 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!MhES!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58253e9c-1c74-4087-aed8-e6cf15685773_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!MhES!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58253e9c-1c74-4087-aed8-e6cf15685773_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!MhES!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58253e9c-1c74-4087-aed8-e6cf15685773_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!MhES!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58253e9c-1c74-4087-aed8-e6cf15685773_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!MhES!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58253e9c-1c74-4087-aed8-e6cf15685773_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!MhES!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58253e9c-1c74-4087-aed8-e6cf15685773_1536x1024.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!MhES!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58253e9c-1c74-4087-aed8-e6cf15685773_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/58253e9c-1c74-4087-aed8-e6cf15685773_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!MhES!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58253e9c-1c74-4087-aed8-e6cf15685773_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!MhES!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58253e9c-1c74-4087-aed8-e6cf15685773_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!MhES!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58253e9c-1c74-4087-aed8-e6cf15685773_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!MhES!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58253e9c-1c74-4087-aed8-e6cf15685773_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Imagine this: It&#8217;s Monday morning, and you&#8217;re finding yourself in yet another meeting where the finance team is arguing with the sales team about whose numbers are &#8220;right.&#8221; The CFO insists that lead conversion rates are up by 23% this quarter, while the VP of Sales swears they&#8217;re only seeing an 11% increase. Meanwhile, the CEO is getting frustrated because nobody can agree on basic facts about the business.</p><p>Sound familiar? If you&#8217;ve worked in any data-driven organization in the last five years, you&#8217;ve probably witnessed this exact scenario multiple times.</p><p>But, let&#8217;s be honest - this isn&#8217;t really (only) about the numbers being wrong. It&#8217;s about something much more fundamental: the gap between those who understand the data and those who need to use it to make decisions. And that gap, dear reader, is exactly where analytics engineering comes in.</p><h1>The Making of Analytics Engineering</h1><p>The story about analytics engineering doesn&#8217;t start as a great plan in someone&#8217;s head in a Silicon Valley boardroom. It was more like... well, like most good ideas - born out of pure necessity and a healthy dose of frustration.</p><p>Back in early 2019, a group of passionate data folks were hanging out in an online community. They were sharing stories about their day-to-day jobs, and a pattern started to emerge. Everyone was dealing with the same problem: traditional data teams were cracking under the pressure of modern data demands.</p><p>Data engineers were drowning. They were supposed to be building a robust and resilient data infrastructure, but more often than not, they were also pulled into every data transformation request. &#8220;Hey, can you just quickly add this metric to our dashboard?&#8221; &#8220;Can you modify this report to show regional breakdowns?&#8221; &#8220;Why doesn&#8217;t our customer count match between these two systems?&#8221;</p><p>Meanwhile, data analysts were stuck. They knew the business inside and out, they understood what questions needed answering, but they couldn&#8217;t access the data they needed without going through the already overwhelmed engineering team. It was like being a chef who wasn&#8217;t allowed to enter the kitchen.</p><p>And that&#8217;s when someone in that online community said the magic words: &#8220;What if we had someone whose job was specifically to bridge the gap<strong> between technology and business</strong>? Someone who cou<strong>ld </strong>speak both languages and focus purely on making data usable?&#8221;</p><p>That &#8220;someone&#8221; was the analytics engineer.</p><p>The idea quickly took off. The team at <a href="https://www.getdbt.com/">dbt Labs</a>, the company behind the data build tool that&#8217;s become synonymous with analytics engineering, started evangelizing the role. Companies started to hire for the role. Universities began offering courses on it. And here we are today, with analytics engineering being one of the fastest-growing roles in tech.</p><p><em><strong>This is the excerpt from the early release of the &#8220;Analytics Engineering with Microsoft Fabric and Power BI&#8221; book, that I&#8217;m writing together with Shabnam Watson for O&#8217;Reilly. You can already read the early release, which is updated chapter by chapter, <a href="https://learning.oreilly.com/library/view/-/9798341645868/">here</a>.</strong></em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://learning.oreilly.com/library/view/-/9798341645868/" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!jpiM!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87f915d1-cb1f-4d31-97f1-a2d2e2c83850_814x1069.png 424w, /__u/substackcdn.com/image/fetch/$s_!jpiM!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87f915d1-cb1f-4d31-97f1-a2d2e2c83850_814x1069.png 848w, /__u/substackcdn.com/image/fetch/$s_!jpiM!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87f915d1-cb1f-4d31-97f1-a2d2e2c83850_814x1069.png 1272w, /__u/substackcdn.com/image/fetch/$s_!jpiM!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87f915d1-cb1f-4d31-97f1-a2d2e2c83850_814x1069.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!jpiM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87f915d1-cb1f-4d31-97f1-a2d2e2c83850_814x1069.png" width="814" height="1069" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/87f915d1-cb1f-4d31-97f1-a2d2e2c83850_814x1069.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1069,&quot;width&quot;:814,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:536043,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://learning.oreilly.com/library/view/-/9798341645868/&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/176228111?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87f915d1-cb1f-4d31-97f1-a2d2e2c83850_814x1069.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!jpiM!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87f915d1-cb1f-4d31-97f1-a2d2e2c83850_814x1069.png 424w, /__u/substackcdn.com/image/fetch/$s_!jpiM!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87f915d1-cb1f-4d31-97f1-a2d2e2c83850_814x1069.png 848w, /__u/substackcdn.com/image/fetch/$s_!jpiM!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87f915d1-cb1f-4d31-97f1-a2d2e2c83850_814x1069.png 1272w, /__u/substackcdn.com/image/fetch/$s_!jpiM!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87f915d1-cb1f-4d31-97f1-a2d2e2c83850_814x1069.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>What exactly does an Analytics Engineer do?</h2><p>We&#8217;re glad you asked! But seriously, if you asked five different analytics engineers to describe their job, you&#8217;d probably get six different answers. Even the role name can be a bit of a head-scratcher at first. And professionals working <em>in</em> the data field sometimes get a bit confused about where one role ends and another begins. It&#8217;s like trying to explain the difference between a latte, a cappuccino, and an espresso to someone who just wants a good coffee &#8211; they&#8217;re all coffee, but the nuances also matter.</p><p>The analytics engineer role is still evolving, and it looks different at every company. But here&#8217;s our take on it, based on long hours of working with many outstanding analytics engineers and seeing the value they create:</p><p><em><strong>Analytics engineers are the translators between the world of raw data and the world of business decisions.</strong></em></p><p>Think of analytics engineers as skilled craftspeople who step into the messy world of data storage. They don&#8217;t just clean that space, but also build well-organized, clearly labeled shelves <strong>( </strong>data models), ensure all the items are clean and reliable ( data quality and transformation), and create clear pathways so other people can easily find exactly what they need. They are the bridge between the super-technical &#8220;how the data gets collected and stored&#8221; part and the &#8220;what does this data actually mean for the business?&#8221; part.</p><p>Now, you might be wondering: &#8220;Wait, isn&#8217;t that what a Data Engineer does? Or a Data Analyst?&#8221; And that&#8217;s a great question! While analytics engineers work closely with both, the Analytics Engineer role has its own distinct flavor. They are not always building massive, foundational data pipelines from scratch as many data engineers do (though a sound analytics engineer will understand how they work). And they are not usually the ones deep-diving into specific datasets to create the final dashboard or build the business report as a data analyst often does (though a skilled analytics engineer will enable them to do it significantly better).</p><p>An Analytics Engineer is situated in the specialized space in between, focusing on making data trustworthy, accessible, and optimized specifically for <em>analytics</em>. They ensure that when five different people ask &#8220;What was our revenue last month?&#8221;, they all get the <em>same, correct</em> answer, without wanting to pull their hair out trying to find it.</p><p>However, what makes analytics engineers special is that they don&#8217;t just move data around. They apply the same strict principles that software engineers leverage to build applications: version control, testing, documentation, and continuous integration. Imagine if every data transformation were as reliable and well-documented as the well-established software you use on a daily basis. That&#8217;s what analytics engineers bring to the table.</p><p>Let us give you a real-life example. Imagine you work for an e-commerce company, and your CEO wants to know the answer to a simple question: &#8220;What&#8217;s our customer lifetime value by acquisition channel?&#8221;</p><p>In the old world, this would have been a nightmare. An analyst would have had to:</p><ol><li><p>Figure out where customer data lives (probably five different systems)</p></li><li><p>Figure out where transaction data lives (probably two additional systems)</p></li><li><p>Figure out where the acquisition channel data lives (good luck with that!)</p></li><li><p>Write a bunch of complex SQL to join it all together</p></li><li><p>Hope they didn&#8217;t make any mistakes in the logic</p></li><li><p>Pray that the data was actually accurate and up-to-date</p></li><li><p>Spend days validating the results</p></li></ol><p>With an analytics engineer on the team, the following illustration displays what happens instead:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!MhES!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58253e9c-1c74-4087-aed8-e6cf15685773_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!MhES!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58253e9c-1c74-4087-aed8-e6cf15685773_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!MhES!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58253e9c-1c74-4087-aed8-e6cf15685773_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!MhES!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58253e9c-1c74-4087-aed8-e6cf15685773_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!MhES!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58253e9c-1c74-4087-aed8-e6cf15685773_1536x1024.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!MhES!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58253e9c-1c74-4087-aed8-e6cf15685773_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/58253e9c-1c74-4087-aed8-e6cf15685773_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!MhES!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58253e9c-1c74-4087-aed8-e6cf15685773_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!MhES!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58253e9c-1c74-4087-aed8-e6cf15685773_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!MhES!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58253e9c-1c74-4087-aed8-e6cf15685773_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!MhES!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58253e9c-1c74-4087-aed8-e6cf15685773_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ol><li><p>The analytics engineer has already built a reliable pipeline that brings together customer, transaction, and acquisition data</p></li><li><p>They&#8217;ve tested and documented all the transformation logic</p></li><li><p>They&#8217;ve created a clean, business-ready dataset that updates automatically. The analyst can simply query the prepared dataset and get their answer in minutes</p></li><li><p>Everyone trusts the results because they know the process is reliable</p></li></ol><p>The data analyst gets to focus on the fun part - finding insights and telling stories. The data engineer gets to focus on infrastructure instead of ad-hoc data requests. And the business gets reliable answers to their questions. It&#8217;s not a win-win scenario, but rather a win-win-win.</p><h2>The Big ETL to ELT (R)evolution</h2><p>Now that we have explained what analytics engineers are supposed to do, let&#8217;s understand one of the biggest shifts in the data ecosystem, which made analytics engineering not just possible, but necessary - the transition from ETL to ELT. Don&#8217;t worry if you don&#8217;t know what these acronyms stand for, as we will break them down here.</p>
      <p>
          <a href="/__u/datamozart.substack.com/p/understanding-the-role-of-an-analytics">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[24 Hours of Microsoft Fabric training announced!]]></title><description><![CDATA[There is a LOT of Fabric training nowadays! Some of them are free, while the others are paid. And, it's hard to navigate through the noise and make the right decision]]></description><link>https://datamozart.substack.com/p/24-hours-of-microsoft-fabric-training</link><guid isPermaLink="false">https://datamozart.substack.com/p/24-hours-of-microsoft-fabric-training</guid><dc:creator><![CDATA[Nikola Ilic]]></dc:creator><pubDate>Tue, 02 Sep 2025 07:01:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!RTto!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5520928b-3de2-4d54-98b7-3ab2672532e7_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!RTto!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5520928b-3de2-4d54-98b7-3ab2672532e7_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!RTto!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5520928b-3de2-4d54-98b7-3ab2672532e7_1280x720.png 424w, /__u/substackcdn.com/image/fetch/$s_!RTto!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5520928b-3de2-4d54-98b7-3ab2672532e7_1280x720.png 848w, /__u/substackcdn.com/image/fetch/$s_!RTto!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5520928b-3de2-4d54-98b7-3ab2672532e7_1280x720.png 1272w, /__u/substackcdn.com/image/fetch/$s_!RTto!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5520928b-3de2-4d54-98b7-3ab2672532e7_1280x720.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!RTto!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5520928b-3de2-4d54-98b7-3ab2672532e7_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5520928b-3de2-4d54-98b7-3ab2672532e7_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1269836,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://datamozart.substack.com/i/172547221?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5520928b-3de2-4d54-98b7-3ab2672532e7_1280x720.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!RTto!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5520928b-3de2-4d54-98b7-3ab2672532e7_1280x720.png 424w, /__u/substackcdn.com/image/fetch/$s_!RTto!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5520928b-3de2-4d54-98b7-3ab2672532e7_1280x720.png 848w, /__u/substackcdn.com/image/fetch/$s_!RTto!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5520928b-3de2-4d54-98b7-3ab2672532e7_1280x720.png 1272w, /__u/substackcdn.com/image/fetch/$s_!RTto!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5520928b-3de2-4d54-98b7-3ab2672532e7_1280x720.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>There is a LOT of Microsoft Fabric training nowadays! </p><p>Some of them are free, while the others are paid. And, it's hard to navigate through the noise and make the right decision - not just in terms of money, but also in terms of the time you plan to invest in learning the fastest-growing analytics platform.</p><p>TL;DR: If you want to skip reading this post and find out all the details about the &#8220;24 Hours of Fabric&#8221; training, you can jump <a href="https://learn.data-mozart.com/courses/24-hours-ms-fabric">here</a></p><h2>Why should you join the "24 Hours of Fabric" training?</h2><ul><li><p>It's carefully tailored based on the vast experience of delivering numerous Fabric trainings for hundreds of learners</p></li><li><p>It's curated based on the feedback I received from previous trainings - incorporating all the positives and removing all the negatives provided by your fellow Fabric learners</p></li><li><p>It's built with YOU and YOUR priorities in mind! Let me elaborate on this: An 8-hour training can be exhaustive...3 consecutive days of 8-hour training may be an overkill even for most dedicated learners! Thus, I decided to break the learning content into smaller, reasonable chunks - to keep you engaged and focused all the time, while giving your brain a fair share of time to refresh and absorb everything we learn. Not only that. I completely understand if your daily job doesn't allow spending the whole day away. Maybe you have some important meetings, calls, or other responsibilities. Or, maybe you want to go for a family party AFTER your training, still saving enough energy to share with your loved ones. So, there will be 3 sessions of 2 hours each week - on Monday, Wednesday, and Friday. 4 weeks x 3 days x 2 hours = 24 hours in total!</p></li><li><p>You'll get a chance to put your hands right on Fabric! It's nice listening to me talking and showing how cool Fabric is in demos, but it's a whole different story getting YOUR hands dirty with various Fabric components and workloads. You'll be asked to complete 10+ hands-on labs during the training, to help you get a real-life feeling about the Fabric platform</p></li><li><p>You'll also get a chance to ask a question and get an answer - of course, assuming that I know the answer:) But, I promise, if I don't know the answer immediately, I'll get back to you as soon as possible. This is completely different from free online tutorials or massive open online courses with hundreds of participants, where communication is unidirectional, and your question may not get answered or your concerns may not get clarified. We work in a small group (max. 10 participants, as I want you to get the most value out of this training)</p></li><li><p>Working in a small and focused group - the maximum number of participants is capped at 10 per group. No exceptions! This guarantees that I can dedicate a proper amount of time to each and every one of you trying to learn Fabric, and that you have enough space to ask your questions</p></li><li><p>You'll get access to the recording of each training session that will be available for the next 365 days for you to revisit and reinforce learning on demand</p></li><li><p>You'll get a FREE 1-hour "1-on-1" learning mentoring session with me, where we discuss your plans, future opportunities to upskill in Fabric, as well as additional learning resources to shape your knowledge and advance your career. Please bear in mind that this is NOT a consulting session (I won't solve your production-level Fabric problems), but you can always hire me if you need help with that matter:) </p></li><li><p>You'll learn directly from me:) Why from me, I hear you ask? I've been working with Microsoft Fabric since its very early days - before it was even called Fabric! As part of the early private preview program, I had an opportunity to get involved in the platform evolution together with Microsoft product teams. Additionally, I've been working on various real-life Fabric projects, supporting numerous organizations in their Fabric implementation journey. Last but not least, I've been officially recognized by Microsoft as an MVP for Microsoft Fabric. I also co-authored the "<em><strong><a href="https://learning.oreilly.com/library/view/-/9781098172916/">Fundamentals of Microsoft Fabric</a></strong></em>" book (with Ben Weissman). Check the full list of benefits for the training, as one of the benefits is a free copy of the book.</p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://learn.data-mozart.com/courses/24-hours-ms-fabric&quot;,&quot;text&quot;:&quot;Sign me up!&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://learn.data-mozart.com/courses/24-hours-ms-fabric"><span>Sign me up!</span></a></p><p></p><h2>Why you should NOT join the "24 Hours of Fabric" training?</h2><ul><li><p>If you are looking for an easy path to becoming a Fabric expert without investing any effort, this training is probably not for you. I will push you to the limits and ask you not only to complete hands-on labs, but also to read and learn beyond the topics we cover during the training session. I know that this might sound scary to some participants, but I can GUARANTEE that anyone who completes the entire "24 Hours of Fabric" training may work with the platform confidently</p></li><li><p>If you have never worked with any data analytics tool or platform before, this training might feel overwhelming to you. With that being said, I'll ASSUME that you have a basic understanding of the fundamental data analytics and data modeling concepts, since we need to focus on learning Fabric in a limited amount of time. However, if you feel you still have what it takes to take this training anyway, I'd be happy to provide you with the list of learning resources to prepare for the training</p></li></ul><h2>What will you learn in the &#8220;24 Hours of Fabric&#8221; training?</h2><p>Here is the high-level curriculum (some tweaks may be possible):</p><ol><li><p><strong>Navigating the Microsoft Fabric ecosystem</strong></p><ol><li><p>WHY MS Fabric?</p></li><li><p>WHAT is MS Fabric?</p></li><li><p>Tenant -&gt; Capacity -&gt; Domains -&gt; Workspaces -&gt; Items</p></li><li><p>Core components (high-level overview)</p></li><li><p>Pricing model</p></li></ol></li><li><p><strong>OneLake</strong></p><ol><li><p>Overview of data architectures</p></li><li><p>Overview of OneLake - concepts and technical implementation</p></li><li><p>Inside the Delta Parquet storage format</p></li><li><p>All roads lead to OneLake</p></li><li><p>Introducing Shortcuts and Mirroring,</p></li></ol></li><li><p><strong>Ingest or Access Data</strong></p><ol><li><p>Data Factory as a workload</p></li><li><p>Dataflows Gen2</p></li><li><p>Pipeline</p></li><li><p>Copy data activity</p></li><li><p>Copy job</p></li><li><p>Data loading methods: use cases and common scenarios</p></li><li><p>Apache Airflow</p></li><li><p>Scheduling and triggers</p></li></ol></li><li><p><strong>Data Engineering</strong></p><ol><li><p>Fundamentals of data engineering</p></li><li><p>Fundamentals of a lakehouse</p></li><li><p>Understanding the Spark engine fundamentals </p></li><li><p>Medallion design pattern fundamentals</p></li><li><p>Notebooks</p></li><li><p>Querying and working with the data in the lakehouse</p></li><li><p>Limitations and considerations</p></li></ol></li><li><p><strong>Data Warehousing</strong></p><ol><li><p>Fundamentals of data warehousing</p></li><li><p>Warehouse vs Lakehouse: Which one is for me?</p></li><li><p>Warehouse core elements: schemas, tables, views, sprocs</p></li><li><p>Advanced features (clone table, time travel, etc.)</p></li><li><p>Query and work with the warehouse data</p></li><li><p>Limitations and considerations</p></li></ol></li><li><p><strong>Direct Lake for Power BI</strong> </p><ol><li><p>What is Direct Lake?</p></li><li><p>Direct Lake inner workings</p></li><li><p>Two types of Direct Lake</p></li><li><p>Core concepts in Direct Lake (syncing, framing, transcoding, temperature)</p></li><li><p>Analyze query processing</p></li><li><p>Creating semantic models and reports with Direct Lake</p></li></ol></li><li><p><strong>Real-Time Intelligence</strong></p><ol><li><p>Stream processing vs. batch processing</p></li><li><p>Real-time hub</p></li><li><p>Eventhouse</p></li><li><p>KQL database</p></li><li><p>KQL queryset</p></li><li><p>Real-time dashboard</p></li><li><p>Activator</p></li><li><p>KQL fundamentals (data transformation, data processing, etc.)</p></li></ol></li><li><p><strong>Administration, Monitoring, Security, CI/CD</strong></p><ol><li><p>Administration: Admin portal and various settings</p></li><li><p>Monitoring: different "levels" of monitoring</p></li><li><p>Security: current security model + OneLake security</p></li><li><p>CI/CD options: Workspace Git integration, Deployment pipelines</p></li><li><p>Best practices for lifecycle management</p></li></ol></li><li><p><strong>AI Features</strong></p><ol><li><p>Copilots</p></li><li><p>Data agents</p></li></ol></li><li><p><strong>Prepare Data for Fabric Workloads</strong></p><ol><li><p>Choose between the lakehouse, warehouse, or eventhouse</p></li><li><p>OneLake integration for semantic models and eventhouse</p></li><li><p>Create views, functions, and stored procedures</p></li><li><p>Enrich data by adding new columns or tables</p></li><li><p>Implement a star schema for the lakehouse or warehouse</p></li><li><p>Denormalize, aggregate, and merge data</p></li><li><p>Identify and resolve duplicates and missing values</p></li><li><p>Change column data types</p></li></ol></li><li><p><strong>Advanced Concepts and Techniques</strong></p><ol><li><p>Incremental refresh with pipelines, notebooks, Dataflows</p></li><li><p>Metadata-driven pipelines</p></li><li><p>Implementing a medallion design pattern in MS Fabric</p></li><li><p>Semantic link</p></li><li><p>Configure Spark settings</p></li></ol></li><li><p><strong>Optimizing Fabric Workloads</strong></p><ol><li><p>Optimizing lakehouse tables: OPTIMIZE, VACUUM, V-order</p></li><li><p>Optimize SQL queries for a warehouse</p></li><li><p>Optimize Direct Lake model performance</p></li><li><p>Optimize Power BI semantic models</p></li></ol></li></ol><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://learn.data-mozart.com/courses/24-hours-ms-fabric&quot;,&quot;text&quot;:&quot;Book Your Seat!&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://learn.data-mozart.com/courses/24-hours-ms-fabric"><span>Book Your Seat!</span></a></p><p></p><h2>Training start and format</h2><ul><li><p>The training starts on January 5th (Monday) and ends on January 30th (Friday)</p></li><li><p>Sessions are scheduled every Monday, Wednesday, and Friday (2 hours each)</p></li><li><p>Sessions start at 8 AM PT / 11 AM EDT / 5 PM CET</p></li><li><p>Training is delivered virtually via Zoom</p></li></ul><h2>Bonus resources</h2><ul><li><p>Access to all training materials: decks, notebooks, queries, files</p></li><li><p>Access to a recording of each session for the next 365 days</p></li><li><p>Complimentary copy of the "Fundamentals of Microsoft Fabric" book</p></li><li><p>Certificate of completion</p></li></ul><p>Still not sure if this is for you? Check the full FAQ section and let me know if you have any additional questions.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/datamozart.substack.com/subscribe"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[How to Perform Common Data Transformations in Microsoft Fabric!]]></title><description><![CDATA[Discover how to perform 5 essential data transformations in Microsoft Fabric using PySpark, T-SQL, and KQL.]]></description><link>https://datamozart.substack.com/p/how-to-perform-common-data-transformations</link><guid isPermaLink="false">https://datamozart.substack.com/p/how-to-perform-common-data-transformations</guid><dc:creator><![CDATA[Nikola Ilic]]></dc:creator><pubDate>Thu, 03 Jul 2025 08:02:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!cUZK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b33b269-1d1f-4086-8fa7-72777b673155_614x409.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!cUZK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b33b269-1d1f-4086-8fa7-72777b673155_614x409.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!cUZK!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b33b269-1d1f-4086-8fa7-72777b673155_614x409.png 424w, /__u/substackcdn.com/image/fetch/$s_!cUZK!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b33b269-1d1f-4086-8fa7-72777b673155_614x409.png 848w, /__u/substackcdn.com/image/fetch/$s_!cUZK!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b33b269-1d1f-4086-8fa7-72777b673155_614x409.png 1272w, /__u/substackcdn.com/image/fetch/$s_!cUZK!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b33b269-1d1f-4086-8fa7-72777b673155_614x409.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!cUZK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b33b269-1d1f-4086-8fa7-72777b673155_614x409.png" width="614" height="409" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6b33b269-1d1f-4086-8fa7-72777b673155_614x409.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:409,&quot;width&quot;:614,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Featured Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Featured Image" title="Featured Image" srcset="/__u/substackcdn.com/image/fetch/$s_!cUZK!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b33b269-1d1f-4086-8fa7-72777b673155_614x409.png 424w, /__u/substackcdn.com/image/fetch/$s_!cUZK!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b33b269-1d1f-4086-8fa7-72777b673155_614x409.png 848w, /__u/substackcdn.com/image/fetch/$s_!cUZK!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b33b269-1d1f-4086-8fa7-72777b673155_614x409.png 1272w, /__u/substackcdn.com/image/fetch/$s_!cUZK!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b33b269-1d1f-4086-8fa7-72777b673155_614x409.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Data transformations are the bread and butter of every analytics project. Let&#8217;s be honest &#8211; raw data is usually &#8211; well, raw &#8211; which in many cases means messy, invalid, and inconsistent. Before you can extract valuable insights, you need to transform the data into something clean, structured, and ready for analysis.</p><p>By this point, if we talk about Microsoft Fabric specifically, you are probably aware that the same task can be done in multiple different ways. I&#8217;ve already written about <a href="https://data-mozart.com/stop-guessing-choose-the-right-fabric-engine-for-your-data/">how to pick the most suitable analytical engine</a>. But, even then, the possibilities are tremendous. By that, I mean that choosing the analytical engine doesn&#8217;t prevent you from mixing more than one programming language for data transformations.</p><p>In the lakehouse, for example, you can transform the data by using PySpark, but also Spark SQL, which is VERY similar to Microsoft&#8217;s dialect of SQL, called Transact-SQL (or T-SQL, abbreviated). In the warehouse, you can apply transformations using T-SQL, but Python is also an option by leveraging a special pyodbc library. Finally, in the KQL database, you can run both KQL and T-SQL statements. As you may rightly assume, the lines are blurred, and sometimes the path is not 100% clear.</p><p>Therefore, in this article, I&#8217;ll explore five common data transformations and how to perform each one using three Fabric languages: PySpark, T-SQL, and KQL.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><em><strong>Extracting date parts</strong></em></h2><p>Let&#8217;s start by examining how to extract date parts from the data column. This is a very common requirement when you have only the date column, and you need to extend date-related information with additional attributes, such as year, month, etc.</p><p>Imagine that we have a source data that contains the OrderDate column only, and our task is to create the Year and Month columns out of it.</p><pre><code>from pyspark.sql.functions import *

 # Create Year and Month columns
 transformed_df = df.withColumn("Year", year(col("OrderDate"))).withColumn("Month", month(col("OrderDate")))</code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!mkmq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19b35299-2cff-4547-97ad-bf4db25de3d5_1024x313.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!mkmq!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19b35299-2cff-4547-97ad-bf4db25de3d5_1024x313.png 424w, /__u/substackcdn.com/image/fetch/$s_!mkmq!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19b35299-2cff-4547-97ad-bf4db25de3d5_1024x313.png 848w, /__u/substackcdn.com/image/fetch/$s_!mkmq!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19b35299-2cff-4547-97ad-bf4db25de3d5_1024x313.png 1272w, /__u/substackcdn.com/image/fetch/$s_!mkmq!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19b35299-2cff-4547-97ad-bf4db25de3d5_1024x313.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!mkmq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19b35299-2cff-4547-97ad-bf4db25de3d5_1024x313.png" width="1024" height="313" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/19b35299-2cff-4547-97ad-bf4db25de3d5_1024x313.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:313,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!mkmq!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19b35299-2cff-4547-97ad-bf4db25de3d5_1024x313.png 424w, /__u/substackcdn.com/image/fetch/$s_!mkmq!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19b35299-2cff-4547-97ad-bf4db25de3d5_1024x313.png 848w, /__u/substackcdn.com/image/fetch/$s_!mkmq!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19b35299-2cff-4547-97ad-bf4db25de3d5_1024x313.png 1272w, /__u/substackcdn.com/image/fetch/$s_!mkmq!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19b35299-2cff-4547-97ad-bf4db25de3d5_1024x313.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The same can be done using T-SQL&#8230;</p><pre><code>--Extracting date parts
SELECT SalesOrderNumber
    , OrderDate
    , YEAR(OrderDate) as OrderYear
    , MONTH(OrderDate) as OrderMonth
    , DATENAME(WEEKDAY, OrderDate) as DayOfWeek
FROM dbo.orders</code></pre><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!uDt9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12356525-f469-4350-9fcb-5acf7293f744_1024x234.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!uDt9!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12356525-f469-4350-9fcb-5acf7293f744_1024x234.png 424w, /__u/substackcdn.com/image/fetch/$s_!uDt9!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12356525-f469-4350-9fcb-5acf7293f744_1024x234.png 848w, /__u/substackcdn.com/image/fetch/$s_!uDt9!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12356525-f469-4350-9fcb-5acf7293f744_1024x234.png 1272w, /__u/substackcdn.com/image/fetch/$s_!uDt9!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12356525-f469-4350-9fcb-5acf7293f744_1024x234.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!uDt9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12356525-f469-4350-9fcb-5acf7293f744_1024x234.png" width="1024" height="234" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/12356525-f469-4350-9fcb-5acf7293f744_1024x234.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:234,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!uDt9!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12356525-f469-4350-9fcb-5acf7293f744_1024x234.png 424w, /__u/substackcdn.com/image/fetch/$s_!uDt9!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12356525-f469-4350-9fcb-5acf7293f744_1024x234.png 848w, /__u/substackcdn.com/image/fetch/$s_!uDt9!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12356525-f469-4350-9fcb-5acf7293f744_1024x234.png 1272w, /__u/substackcdn.com/image/fetch/$s_!uDt9!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12356525-f469-4350-9fcb-5acf7293f744_1024x234.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>&#8230;and KQL:</p><pre><code>//extracting date parts
Weather
| extend dateYear = datetime_part("year", StartTime)
         , dateMonth = datetime_part("month", StartTime)
         , dayOfWeek = dayofweek(StartTime)</code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!fO8v!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce3e14f4-3086-47c2-8a38-eae6c3de41bb_1024x686.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!fO8v!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce3e14f4-3086-47c2-8a38-eae6c3de41bb_1024x686.png 424w, /__u/substackcdn.com/image/fetch/$s_!fO8v!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce3e14f4-3086-47c2-8a38-eae6c3de41bb_1024x686.png 848w, /__u/substackcdn.com/image/fetch/$s_!fO8v!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce3e14f4-3086-47c2-8a38-eae6c3de41bb_1024x686.png 1272w, /__u/substackcdn.com/image/fetch/$s_!fO8v!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce3e14f4-3086-47c2-8a38-eae6c3de41bb_1024x686.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!fO8v!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce3e14f4-3086-47c2-8a38-eae6c3de41bb_1024x686.png" width="1024" height="686" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ce3e14f4-3086-47c2-8a38-eae6c3de41bb_1024x686.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:686,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!fO8v!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce3e14f4-3086-47c2-8a38-eae6c3de41bb_1024x686.png 424w, /__u/substackcdn.com/image/fetch/$s_!fO8v!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce3e14f4-3086-47c2-8a38-eae6c3de41bb_1024x686.png 848w, /__u/substackcdn.com/image/fetch/$s_!fO8v!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce3e14f4-3086-47c2-8a38-eae6c3de41bb_1024x686.png 1272w, /__u/substackcdn.com/image/fetch/$s_!fO8v!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce3e14f4-3086-47c2-8a38-eae6c3de41bb_1024x686.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The only difference compared to T-SQL is that the dayofweek KQL function will return the number of days since the preceding Sunday, as a timespan.</p><h2><em><strong>Uppercase/lowercase transformation</strong></em></h2><p>Let&#8217;s learn how to apply uppercase/lowercase transformation in PySpark:</p><pre><code>df_transformed = df.selectExpr(
    "SalesOrderNumber as order_ID",
    "upper(CustomerName) as customer_name_upper"
)
df_transformed.show()</code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!wmfK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0a5dda9-460f-476c-8718-75f46cede78f_304x622.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!wmfK!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0a5dda9-460f-476c-8718-75f46cede78f_304x622.png 424w, /__u/substackcdn.com/image/fetch/$s_!wmfK!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0a5dda9-460f-476c-8718-75f46cede78f_304x622.png 848w, /__u/substackcdn.com/image/fetch/$s_!wmfK!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0a5dda9-460f-476c-8718-75f46cede78f_304x622.png 1272w, /__u/substackcdn.com/image/fetch/$s_!wmfK!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0a5dda9-460f-476c-8718-75f46cede78f_304x622.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!wmfK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0a5dda9-460f-476c-8718-75f46cede78f_304x622.png" width="304" height="622" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e0a5dda9-460f-476c-8718-75f46cede78f_304x622.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:622,&quot;width&quot;:304,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!wmfK!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0a5dda9-460f-476c-8718-75f46cede78f_304x622.png 424w, /__u/substackcdn.com/image/fetch/$s_!wmfK!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0a5dda9-460f-476c-8718-75f46cede78f_304x622.png 848w, /__u/substackcdn.com/image/fetch/$s_!wmfK!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0a5dda9-460f-476c-8718-75f46cede78f_304x622.png 1272w, /__u/substackcdn.com/image/fetch/$s_!wmfK!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0a5dda9-460f-476c-8718-75f46cede78f_304x622.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Now, with T-SQL:</p><pre><code>-- Alias, UPPER transformation
SELECT SalesOrderNumber as order_id
    , UPPER(CustomerName) as upper_cust_name
FROM dbo.orders</code></pre><p>And, finally, let&#8217;s lowercase all the names by using KQL:</p><pre><code>//select and rename columns
Weather
| project State
          , LowerState = tolower(State)</code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!K0Dd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06bffaa3-38ee-46db-a669-23b64e21a194_352x431.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!K0Dd!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06bffaa3-38ee-46db-a669-23b64e21a194_352x431.png 424w, /__u/substackcdn.com/image/fetch/$s_!K0Dd!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06bffaa3-38ee-46db-a669-23b64e21a194_352x431.png 848w, /__u/substackcdn.com/image/fetch/$s_!K0Dd!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06bffaa3-38ee-46db-a669-23b64e21a194_352x431.png 1272w, /__u/substackcdn.com/image/fetch/$s_!K0Dd!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06bffaa3-38ee-46db-a669-23b64e21a194_352x431.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!K0Dd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06bffaa3-38ee-46db-a669-23b64e21a194_352x431.png" width="352" height="431" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/06bffaa3-38ee-46db-a669-23b64e21a194_352x431.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:431,&quot;width&quot;:352,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!K0Dd!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06bffaa3-38ee-46db-a669-23b64e21a194_352x431.png 424w, /__u/substackcdn.com/image/fetch/$s_!K0Dd!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06bffaa3-38ee-46db-a669-23b64e21a194_352x431.png 848w, /__u/substackcdn.com/image/fetch/$s_!K0Dd!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06bffaa3-38ee-46db-a669-23b64e21a194_352x431.png 1272w, /__u/substackcdn.com/image/fetch/$s_!K0Dd!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06bffaa3-38ee-46db-a669-23b64e21a194_352x431.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><em><strong>Conditional column</strong></em></h2><ul><li><p><strong>PySpark</strong> &#8211; in the following example, we are creating a conditional column <em><strong>price_range</strong></em>, based on the value in the existing UnitPrice column. If the value is greater than 1000, we want to set the value of the price_range to &#8220;High&#8221;. If it&#8217;s greater than 500, then the price_range is &#8220;Medium&#8221;. For all the other values, the price_range will return &#8220;Low&#8221;. You might be thinking: wait, if there is a Unit Price value of, let&#8217;s say, 2000, this can be both High and Medium. However, the expression evaluation happens in the order you defined in the statement. First, it will check if the particular value is greater than 1000. If this evaluates to true, no further checks will be performed.</p></li></ul><pre><code>from pyspark.sql.functions import col, when

df = df.withColumn(
    "price_range",
    when(col("UnitPrice") &gt; 1000, "High")
    .when(col("UnitPrice") &gt; 500, "Medium")
    .otherwise("Low")
)
df.select("SalesOrderNumber","OrderDate","CustomerName","Item","Quantity","UnitPrice", "price_range").show()</code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!hOgL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6d345c9-eaae-43fc-a6cc-54a2fe30518b_1002x622.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!hOgL!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6d345c9-eaae-43fc-a6cc-54a2fe30518b_1002x622.png 424w, /__u/substackcdn.com/image/fetch/$s_!hOgL!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6d345c9-eaae-43fc-a6cc-54a2fe30518b_1002x622.png 848w, /__u/substackcdn.com/image/fetch/$s_!hOgL!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6d345c9-eaae-43fc-a6cc-54a2fe30518b_1002x622.png 1272w, /__u/substackcdn.com/image/fetch/$s_!hOgL!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6d345c9-eaae-43fc-a6cc-54a2fe30518b_1002x622.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!hOgL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6d345c9-eaae-43fc-a6cc-54a2fe30518b_1002x622.png" width="1002" height="622" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d6d345c9-eaae-43fc-a6cc-54a2fe30518b_1002x622.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:622,&quot;width&quot;:1002,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!hOgL!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6d345c9-eaae-43fc-a6cc-54a2fe30518b_1002x622.png 424w, /__u/substackcdn.com/image/fetch/$s_!hOgL!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6d345c9-eaae-43fc-a6cc-54a2fe30518b_1002x622.png 848w, /__u/substackcdn.com/image/fetch/$s_!hOgL!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6d345c9-eaae-43fc-a6cc-54a2fe30518b_1002x622.png 1272w, /__u/substackcdn.com/image/fetch/$s_!hOgL!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6d345c9-eaae-43fc-a6cc-54a2fe30518b_1002x622.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ul><li><p>T-SQL</p></li></ul><pre><code>--Conditional column
SELECT SalesOrderNumber
    , OrderDate
    , CustomerName
    , Item
    , Quantity
    , UnitPrice
    , CASE 
        WHEN UnitPrice &gt; 1000 THEN 'High'
        WHEN UnitPrice &gt; 500 THEN 'Medium'
        ELSE 'Low'
    END AS PriceRange
FROM dbo.orders</code></pre><ul><li><p>KQL</p></li></ul><pre><code>//conditional column
Weather
| extend DamagePropertyClass = case (
    DamageProperty &gt; 49999, "High"
    , DamageProperty &gt; 9999, "Medium"
    , "Low"
)</code></pre><h2><em><strong>Pivot transformation</strong></em></h2><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Sometimes, we need to tweak the structure of the underlying data. Pivot transformation is a common example of transforming rows into columns. In this case, I&#8217;m creating a new dataframe df_pivot, which first groups the data by the order date, then pivots values from the price_range column, remember those highs, mediums, and lows from the previous example, and calculates the sum of the unit price.</p><pre><code>df_pivot = df.groupBy("OrderDate").pivot("price_range").sum("UnitPrice")

df_pivot.show()</code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!a8iR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F226b5312-78cf-487b-b6d2-0482dcd4f993_666x618.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!a8iR!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F226b5312-78cf-487b-b6d2-0482dcd4f993_666x618.png 424w, /__u/substackcdn.com/image/fetch/$s_!a8iR!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F226b5312-78cf-487b-b6d2-0482dcd4f993_666x618.png 848w, /__u/substackcdn.com/image/fetch/$s_!a8iR!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F226b5312-78cf-487b-b6d2-0482dcd4f993_666x618.png 1272w, /__u/substackcdn.com/image/fetch/$s_!a8iR!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F226b5312-78cf-487b-b6d2-0482dcd4f993_666x618.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!a8iR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F226b5312-78cf-487b-b6d2-0482dcd4f993_666x618.png" width="666" height="618" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/226b5312-78cf-487b-b6d2-0482dcd4f993_666x618.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:618,&quot;width&quot;:666,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!a8iR!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F226b5312-78cf-487b-b6d2-0482dcd4f993_666x618.png 424w, /__u/substackcdn.com/image/fetch/$s_!a8iR!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F226b5312-78cf-487b-b6d2-0482dcd4f993_666x618.png 848w, /__u/substackcdn.com/image/fetch/$s_!a8iR!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F226b5312-78cf-487b-b6d2-0482dcd4f993_666x618.png 1272w, /__u/substackcdn.com/image/fetch/$s_!a8iR!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F226b5312-78cf-487b-b6d2-0482dcd4f993_666x618.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The T-SQL implementation requires slightly more complex code, as you may notice in the following snippet:</p><pre><code>--PIVOT Transformation
SELECT 
    OrderDate 
    , [High] 
    , [Medium] 
    , [Low] 
FROM (
    SELECT 
        OrderDate
        , UnitPrice
        , CASE 
        WHEN UnitPrice &gt; 1000 THEN 'High'
        WHEN UnitPrice &gt; 500 THEN 'Medium'
        ELSE 'Low'
    END AS PriceRange
    FROM dbo.orders
) AS SourceTable
PIVOT (
    SUM(UnitPrice)
    FOR PriceRange IN ([High], [Medium], [Low])
) AS PivotTable;</code></pre><p>Unlike PySpark and T-SQL, which both provide a built-in pivot function, there is no such function in KQL. However, there is a pivot plugin, and we can mimic PIVOT behavior by combining the summarize and evaluate operators. In this example, we are summing injuries direct per year, month and state, and then pivoting states to be columns.</p><pre><code>//Pivot transformation
Weather
| summarize Total = sum(InjuriesDirect) by datetime_part ("year", StartTime), datetime_part ("month", StartTime), State
| evaluate pivot(State, sum(Total))</code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!-Ubz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cafb6b5-7d10-4ef5-8f11-f862f12e6946_1024x305.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!-Ubz!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cafb6b5-7d10-4ef5-8f11-f862f12e6946_1024x305.png 424w, /__u/substackcdn.com/image/fetch/$s_!-Ubz!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cafb6b5-7d10-4ef5-8f11-f862f12e6946_1024x305.png 848w, /__u/substackcdn.com/image/fetch/$s_!-Ubz!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cafb6b5-7d10-4ef5-8f11-f862f12e6946_1024x305.png 1272w, /__u/substackcdn.com/image/fetch/$s_!-Ubz!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cafb6b5-7d10-4ef5-8f11-f862f12e6946_1024x305.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!-Ubz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cafb6b5-7d10-4ef5-8f11-f862f12e6946_1024x305.png" width="1024" height="305" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3cafb6b5-7d10-4ef5-8f11-f862f12e6946_1024x305.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:305,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!-Ubz!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cafb6b5-7d10-4ef5-8f11-f862f12e6946_1024x305.png 424w, /__u/substackcdn.com/image/fetch/$s_!-Ubz!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cafb6b5-7d10-4ef5-8f11-f862f12e6946_1024x305.png 848w, /__u/substackcdn.com/image/fetch/$s_!-Ubz!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cafb6b5-7d10-4ef5-8f11-f862f12e6946_1024x305.png 1272w, /__u/substackcdn.com/image/fetch/$s_!-Ubz!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cafb6b5-7d10-4ef5-8f11-f862f12e6946_1024x305.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><em><strong>Aggregation and grouping</strong></em></h2><p>Let&#8217;s wrap it up by examining how to perform aggregation and grouping operations when transforming the data. This is one of the most frequent requirements in analytical scenarios.</p><p>First, PySpark. I&#8217;m grouping the data by the year and month columns, and then I&#8217;m performing the sum aggregate function on the Unit price column. In the last step, we can also rename the column if needed, which I did here.</p><pre><code>sales_by_yearMonth = orders_df.groupBy("Year", "Month").agg(
    {"UnitPrice": "sum"}
).withColumnRenamed("sum(UnitPrice)", "Unit_Price")

sales_by_yearMonth.show()</code></pre><p>Now, T-SQL:</p><pre><code>--Aggregate and group data
SELECT YEAR(OrderDate) as OrderYear
    , MONTH(OrderDate) as OrderMonth
    , count(*) as TotalOrders
    , SUM(UnitPrice) as TotalUnitPrice
FROM dbo.orders
GROUP BY YEAR(OrderDate)
    , MONTH(OrderDate)</code></pre><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!HFi3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e8c269f-42b2-4554-bef8-c70952110faa_1024x222.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!HFi3!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e8c269f-42b2-4554-bef8-c70952110faa_1024x222.png 424w, /__u/substackcdn.com/image/fetch/$s_!HFi3!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e8c269f-42b2-4554-bef8-c70952110faa_1024x222.png 848w, /__u/substackcdn.com/image/fetch/$s_!HFi3!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e8c269f-42b2-4554-bef8-c70952110faa_1024x222.png 1272w, /__u/substackcdn.com/image/fetch/$s_!HFi3!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e8c269f-42b2-4554-bef8-c70952110faa_1024x222.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!HFi3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e8c269f-42b2-4554-bef8-c70952110faa_1024x222.png" width="1024" height="222" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9e8c269f-42b2-4554-bef8-c70952110faa_1024x222.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:222,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!HFi3!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e8c269f-42b2-4554-bef8-c70952110faa_1024x222.png 424w, /__u/substackcdn.com/image/fetch/$s_!HFi3!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e8c269f-42b2-4554-bef8-c70952110faa_1024x222.png 848w, /__u/substackcdn.com/image/fetch/$s_!HFi3!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e8c269f-42b2-4554-bef8-c70952110faa_1024x222.png 1272w, /__u/substackcdn.com/image/fetch/$s_!HFi3!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e8c269f-42b2-4554-bef8-c70952110faa_1024x222.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>And, finally, KQL:</p><pre><code>//aggregate and group data
//Use summarize operator
Weather
| summarize TotalRecords = count() by State</code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!DoJd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4b281d-a9da-4b58-93c3-8d073839abac_368x413.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!DoJd!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4b281d-a9da-4b58-93c3-8d073839abac_368x413.png 424w, /__u/substackcdn.com/image/fetch/$s_!DoJd!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4b281d-a9da-4b58-93c3-8d073839abac_368x413.png 848w, /__u/substackcdn.com/image/fetch/$s_!DoJd!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4b281d-a9da-4b58-93c3-8d073839abac_368x413.png 1272w, /__u/substackcdn.com/image/fetch/$s_!DoJd!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4b281d-a9da-4b58-93c3-8d073839abac_368x413.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!DoJd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4b281d-a9da-4b58-93c3-8d073839abac_368x413.png" width="368" height="413" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d4b281d-a9da-4b58-93c3-8d073839abac_368x413.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:413,&quot;width&quot;:368,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!DoJd!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4b281d-a9da-4b58-93c3-8d073839abac_368x413.png 424w, /__u/substackcdn.com/image/fetch/$s_!DoJd!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4b281d-a9da-4b58-93c3-8d073839abac_368x413.png 848w, /__u/substackcdn.com/image/fetch/$s_!DoJd!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4b281d-a9da-4b58-93c3-8d073839abac_368x413.png 1272w, /__u/substackcdn.com/image/fetch/$s_!DoJd!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4b281d-a9da-4b58-93c3-8d073839abac_368x413.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><em><strong>Conclusion</strong></em></h2><p>By understanding and leveraging the strengths of PySpark, T-SQL, and KQL, you can efficiently handle numerous data transformation tasks in Microsoft Fabric. Whether it&#8217;s filtering, aggregating, pivoting, cleaning, or enriching the data, choosing the right language for each scenario will enable faster and more resilient workflows, enhance productivity, and deliver more value from the raw data.</p><p>Thanks for reading!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Stop Guessing! Choose the Right Fabric Engine for Your Data!]]></title><description><![CDATA[Microsoft Fabric is all about the options. This article provides a guidance on the most common Fabric dilemma - which analytical storage engine to choose?]]></description><link>https://datamozart.substack.com/p/stop-guessing-choose-the-right-fabric</link><guid isPermaLink="false">https://datamozart.substack.com/p/stop-guessing-choose-the-right-fabric</guid><dc:creator><![CDATA[Nikola Ilic]]></dc:creator><pubDate>Sat, 14 Jun 2025 10:13:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!vz3J!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F245ff3e2-9831-44b0-9942-642843ab6755_1280x700.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!vz3J!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F245ff3e2-9831-44b0-9942-642843ab6755_1280x700.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!vz3J!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F245ff3e2-9831-44b0-9942-642843ab6755_1280x700.png 424w, /__u/substackcdn.com/image/fetch/$s_!vz3J!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F245ff3e2-9831-44b0-9942-642843ab6755_1280x700.png 848w, /__u/substackcdn.com/image/fetch/$s_!vz3J!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F245ff3e2-9831-44b0-9942-642843ab6755_1280x700.png 1272w, /__u/substackcdn.com/image/fetch/$s_!vz3J!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F245ff3e2-9831-44b0-9942-642843ab6755_1280x700.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!vz3J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F245ff3e2-9831-44b0-9942-642843ab6755_1280x700.png" width="1280" height="700" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/245ff3e2-9831-44b0-9942-642843ab6755_1280x700.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:700,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Featured Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Featured Image" title="Featured Image" srcset="/__u/substackcdn.com/image/fetch/$s_!vz3J!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F245ff3e2-9831-44b0-9942-642843ab6755_1280x700.png 424w, /__u/substackcdn.com/image/fetch/$s_!vz3J!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F245ff3e2-9831-44b0-9942-642843ab6755_1280x700.png 848w, /__u/substackcdn.com/image/fetch/$s_!vz3J!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F245ff3e2-9831-44b0-9942-642843ab6755_1280x700.png 1272w, /__u/substackcdn.com/image/fetch/$s_!vz3J!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F245ff3e2-9831-44b0-9942-642843ab6755_1280x700.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Microsoft Fabric is all about the options. The same task can be completed in multiple different ways. And, it doesn&#8217;t necessarily mean that one way is better than the other. Sometimes, it boils down to the skillset of the individuals in your organization performing the data task or maybe a personal preference. However, sometimes, these decisions might have a larger impact on the entire data platform workload. Hence, it is of paramount importance to understand the implications of choosing <em>Option A </em>vs. <em>Option B</em>, for example,to complete <em>Task XYZ</em> in Microsoft Fabric.</p><p>In this article, I will do my best to provide you with guidance on the most common Fabric dilemmas. Please bear in mind that the list of dilemmas is not definitive &#8211; I simply handpicked some of the challenges that Fabric practitioners face most frequently, and where I believe that such guidance would make the lives of these practitioners much easier in their day-to-day work with Microsoft Fabric.</p><h2><em><strong>General recommended practices and edge-case scenarios</strong></em><strong>&#8230;</strong></h2><p><em>Before we proceed, an important disclaimer: the guidance I&#8217;m providing here is based on both my experience with implementing Microsoft Fabric in real-world scenarios, and the recommended practices provided by Microsoft.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Please keep in mind that the guidance relies on <em><strong>general recommended</strong></em> practices (I intentionally avoid using the phrase <em><strong>best</strong></em> practices, because the best is very hard to determine and agree on). The word general means that the practice I recommend should be used in most of the respective scenarios, but there will always be edge cases when the recommended practice is simply not the best solution. Therefore, you should always evaluate whether the general recommended practice makes sense in your specific use case.</p><h2><em><strong>Choosing the Analytical Engine</strong></em></h2><p>All Microsoft Fabric roads lead to OneLake! You&#8217;ve already learned that mantra. However, which road is right for <em>you</em>? Should you pick a lakehouse, a warehouse, or maybe an eventhouse for storing your data in OneLake? There are numerous factors to take into account, so let&#8217;s explore three that I consider most relevant: data volume, supported data formats, and supported programming languages.</p><h3><em><strong>Data volume</strong></em></h3><p>Let&#8217;s first talk about the data volume. Although there is no single number that differentiates <em>small</em> and <em>big</em> data, and you&#8217;ll probably find dozens of opinions in the various resources on the web or books, we often refer to big data as an extremely large and diverse collection of data that continuously grows over time. However, for the sake of setting boundaries when making decisions, we will consider big data anything above 5 TB of stored data, and 100+ GB of ingested data per day.</p><p>When choosing the optimal analytical engine in Microsoft Fabric, there is no such thing as the minimum amount of data suitable for a warehouse versus a lakehouse, or vice versa. In theory, you can store only a few records of data in any of the analytical stores in Fabric, but you&#8217;ll start reaping the benefits of Massively Parallel Processing (MPP) architectures, which are implemented in both Fabric lakehouse and Fabric warehouse, with large amounts of data only.</p><p>Explaining the details about MPP is beyond the scope of this article, but you can find more details <a href="https://www.tibco.com/glossary/what-is-massively-parallel-processing">here</a>.</p><p>To wrap up &#8211; data volume shouldn&#8217;t be a determining factor when deciding which analytical engine to use, as each lakehouse, warehouse, and eventhouse, scales to support petabytes of data if necessary.</p><h3><em><strong>Supported data formats</strong></em></h3><p>When choosing a storage option in OneLake, you&#8217;ll need to first consider the data format. The table you see depicts supported data formats in the three Fabric analytical storages.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!o6sD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06e0b62b-0e9b-49cb-a244-0e8deadf2404_1024x207.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!o6sD!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06e0b62b-0e9b-49cb-a244-0e8deadf2404_1024x207.png 424w, /__u/substackcdn.com/image/fetch/$s_!o6sD!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06e0b62b-0e9b-49cb-a244-0e8deadf2404_1024x207.png 848w, /__u/substackcdn.com/image/fetch/$s_!o6sD!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06e0b62b-0e9b-49cb-a244-0e8deadf2404_1024x207.png 1272w, /__u/substackcdn.com/image/fetch/$s_!o6sD!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06e0b62b-0e9b-49cb-a244-0e8deadf2404_1024x207.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!o6sD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06e0b62b-0e9b-49cb-a244-0e8deadf2404_1024x207.png" width="1024" height="207" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/06e0b62b-0e9b-49cb-a244-0e8deadf2404_1024x207.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:207,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!o6sD!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06e0b62b-0e9b-49cb-a244-0e8deadf2404_1024x207.png 424w, /__u/substackcdn.com/image/fetch/$s_!o6sD!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06e0b62b-0e9b-49cb-a244-0e8deadf2404_1024x207.png 848w, /__u/substackcdn.com/image/fetch/$s_!o6sD!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06e0b62b-0e9b-49cb-a244-0e8deadf2404_1024x207.png 1272w, /__u/substackcdn.com/image/fetch/$s_!o6sD!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06e0b62b-0e9b-49cb-a244-0e8deadf2404_1024x207.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>As you can see, both lakehouse and eventhouse support all data formats. So, the fair question would be: when should I use a lakehouse over an eventhouse?</p><p>The short answer is: whenever you need to handle any type of streaming, or event-based data, choose an eventhouse. A few examples of event-based data are: telemetry and log data, time series, data collected from IoT devices, etc.</p><p>Of course, the long answer to the question about Lakehouse vs. Eventhouse is more nuanced and depends on numerous factors, such as:</p><ul><li><p><strong>Using data downstream</strong> &#8211; For example, if you are using Direct Lake mode for Power BI semantic models, data must be available in Delta format, which is not the case in the eventhouse (unless you enable the <a href="https://learn.microsoft.com/en-us/fabric/real-time-intelligence/event-house-onelake-availability">Eventhouse OneLake Availability feature</a>)</p></li><li><p><strong>Optimizing storage cost</strong> &#8211; Generally speaking, storage is more expensive for eventhouse than for lakehouse, since eventhouses use OneLake Cache Storage to provide the fastest query response times at an additional cost, as described <a href="https://learn.microsoft.com/en-us/fabric/real-time-intelligence/real-time-intelligence-consumption#storage-billing">here</a>. A point worth mentioning is that when you set the caching policy to move the data to cold storage in the eventhouse, it&#8217;s billed the same as regular OneLake storage. Hence, only keeping the data in the hot cache (which improves the query performance) will cost you more</p></li><li><p><strong>Processing streaming data</strong> &#8211; Eventhouse is optimized for processing streaming data (indexing and partitioning happen automatically), whereas processing streaming data using a lakehouse will force the creation of multiple small parquet files that must be vacuumed and optimized later, which can lead to increased capacity unit consumption. Explaining the <strong>vacuum</strong> and <strong>optimize</strong> operations is out of the scope of this article, but you can read more about it <a href="https://learn.microsoft.com/en-us/fabric/data-engineering/lakehouse-table-maintenance">here</a></p></li></ul><h3><em><strong>Supported programming languages</strong></em></h3><p>Let&#8217;s now examine how supported programming languages might affect the storage choice. This is undoubtedly one of the key factors when making a decision, not only about the analytical engine, but also when designing the entire Fabric architecture. The reason is obvious &#8211; let&#8217;s imagine that the entire data team in your organization consists of hard-core T-SQL developers. Would you force them to learn another programming language (Python, for example)? Or would you rather choose a Fabric component that plays to their strength?</p><p>The following table shows supported programming languages for both read and write operations.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!fNbP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd03c1d88-dbba-4cfc-be6f-cdd43fa3717a_1024x616.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!fNbP!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd03c1d88-dbba-4cfc-be6f-cdd43fa3717a_1024x616.png 424w, /__u/substackcdn.com/image/fetch/$s_!fNbP!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd03c1d88-dbba-4cfc-be6f-cdd43fa3717a_1024x616.png 848w, /__u/substackcdn.com/image/fetch/$s_!fNbP!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd03c1d88-dbba-4cfc-be6f-cdd43fa3717a_1024x616.png 1272w, /__u/substackcdn.com/image/fetch/$s_!fNbP!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd03c1d88-dbba-4cfc-be6f-cdd43fa3717a_1024x616.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!fNbP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd03c1d88-dbba-4cfc-be6f-cdd43fa3717a_1024x616.png" width="1024" height="616" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d03c1d88-dbba-4cfc-be6f-cdd43fa3717a_1024x616.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:616,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!fNbP!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd03c1d88-dbba-4cfc-be6f-cdd43fa3717a_1024x616.png 424w, /__u/substackcdn.com/image/fetch/$s_!fNbP!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd03c1d88-dbba-4cfc-be6f-cdd43fa3717a_1024x616.png 848w, /__u/substackcdn.com/image/fetch/$s_!fNbP!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd03c1d88-dbba-4cfc-be6f-cdd43fa3717a_1024x616.png 1272w, /__u/substackcdn.com/image/fetch/$s_!fNbP!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd03c1d88-dbba-4cfc-be6f-cdd43fa3717a_1024x616.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Let&#8217;s stop for a moment and examine the importance of the selection you make based on this information. Imagine that you&#8217;re implementing a medallion design pattern in Microsoft Fabric. In accordance with the recommended practice of building a Star schema dimensional model in the final layer (gold/curated), you&#8217;d need to apply various data transformations to implement business rules and logic. Hence, if your data engineers or analytics engineers are feeling comfortable writing T-SQL, you should probably choose a warehouse for this layer, since T-SQL can&#8217;t be used for inserting, updating, or deleting the data in the lakehouse and/or eventhouse.</p><p>On the flip side, if the majority of the data team is proficient with Python or any language that can be used to manipulate the data using the Spark engine, you&#8217;d probably go all the way with the lakehouse. Although, in full honesty, the road between the T-SQL and Spark SQL is not that long, in case you plan to leverage SQL skills while using the lakehouse.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datamozart.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Head First Data is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><em><strong>OneLake Interoperability</strong></em></h2><p>Now, things become more complex&#8230;&#8220;What if I choose the lakehouse for my silver layer, and the warehouse for the gold layer? Can I combine the data from both the lakehouse and the warehouse?&#8221; This is a very common question asked by data professionals considering or already using Microsoft Fabric. Hence, in this table, you&#8217;ll find an overview of the interoperability between various analytical engines in Fabric.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!LPnn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7c03317-1d09-4131-b471-368ba83df96e_1024x576.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!LPnn!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7c03317-1d09-4131-b471-368ba83df96e_1024x576.png 424w, /__u/substackcdn.com/image/fetch/$s_!LPnn!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7c03317-1d09-4131-b471-368ba83df96e_1024x576.png 848w, /__u/substackcdn.com/image/fetch/$s_!LPnn!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7c03317-1d09-4131-b471-368ba83df96e_1024x576.png 1272w, /__u/substackcdn.com/image/fetch/$s_!LPnn!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_webp, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7c03317-1d09-4131-b471-368ba83df96e_1024x576.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!LPnn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7c03317-1d09-4131-b471-368ba83df96e_1024x576.png" width="1024" height="576" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e7c03317-1d09-4131-b471-368ba83df96e_1024x576.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:576,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!LPnn!, /__u/datamozart.substack.com/w_424, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7c03317-1d09-4131-b471-368ba83df96e_1024x576.png 424w, /__u/substackcdn.com/image/fetch/$s_!LPnn!, /__u/datamozart.substack.com/w_848, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7c03317-1d09-4131-b471-368ba83df96e_1024x576.png 848w, /__u/substackcdn.com/image/fetch/$s_!LPnn!, /__u/datamozart.substack.com/w_1272, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7c03317-1d09-4131-b471-368ba83df96e_1024x576.png 1272w, /__u/substackcdn.com/image/fetch/$s_!LPnn!, /__u/datamozart.substack.com/w_1456, /__u/datamozart.substack.com/c_limit, /__u/datamozart.substack.com/f_auto, /__u/datamozart.substack.com/q_auto:good, /__u/datamozart.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7c03317-1d09-4131-b471-368ba83df96e_1024x576.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><em><strong>Scenario-based Decision Guide</strong></em></h2><p>Based on all of the aforementioned criteria and typical analytical requirements, I identified a few common scenarios you might face when deciding which Fabric component to pick for the particular use case. The table below illustrates the <em><strong>level of suitability</strong></em> of each analytical engine for the scenario in the scope. A 5-star rating means that the particular engine is a good fit for the specific use case. A 3-star rating means that the required scenario may be accomplished by using the particular analytical engine, but with some limitations or considerations. Finally, a 1-star rating means that I don&#8217;t recommend using the particular engine for that specific use case.</p>
      <p>
          <a href="/__u/datamozart.substack.com/p/stop-guessing-choose-the-right-fabric">
              Read more
          </a>
      </p>
   ]]></content:encoded></item></channel></rss>