<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[Analytical Guy Newsletter]]></title><description><![CDATA[Join 1,600+ Data Professionals learning Power BI, Fabric & AI workflows]]></description><link>https://analyticalguy.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!Amem!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8fb6415-4407-481e-a956-30c991fa623a_1280x1280.png</url><title>Analytical Guy Newsletter</title><link>https://analyticalguy.substack.com</link></image><generator>Substack</generator><lastBuildDate>Tue, 01 Sep 2026 11:14:18 GMT</lastBuildDate><atom:link href="/__u/analyticalguy.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Atikant Jain]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[atikantjain@gmail.com]]></webMaster><itunes:owner><itunes:email><![CDATA[atikantjain@gmail.com]]></itunes:email><itunes:name><![CDATA[Atikant Jain]]></itunes:name></itunes:owner><itunes:author><![CDATA[Atikant Jain]]></itunes:author><googleplay:owner><![CDATA[atikantjain@gmail.com]]></googleplay:owner><googleplay:email><![CDATA[atikantjain@gmail.com]]></googleplay:email><googleplay:author><![CDATA[Atikant Jain]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[I Let Claude Code Build My Power BI Dashboard]]></title><description><![CDATA[No manual DAX. No manually building visuals. Here&#8217;s what happened and why AI agents will change how we build in Power BI.]]></description><link>https://analyticalguy.substack.com/p/i-let-claude-code-build-my-power</link><guid isPermaLink="false">https://analyticalguy.substack.com/p/i-let-claude-code-build-my-power</guid><dc:creator><![CDATA[Atikant Jain]]></dc:creator><pubDate>Wed, 26 Aug 2026 10:46:44 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/a8f2dd2e-117f-4109-bbd3-eb75071409dc_1672x940.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div><hr></div><p>I recently tried an experiment:</p><p><strong>Could I use Claude Code to build a Power BI executive dashboard without manually creating every measure, visual and formatting element?</strong></p><p>Not just asking AI to explain DAX.</p><p>Not copying and pasting code between ChatGPT and Power BI.</p><p>I wanted the AI agent to actually work with the <strong>Power BI project itself</strong>.</p><p>So I gave <strong>Claude Code</strong> access to a Power BI project and asked it to turn an existing report into a clean, executive-ready dashboard.</p><p>The result gave me a very different perspective on where Power BI development is heading.</p><div id="youtube2-gXVmsn9M61A" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;gXVmsn9M61A&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/gXVmsn9M61A?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2>We&#8217;ve Been Using AI in Power BI the Wrong Way</h2><p>Most analysts already use AI.</p><p>But usually, the workflow looks something like this:</p><blockquote><p>&#8220;Write a DAX measure for YoY growth.&#8221;</p></blockquote><p>Copy &#187; Open Power BI &#187; Paste &#187; Error &#187; Go back to AI &#187; Copy again</p><p>Then manually create the visual, configure it, format it and position it.</p><p>AI is helping, but <strong>we are still doing most of the development ourselves.</strong></p><p>I wanted to test a different model.</p><p>Instead of asking:</p><blockquote><p><strong>&#8220;How do I build this?&#8221;</strong></p></blockquote><p>I wanted to ask:</p><blockquote><p><strong>&#8220;Can you help me build this?&#8221;</strong></p></blockquote><p>That&#8217;s a subtle difference, but I think it&#8217;s an important one.</p><h1>From AI Assistant to AI Agent</h1><p>Using the <strong>Power BI PBIP project format</strong>, Claude Code and Power BI authoring tools, the AI could interact much more directly with the project.</p><p>Claude was able to understand the existing structure and help create the new executive summary.</p><p>It worked on:</p><ul><li><p>DAX measures</p></li><li><p>Data model understanding</p></li><li><p>KPI cards</p></li><li><p>Monthly trend analysis</p></li><li><p>Waterfall analysis</p></li><li><p>Country performance tables</p></li><li><p>Report formatting</p></li><li><p>Custom theme</p></li><li><p>Visual positioning and layout</p></li></ul><p>But one of my favourite parts wasn&#8217;t actually the DAX or the visuals.</p><p>It was the <strong>workflow</strong>.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://analyticalguy.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">Thanks for reading Analytical Guy Newsletter! Subscribe for free to receive new posts and support my work.</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>I Asked Claude to Understand the Business First</h2><p>Instead of immediately telling Claude:</p><blockquote><p><strong>Create four KPI cards, one line chart and one waterfall.</strong></p></blockquote><p>I wanted the process to start with the <strong>business objective</strong>.</p><p>What does an executive actually need from this page?</p><p>What questions should the dashboard answer?</p><p>What deserves attention?</p><p>Only then should we decide which visuals belong on the page.</p><p>The workflow became something closer 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_!rl9_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68aa878e-77e3-4702-972d-ad9a704afd66_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!rl9_!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68aa878e-77e3-4702-972d-ad9a704afd66_1024x1536.png 424w, /__u/substackcdn.com/image/fetch/$s_!rl9_!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68aa878e-77e3-4702-972d-ad9a704afd66_1024x1536.png 848w, /__u/substackcdn.com/image/fetch/$s_!rl9_!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68aa878e-77e3-4702-972d-ad9a704afd66_1024x1536.png 1272w, /__u/substackcdn.com/image/fetch/$s_!rl9_!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68aa878e-77e3-4702-972d-ad9a704afd66_1024x1536.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!rl9_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68aa878e-77e3-4702-972d-ad9a704afd66_1024x1536.png" width="1024" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/68aa878e-77e3-4702-972d-ad9a704afd66_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1400547,&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://analyticalguy.substack.com/i/212800747?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68aa878e-77e3-4702-972d-ad9a704afd66_1024x1536.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_!rl9_!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68aa878e-77e3-4702-972d-ad9a704afd66_1024x1536.png 424w, /__u/substackcdn.com/image/fetch/$s_!rl9_!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68aa878e-77e3-4702-972d-ad9a704afd66_1024x1536.png 848w, /__u/substackcdn.com/image/fetch/$s_!rl9_!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68aa878e-77e3-4702-972d-ad9a704afd66_1024x1536.png 1272w, /__u/substackcdn.com/image/fetch/$s_!rl9_!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68aa878e-77e3-4702-972d-ad9a704afd66_1024x1536.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>This is much closer to how a good BI project should work.</p><p>And it points to something bigger than simply using AI to generate DAX.</p><h1>Did Claude Build Everything Perfectly?</h1><p>No.</p><p>And I deliberately show that in the video.</p><p>There were sorting issues.</p><p>Some formatting wasn&#8217;t right.</p><p>Certain visual decisions needed adjustment.</p><p>I made manual changes as well.</p><p>There were moments where the output needed debugging and another prompt.</p><p>But that&#8217;s precisely why I found the experiment useful.</p><p>I&#8217;m less interested in polished demos where someone enters one prompt and magically gets a perfect dashboard.</p><p>That&#8217;s not how real analytics projects work.</p><p>The more useful question is:</p><blockquote><p><strong>How much repetitive Power BI development can an AI agent take away from an analyst?</strong></p></blockquote><p>And based on what I&#8217;m seeing, the answer is becoming increasingly interesting.</p><h1>Does This Mean Power BI Developers Won&#8217;t Be Needed?</h1><p>I don&#8217;t think that&#8217;s the right conclusion.</p><p>Instead, I think <strong>what makes a good Power BI developer valuable is changing.</strong></p><p>Consider DAX.</p><p>If AI becomes extremely good at generating DAX, memorising hundreds of functions becomes less important.</p><p>But understanding whether the generated measure is <strong>correct</strong> becomes more important.</p><p>You still need to know:</p><ul><li><p>Is the data model designed correctly?</p></li><li><p>Is the filter context behaving as expected?</p></li><li><p>Is this KPI actually meaningful?</p></li><li><p>Does this visual answer the business question?</p></li><li><p>Are we comparing the correct periods?</p></li><li><p>Can we trust the result?</p></li><li><p>Is the dashboard helping someone make a decision?</p></li></ul><p>AI can generate things incredibly quickly.</p><p>But generating something and generating the <strong>right thing</strong> are two very different problems.</p><p>That&#8217;s why I think the strongest analytics professionals over the next few years will combine:</p><p><strong>Business Understanding + Data Modelling + Analytics + AI Agents + Judgement</strong></p><h1>Power BI Development Is Becoming More Agentic</h1><p>Traditionally, our workflow has been:</p><p><strong>Requirements &#8594; Data &#8594; Model &#8594; DAX &#8594; Visuals &#8594; Formatting &#8594; Testing</strong></p><p>AI initially helped around the edges.</p><p>Need SQL? Ask AI.</p><p>Need DAX? Ask AI.</p><p>Need Power Query? Ask AI.</p><p>Need documentation? Ask AI.</p><p>But agentic tools introduce another possibility.</p><p>Instead of AI sitting outside Power BI and giving us snippets, the agent can increasingly participate in the <strong>development process itself</strong>.</p><p>That could eventually make the workflow look more like:</p><p><strong>Business Problem &#8594; Analyst + AI Agent &#8594; Analytics Solution</strong></p><p>The analyst isn&#8217;t removed from the process.</p><p>The analyst moves <strong>up the value chain</strong>.</p><p>Less time manually configuring things.</p><p>More time understanding the business, asking better questions, designing the solution and validating what the AI produces.</p><p>That&#8217;s the part of AI + BI that I&#8217;m most interested in exploring.</p><h1>&#127891; Want to Learn This Yourself?</h1><p>I&#8217;m launching my new practical course: <strong>Agentic Power BI</strong>.</p><p>You&#8217;ll build a complete <strong>AI Business Analyst</strong> project using:</p><p><strong>Power BI &#8594; Microsoft Fabric &#8594; AI-Ready Semantic Model &#8594; External Data &#8594; Business Context &#8594; AI Agent</strong></p><p>This isn&#8217;t another &#8220;build a dashboard&#8221; course. The goal is to give you a <strong>portfolio-ready project</strong> and practical AI + Power BI skills you can demonstrate in your current role or your next interview.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!8fuz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49dc7c2c-36e0-4087-8da5-e99e0516f17f_1130x723.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!8fuz!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49dc7c2c-36e0-4087-8da5-e99e0516f17f_1130x723.png 424w, /__u/substackcdn.com/image/fetch/$s_!8fuz!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49dc7c2c-36e0-4087-8da5-e99e0516f17f_1130x723.png 848w, /__u/substackcdn.com/image/fetch/$s_!8fuz!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49dc7c2c-36e0-4087-8da5-e99e0516f17f_1130x723.png 1272w, /__u/substackcdn.com/image/fetch/$s_!8fuz!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49dc7c2c-36e0-4087-8da5-e99e0516f17f_1130x723.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!8fuz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49dc7c2c-36e0-4087-8da5-e99e0516f17f_1130x723.png" width="1130" height="723" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/49dc7c2c-36e0-4087-8da5-e99e0516f17f_1130x723.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:723,&quot;width&quot;:1130,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:73633,&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://analyticalguy.substack.com/i/212800747?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49dc7c2c-36e0-4087-8da5-e99e0516f17f_1130x723.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_!8fuz!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49dc7c2c-36e0-4087-8da5-e99e0516f17f_1130x723.png 424w, /__u/substackcdn.com/image/fetch/$s_!8fuz!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49dc7c2c-36e0-4087-8da5-e99e0516f17f_1130x723.png 848w, /__u/substackcdn.com/image/fetch/$s_!8fuz!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49dc7c2c-36e0-4087-8da5-e99e0516f17f_1130x723.png 1272w, /__u/substackcdn.com/image/fetch/$s_!8fuz!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49dc7c2c-36e0-4087-8da5-e99e0516f17f_1130x723.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>&#128640; First 50 Students: $99 AUD</h3><p><strong>Regular price: <s>$199 AUD</s> &#8594; Launch price: $99 AUD</strong></p><p>Think about the economics.</p><p>A <strong>$5,000 salary increase is ~$96/week.</strong><br>A <strong>$10,000 salary increase is ~$192/week.</strong></p><p>The course costs <strong>$99 once</strong>.</p><p>Of course, no course can guarantee you a promotion or a new job. But if these skills help you stand out in one interview, take on higher-value work, or position yourself for your next opportunity, the potential upside can be far greater than the cost of learning them.</p><p><strong>The bigger cost may be waiting while the skills employers expect continue to change.</strong></p><p>&#128073; <strong><a href="https://academy.analyticalguy.tech/agentic-power-bi">GET AGENTIC POWER BI FOR $99</a></strong></p><p><em>Launch pricing is available to the first 50 students only.</em></p><div><hr></div><h1>&#128075; Want to Talk 1:1?</h1><p>Courses aren&#8217;t always the right answer.</p><p>Sometimes you need someone to look at <strong>your specific situation</strong>.</p><p>I also offer a limited number of <strong>1:1 mentorship sessions</strong> for people working in or moving toward data and analytics.</p><p><strong>Depending on where you are in your journey, we can work on:</strong></p><ul><li><p>Power BI / Data Analytics career direction</p></li><li><p>Your learning roadmap</p></li><li><p>Resume and LinkedIn positioning</p></li><li><p>Portfolio and project strategy</p></li><li><p>Interview preparation</p></li><li><p>Power BI and Microsoft Fabric skills</p></li><li><p>Moving from traditional analytics toward AI-enabled analytics</p></li></ul><p>The session is focused on <strong>your situation and your next steps</strong>, rather than following a predefined curriculum.</p><p><strong>&#128073; <a href="https://topmate.io/analyticalguy/44855">BOOK A 1:1 MENTORSHIP SESSION</a></strong></p><div><hr></div><p>If you work with <strong>Power BI, Microsoft Fabric, data analytics or AI</strong>, subscribe to <strong>Analytical Guy</strong> &#8212; there&#8217;s a lot more coming.</p><p>And I&#8217;d love to hear your view:</p><blockquote><p><strong>If an AI agent could take over ONE part of your current Power BI workflow, what would you give it?</strong></p></blockquote><p></p><p><strong>Cheers,<br>AJ<br>Perth, Australia<br>admin@analyticalguy.tech</strong></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://analyticalguy.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">Thanks for reading Analytical Guy Newsletter! Subscribe for free to receive new posts and support my work.</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 Learning SQL, Python & Power BI Equally]]></title><description><![CDATA[The analytics skill stack is changing. Here&#8217;s what will matter more as AI agents reshape Data Analytics.]]></description><link>https://analyticalguy.substack.com/p/stop-learning-sql-python-and-power</link><guid isPermaLink="false">https://analyticalguy.substack.com/p/stop-learning-sql-python-and-power</guid><dc:creator><![CDATA[Atikant Jain]]></dc:creator><pubDate>Wed, 19 Aug 2026 11:31:44 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/d423e658-df1e-49ad-937a-af719bd717ae_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div><hr></div><p><strong><mark data-color="#fff2cc" style="background-color: rgb(255, 242, 204); color: rgb(0, 0, 0);"><span data-color="#0000ff" style="color: rgb(0, 0, 255);">NEW: Agentic AI for Power BI Course</span></mark><span><br></span></strong><span>AI is changing Power BI &#8212; and the next step is learning how to work with </span><strong><span data-color="#1d4a4d" style="color: rgb(29, 74, 77);">AI agents, not just dashboards</span><span data-color="#ff0000" style="color: rgb(255, 0, 0);">.</span></strong><span><br>I've just launched my new </span><strong><mark data-color="#cfe2f3" style="background-color: rgb(207, 226, 243); color: rgb(0, 0, 0);"><span data-color="#1d4a4d" style="color: rgb(29, 74, 77);">Agentic AI for Power BI</span></mark></strong><span> course, designed to help Power BI professionals become AI-ready and start building with AI agents.<br><br>&#128073; </span><strong><span>Get the course here:</span></strong><span> </span><a href="https://academy.analyticalguy.tech/agentic-power-bi">https://academy.analyticalguy.tech/agentic-power-bi</a></p><div><hr></div><p>For years, the analytics workflow looked something like this:</p><p><strong>Data &#8594; SQL/Python &#8594; Dashboard &#8594; Analyst &#8594; Business User</strong></p><p>The analyst sat in the middle.</p><p>We extracted the data.<br>Cleaned it.<br>Modelled it.<br>Built dashboards.<br>Found insights.<br>Explained those insights to the business.</p><p>But AI is starting to change this workflow.</p><p>With <strong>AI agents, semantic models, natural-language analytics, Microsoft Fabric and increasingly autonomous analytical systems</strong>, business users may no longer need an analyst for every question.</p><p>They&#8217;ll increasingly be able to simply ask:</p><p><strong>&#8220;Why did sales drop last month?&#8221;</strong></p><p>And an AI agent could potentially:</p><p>&#8594; Query the semantic model<br>&#8594; Analyse the relevant data<br>&#8594; Investigate possible drivers<br>&#8594; Compare regions/products/customers<br>&#8594; Summarise the findings<br>&#8594; Recommend what to investigate next</p><p>So does that mean Data Analysts are going away?</p><p><strong>I don&#8217;t think so.</strong></p><div><hr></div><p>If you want to skip reading and watch the video instead:</p><div id="youtube2-ZYf9QL6szRg" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;ZYf9QL6szRg&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/ZYf9QL6szRg?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>But I do think the traditional definition of a Data Analyst is going to change.</p><p>The valuable analyst of the next few years won&#8217;t just be the person who knows the most SQL syntax, Python libraries or Power BI features.</p><p>It will be the person who understands:</p><p><strong>Business + Data + AI</strong></p><p>That&#8217;s also why I don&#8217;t believe you should learn <strong>SQL, Python and Power BI equally</strong> in 2026.</p><p>The question shouldn&#8217;t be:</p><p><em>&#8220;How do I become an expert in every analytics tool?&#8221;</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://analyticalguy.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">Thanks for reading Analytical Guy Newsletter! Subscribe for free to receive new posts and support my work.</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>It should be:</p><p><em>&#8220;What combination of skills helps me solve real business problems in an AI-first analytics world?&#8221;</em></p><p>Because AI can increasingly help you <strong>write the SQL, generate Python, create DAX and even build parts of a report.</strong></p><p>But someone still needs to understand:</p><ul><li><p>What the business is actually trying to solve</p></li><li><p>Whether the data can be trusted</p></li><li><p>How the semantic model should be designed</p></li><li><p>Which metrics actually matter</p></li><li><p>Whether the AI&#8217;s answer makes business sense</p></li><li><p>How AI agents should interact with enterprise data</p></li><li><p>How insights translate into decisions</p></li></ul><p>That, in my opinion, is where the opportunity is.</p><p>I recently made a video sharing my perspective on the <strong>Future of Data Analytics in the AI Era</strong>, including what I think Data Analysts, BI Developers and Power BI professionals should start learning now.</p><p>&#127909; <strong>Watch: Future of Data Analytics in the AI Era</strong></p><p>[ADD YOUR YOUTUBE VIDEO LINK]</p><p>The goal isn&#8217;t to compete with AI.</p><p><strong>It&#8217;s to become the person who knows how to use AI to solve business problems.</strong></p><p>I&#8217;m curious what you think:</p><p><strong>Will AI replace a significant part of the traditional Data Analyst role &#8212; or simply create a more powerful version of it?</strong></p><p>Email me your concerns, I read every email. Let&#8217;s solve each others problems.</p><p>Cheers,<br>Analytical Guy<br>https://analyticalguy.tech</p>]]></content:encoded></item><item><title><![CDATA[How I Passed the DP-600 Exam — My Journey, What I Studied & What Actually Helped]]></title><description><![CDATA[Microsoft Certified DP-600]]></description><link>https://analyticalguy.substack.com/p/how-i-passed-the-dp-600-exam-my-journey</link><guid isPermaLink="false">https://analyticalguy.substack.com/p/how-i-passed-the-dp-600-exam-my-journey</guid><dc:creator><![CDATA[Atikant Jain]]></dc:creator><pubDate>Sat, 15 Aug 2026 06:04:23 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/5d2ac657-021a-4855-87c4-c6a067e1bd9e_1151x790.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I recently passed the <strong>Microsoft DP-600: Fabric Analytics Engineer Associate</strong> exam. &#127881;</p><p>And instead of giving you another generic list of topics from the Microsoft syllabus, I wanted to share <strong>my actual experience</strong>.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://analyticalguy.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">Thanks for reading Analytical Guy Newsletter! Subscribe for free to receive new posts and support my work.</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>What I studied &#187; What helped &#187; What I would do differently.</p><p>And most importantly &#8212; <strong>how I would prepare if I had to take DP-600 again today.</strong></p><p>If you&#8217;re coming from a <strong>Power BI background</strong> and moving into Microsoft Fabric, this is especially for you.</p><div><hr></div><h2>First: Is DP-600 Difficult?</h2><p>My answer?</p><p><strong>Yes &#8212; but probably not for the reason you think.</strong></p><p>DP-600 isn&#8217;t just a Power BI exam.</p><p>If you&#8217;ve been working with Power BI for years, you&#8217;ll already be comfortable with things like:</p><ul><li><p>Data modelling</p></li><li><p>DAX</p></li><li><p>Power Query</p></li><li><p>Semantic models</p></li><li><p>Report development</p></li><li><p>Security</p></li></ul><p>But DP-600 takes you beyond that.</p><p>You also need to understand the broader <strong>Microsoft Fabric ecosystem</strong>.</p><p>That means concepts like:</p><p><strong>OneLake &#8594; Lakehouse &#8594; Warehouse &#8594; Notebooks &#8594; Spark &#8594; Dataflows Gen2 &#8594; Pipelines &#8594; Semantic Models &#8594; Power BI</strong></p><p>This is where I think many Power BI professionals underestimate the exam.</p><p></p><div><hr></div><p>If you want to watch the video instead of reading this post:</p><div id="youtube2-t8D2ziOT2Nc" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;t8D2ziOT2Nc&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/t8D2ziOT2Nc?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div><hr></div><h1>My DP-600 Preparation Strategy</h1><p>If I were starting again, I would divide my preparation into <strong>four stages</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!ZPya!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cf44475-4966-4771-89b6-e842f39fbad6_1151x790.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!ZPya!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cf44475-4966-4771-89b6-e842f39fbad6_1151x790.png 424w, /__u/substackcdn.com/image/fetch/$s_!ZPya!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cf44475-4966-4771-89b6-e842f39fbad6_1151x790.png 848w, /__u/substackcdn.com/image/fetch/$s_!ZPya!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cf44475-4966-4771-89b6-e842f39fbad6_1151x790.png 1272w, /__u/substackcdn.com/image/fetch/$s_!ZPya!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cf44475-4966-4771-89b6-e842f39fbad6_1151x790.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!ZPya!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cf44475-4966-4771-89b6-e842f39fbad6_1151x790.png" width="1151" height="790" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5cf44475-4966-4771-89b6-e842f39fbad6_1151x790.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:790,&quot;width&quot;:1151,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1170767,&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://analyticalguy.substack.com/i/210857079?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cf44475-4966-4771-89b6-e842f39fbad6_1151x790.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_!ZPya!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cf44475-4966-4771-89b6-e842f39fbad6_1151x790.png 424w, /__u/substackcdn.com/image/fetch/$s_!ZPya!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cf44475-4966-4771-89b6-e842f39fbad6_1151x790.png 848w, /__u/substackcdn.com/image/fetch/$s_!ZPya!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cf44475-4966-4771-89b6-e842f39fbad6_1151x790.png 1272w, /__u/substackcdn.com/image/fetch/$s_!ZPya!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cf44475-4966-4771-89b6-e842f39fbad6_1151x790.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>Stage 1: Understand Microsoft Fabric</h2><p>Before worrying about exam questions, understand what Fabric actually is.</p><p>Don&#8217;t try to memorise every button in the interface.</p><p>Instead, understand the architecture.</p><p>Ask yourself:</p><p><strong>If a company gives me data from SQL, Excel, APIs and other systems &#8212; how would I build an analytics solution using Fabric?</strong></p><p>You should understand where each Fabric workload fits.</p><p>For example:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;72a8f7bc-4169-4192-a99e-7461afb241b9&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">Data Factory
&#8594; Data ingestion and orchestration

Data Engineering
&#8594; Spark, notebooks and transformations

Data Warehouse
&#8594; SQL-based analytical workloads

Power BI
&#8594; Semantic models, DAX and reporting

OneLake
&#8594; The common storage layer connecting 
everything together</code></pre></div><p>Once this architecture makes sense, a lot of DP-600 concepts become much easier.</p><div><hr></div><h1>Stage 2: Don&#8217;t Ignore Your Power BI Fundamentals</h1><p>This is particularly important.</p><p>Sometimes when preparing for a new certification, we spend so much time learning the <em>new</em> technology that we forget the fundamentals.</p><p>DP-600 still expects you to understand analytics properly.</p><p><strong>Make sure you&#8217;re comfortable with:</strong></p><ul><li><p>Star schema</p></li><li><p>Fact and dimension tables</p></li><li><p>Relationships</p></li><li><p>DAX</p></li><li><p>Filter context</p></li><li><p>Power Query</p></li><li><p>Semantic models</p></li><li><p>Row-level security</p></li><li><p>Performance optimisation</p></li></ul><p>Don&#8217;t just know <strong>how</strong> to create these things.</p><p>Understand <strong>why</strong> you would choose one approach over another.</p><p>That&#8217;s much closer to how certification questions are framed.</p><div><hr></div><h1>Stage 3: Get Hands-On With Fabric</h1><p>This was one of the most important parts for me.</p><p>Reading documentation is useful.</p><p>Watching videos is useful.</p><p>But at some point you need to actually <strong>open Microsoft Fabric and build something</strong>.</p><p>Create a small project.</p><p>It doesn&#8217;t need to be complicated.</p><p>For example:</p><p><strong>Source Data</strong><br>&#8595;<br><strong>Fabric Pipeline / Dataflow Gen2</strong><br>&#8595;<br><strong>Lakehouse</strong><br>&#8595;<br><strong>Bronze &#8594; Silver &#8594; Gold</strong><br>&#8595;<br><strong>Semantic Model</strong><br>&#8595;<br><strong>Power BI Report</strong></p><p>Then experiment.</p><p>Create a notebook.</p><p>Write some Spark.</p><p>Create a Warehouse.</p><p>Build a pipeline.</p><p>Create relationships.</p><p>Try Direct Lake.</p><p>Configure security.</p><p>Break something.</p><p>Fix it.</p><p>You&#8217;ll remember far more from doing this than from reading the same documentation five times.</p><div><hr></div><h1>Stage 4: Use the Microsoft Study Guide</h1><p>This sounds obvious, but it&#8217;s important.</p><p>The <strong>official DP-600 study guide should be your checklist</strong>.</p><p>Go through every major skill measured in the exam and ask:</p><blockquote><p>&#8220;Could I explain this concept to someone without looking it up?&#8221;</p></blockquote><p>If the answer is no, that&#8217;s probably an area you need to revisit.</p><p>I wouldn&#8217;t randomly consume DP-600 content for weeks.</p><p>I&#8217;d use the official syllabus as the structure and fill my knowledge gaps around it.</p><div><hr></div><h1>The Biggest Advantage Power BI Users Have</h1><p>If you&#8217;re already a Power BI developer, you&#8217;re <strong>not starting from zero</strong>.</p><p>That&#8217;s important.</p><p>You already understand a large part of the analytics layer.</p><p>Your biggest job is connecting your existing Power BI knowledge to Fabric.</p><p>Think of it like this:</p><h3>Traditional Power BI mindset vs Fabric mindset</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!aiio!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86da9552-250e-4352-ad1d-1d4a964ab58d_646x451.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!aiio!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86da9552-250e-4352-ad1d-1d4a964ab58d_646x451.png 424w, /__u/substackcdn.com/image/fetch/$s_!aiio!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86da9552-250e-4352-ad1d-1d4a964ab58d_646x451.png 848w, /__u/substackcdn.com/image/fetch/$s_!aiio!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86da9552-250e-4352-ad1d-1d4a964ab58d_646x451.png 1272w, /__u/substackcdn.com/image/fetch/$s_!aiio!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86da9552-250e-4352-ad1d-1d4a964ab58d_646x451.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!aiio!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86da9552-250e-4352-ad1d-1d4a964ab58d_646x451.png" width="646" height="451" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/86da9552-250e-4352-ad1d-1d4a964ab58d_646x451.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:451,&quot;width&quot;:646,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:326402,&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://analyticalguy.substack.com/i/210857079?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86da9552-250e-4352-ad1d-1d4a964ab58d_646x451.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_!aiio!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86da9552-250e-4352-ad1d-1d4a964ab58d_646x451.png 424w, /__u/substackcdn.com/image/fetch/$s_!aiio!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86da9552-250e-4352-ad1d-1d4a964ab58d_646x451.png 848w, /__u/substackcdn.com/image/fetch/$s_!aiio!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86da9552-250e-4352-ad1d-1d4a964ab58d_646x451.png 1272w, /__u/substackcdn.com/image/fetch/$s_!aiio!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86da9552-250e-4352-ad1d-1d4a964ab58d_646x451.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&#8217;re essentially expanding your view of the analytics architecture.</p><div><hr></div><h1>One Mistake I Would Avoid</h1><p><strong>Trying to memorise everything.</strong></p><p>Fabric is huge.</p><p>You don&#8217;t need to become an expert in every Fabric workload before taking DP-600.</p><p>Instead, focus on understanding:</p><p><strong>What does this feature do?</strong></p><p><strong>When would I use it?</strong></p><p><strong>Why would I choose it over another option?</strong></p><p><strong>How does it connect with the rest of Fabric?</strong></p><p>That level of understanding is much more valuable than memorising menus and screenshots.</p><div><hr></div><h1>What I Would Do 7 Days Before the Exam</h1><p>If I had one week remaining, I wouldn&#8217;t spend it learning dozens of completely new topics.</p><p>I would use it for consolidation.</p><p>I&#8217;d revisit the official DP-600 skills outline and identify my weakest areas.</p><p>Then I&#8217;d spend most of my time on:</p><p><strong>1. Fabric architecture</strong></p><p>Understand how the different workloads fit together.</p><p><strong>2. Lakehouse vs Warehouse</strong></p><p>Know when and why you would choose each.</p><p><strong>3. Data ingestion and transformation</strong></p><p>Pipelines, Dataflows Gen2, notebooks and Spark.</p><p><strong>4. Semantic models</strong></p><p>Relationships, DAX, security and optimisation.</p><p><strong>5. Direct Lake</strong></p><p>Understand how it works and where it fits.</p><p><strong>6. Scenario-based questions</strong></p><p>Instead of memorising definitions, practise choosing the right solution for a business requirement.</p><div><hr></div><h1>What About Practice Questions?</h1><p>Practice questions can be useful.</p><p>But I wouldn&#8217;t use them just to memorise answers.</p><p>For every question you get wrong, ask:</p><blockquote><p><strong>Why was my answer wrong?</strong></p></blockquote><p>And then:</p><blockquote><p><strong>Why is the correct option better?</strong></p></blockquote><p>That second question is where the learning happens.</p><p>I would prioritise <strong>Microsoft&#8217;s official learning and assessment resources</strong> and then use my own notes/question bank to identify gaps.</p><div><hr></div><h1>My Biggest Takeaway From DP-600</h1><p>Passing DP-600 isn&#8217;t really about memorising Microsoft Fabric.</p><p>It&#8217;s about learning to think like an <strong>Analytics Engineer</strong>.</p><p>You&#8217;re no longer thinking only about:</p><blockquote><p>&#8220;How do I build this Power BI report?&#8221;</p></blockquote><p>You&#8217;re thinking:</p><blockquote><p>&#8220;How should the data get into the platform?&#8221;</p><p>&#8220;Where should it be stored?&#8221;</p><p>&#8220;How should it be transformed?&#8221;</p><p>&#8220;How should the analytical model be designed?&#8221;</p><p>&#8220;How should users securely consume it?&#8221;</p></blockquote><p>That&#8217;s a much bigger mindset shift.</p><p>And personally, I think that&#8217;s the real value of preparing for DP-600.</p><div><hr></div><h1>Should You Take DP-600?</h1><p>If you&#8217;re already working with <strong>Power BI</strong> and want to move deeper into <strong>Microsoft Fabric</strong>, I think DP-600 makes a lot of sense.</p><p>Especially if you&#8217;re trying to move from:</p><p><strong>Power BI Developer &#8594; Analytics Engineer</strong></p><p>or</p><p><strong>Data Analyst &#8594; Microsoft Fabric Analytics Engineer</strong></p><p>Don&#8217;t take the certification just to add another badge to LinkedIn.</p><p>Use it as an excuse to actually understand the platform.</p><p>The certificate is useful.</p><p><strong>The knowledge behind it is much more valuable.</strong></p><div><hr></div><h1>I Recorded My Full DP-600 Journey &#127909;</h1><p>I&#8217;ve also created a YouTube video where I explain <strong>how I prepared for DP-600, my experience with the exam, and what I recommend you focus on.</strong></p><div id="youtube2-t8D2ziOT2Nc" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;t8D2ziOT2Nc&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/t8D2ziOT2Nc?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>If you&#8217;re currently preparing for DP-600, watch that alongside this guide.</p><p>And if you&#8217;re coming from Power BI and trying to understand Microsoft Fabric, that&#8217;s exactly the journey I&#8217;m documenting on <strong>Analytical Guy</strong>.</p><p>More Fabric, Power BI and Analytics content coming soon.</p><p><strong>&#8212; AJ</strong><br><strong>Analytical Guy</strong><br><strong>www.AnalyticalGuy.Tech</strong></p>]]></content:encoded></item><item><title><![CDATA[If You Know Power BI, Microsoft Fabric Is Your Next Big Skill]]></title><description><![CDATA[Introduction to Fabric]]></description><link>https://analyticalguy.substack.com/p/if-you-know-power-bi-microsoft-fabric</link><guid isPermaLink="false">https://analyticalguy.substack.com/p/if-you-know-power-bi-microsoft-fabric</guid><dc:creator><![CDATA[Atikant Jain]]></dc:creator><pubDate>Wed, 12 Aug 2026 11:33:30 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/05203d79-5edf-47f0-a68c-35f1d5d559df_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you&#8217;re already working with <strong>Power BI</strong>, you might be looking at Microsoft Fabric and thinking:</p><p><em>Do I really need to learn all of this?</em></p><p>Lakehouse. Warehouse. OneLake. Data Factory. Spark. Notebooks. Real-Time Intelligence. Data Engineering...</p><p>It can feel like Microsoft took Power BI and suddenly added <strong>20 new things you need to understand</strong>.</p><p>But here&#8217;s the good news:</p><p><strong>You don&#8217;t need to learn everything at once.</strong></p><p>And if you already know Power BI, you&#8217;re actually much closer to understanding Microsoft Fabric than you might think.</p><p>I recently created a <strong>20-minute introduction to Microsoft Fabric specifically for Power BI users.</strong></p><div><hr></div><p>If you want to watch the video and skip reading:</p><div id="youtube2-_46UrcI-xwY" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;_46UrcI-xwY&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/_46UrcI-xwY?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2>The easiest way to understand Fabric</h2><p>Forget all the product names for a moment.</p><p>Think about what normally happens before your Power BI report exists.</p><p>A company might have data sitting in:</p><ul><li><p>Excel files</p></li><li><p>SQL databases</p></li><li><p>ERP systems</p></li><li><p>CRM systems</p></li><li><p>APIs</p></li><li><p>Cloud applications</p></li><li><p>Streaming/real-time sources</p></li></ul><p>As a Power BI developer, you often enter the picture somewhere near the end.</p><p>You connect to the data &#187; Transform it &#187; Build your semantic model &#187; Write DAX &#187; Create reports &#187; Publish</p><p>But someone still needs to <strong>ingest, store, transform, engineer, govern and serve that data</strong> before analytics can happen.</p><p><code>That&#8217;s where Microsoft Fabric becomes interesting.</code></p><p>Instead of treating all of these as completely separate worlds, Fabric brings much of the analytics journey into <strong>one platform</strong>.</p><h2>Power BI is not disappearing</h2><p>This is an important distinction.</p><p>You aren&#8217;t learning Fabric <strong>instead of Power BI</strong>.</p><p>Power BI is a core workload within Microsoft Fabric.</p><p>Think of it more like expanding your field of view.</p><p>You might start here:</p><p><strong>Data &#8594; Power BI &#8594; Dashboard</strong></p><p>Then gradually understand the bigger picture:</p><p><strong>Source Systems &#8594; Data Factory &#8594; OneLake &#8594; Lakehouse/Warehouse &#8594; Semantic Model &#8594; Power BI</strong></p><p>And suddenly you&#8217;re not just thinking:</p><blockquote><p>&#8220;How do I build this dashboard?&#8221;</p></blockquote><p>You&#8217;re thinking:</p><blockquote><p>&#8220;How should this entire analytics solution work?&#8221;</p></blockquote><p>That&#8217;s a very different skill.</p><h2>You don&#8217;t need to become a Data Engineer tomorrow</h2><p>This is probably the biggest mistake I see people make when approaching Fabric.</p><p>They see Spark, Python, notebooks, Lakehouses and Data Engineering and think they need to master everything.</p><p>You don&#8217;t.</p><p>If you&#8217;re coming from Power BI, I&#8217;d learn Fabric <strong>outwards from what you already know</strong>.</p><p>Start with:</p><p><strong>1. OneLake</strong><br>Understand where Fabric stores data and why Microsoft describes it as OneDrive for data.</p><p><strong>2. Lakehouse vs Warehouse</strong><br>Understand why both exist and when you might use each.</p><p><strong>3. Data ingestion</strong><br>Learn how pipelines, Dataflows Gen2 and other Fabric capabilities can bring data into the platform.</p><p><strong>4. Medallion architecture</strong><br>Understand the idea behind Bronze &#8594; Silver &#8594; Gold.</p><p><strong>5. Semantic models + Power BI</strong><br>Connect everything back to the part you already understand.</p><p>Then start exploring notebooks, Spark, real-time analytics, AI and the deeper engineering capabilities.</p><p>You don&#8217;t need to learn Fabric horizontally.</p><p><strong>Learn it from Power BI outward.</strong></p><h2>Why I think this matters for Power BI professionals</h2><p>The role of a Power BI developer is changing.</p><p>Knowing how to create a dashboard is still valuable.</p><p>But increasingly, the bigger opportunity is understanding the <strong>entire data journey behind that dashboard</strong>.</p><p>Where did the data come from?</p><p>How was it ingested?</p><p>Where is it stored?</p><p>How was it transformed?</p><p>How should the architecture be designed?</p><p>How is security handled?</p><p>How does the semantic model fit into everything?</p><p>How can AI use this data?</p><p>That&#8217;s where learning Fabric can start moving you from someone who <strong>builds reports</strong> to someone who can <strong>design analytics solutions</strong>.</p><p>And I think that&#8217;s a much more valuable place to be.</p><h2>I explained the whole thing in 20 minutes</h2><p>I created a beginner-friendly video where I walk through Microsoft Fabric from the perspective of someone who already understands Power BI.</p><p>No attempt to teach you every Fabric feature.</p><p>The goal is much simpler:</p><p>By the end, I want you to be able to look at the Microsoft Fabric ecosystem and think:</p><p><strong>&#8220;Okay... now I understand how all of this fits together.&#8221;</strong></p><p>&#127909; <strong>Watch: Microsoft Fabric for Power BI Users</strong></p><div id="youtube2-_46UrcI-xwY" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;_46UrcI-xwY&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/_46UrcI-xwY?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>If you&#8217;re currently a Power BI developer or analyst, I&#8217;d be interested to know:</p><p><strong>What&#8217;s the one part of Microsoft Fabric you find most confusing right now?</strong></p><p>Reply or leave a comment. It might become my next video.</p><p>&#8212; <strong>Analytical Guy<br>www.AnalyticalGuy.Tech</strong></p>]]></content:encoded></item><item><title><![CDATA[Power BI can’t do writeback. So I made it.]]></title><description><![CDATA[How I turned a read-only report into something users can edit, with a Microsoft Fabric Data App, DirectQuery, and zero gateways.]]></description><link>https://analyticalguy.substack.com/p/power-bi-cant-do-writeback-so-i-made</link><guid isPermaLink="false">https://analyticalguy.substack.com/p/power-bi-cant-do-writeback-so-i-made</guid><dc:creator><![CDATA[Atikant Jain]]></dc:creator><pubDate>Fri, 07 Aug 2026 11:04:09 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/bdda8dba-6375-4ae8-b2eb-42bafb257b7b_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><div><hr></div><p>Every organisation hits the same wall with Power BI <span>eventually.</span></p><p>Your <strong>actuals</strong> live in the data&#8212;sales, costs, headcount, whatever. But the numbers that matter most during planning season&#8212;<strong>budgets, targets, forecasts</strong>, don&#8217;t come from a database. They come from <em>people</em>. And Power BI, for all its <span>power, is fundamentally </span><strong><span>read-only</span></strong><span>.</span></p><p>So what happens? Budgets end up scattered across a hundred spreadsheets, emailed around, versioned into oblivion, and finally re-imported by some poor analyst at 11pm. Every. <span>Single. Cycle.</span></p><p>This week I built the fix: a <strong>Microsoft Fabric Data App</strong> where users type their budgets directly, and a Power BI report that shows <strong>Actual vs Budget &#8212; live</strong>, the moment they hit save. No spreadsheets. No gateway. No refresh <span>button.</span></p><p>Here&#8217;s the full <span>build. &#128071;</span></p><p><strong>&#128250; <span>Watch the full walkthrough</span></strong></p><div id="youtube2-OdD4tPvCTkE" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;OdD4tPvCTkE&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/OdD4tPvCTkE?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div><hr></div><h2><strong>The idea in <span>one sentence</span></strong></h2><blockquote><p>The data gives you the <strong>actual</strong>. The app captures the <strong>human number</strong> the data can&#8217;t know. The report compares them.</p></blockquote><p>That&#8217;s the whole pattern &#8212; and once you see it, you&#8217;ll find a dozen uses: budgets, sales targets, forecast overrides, approvals, manual corrections. Today it&#8217;s <span>budgeting.</span></p><h2><strong>The <span>architecture</span></strong></h2><p>Everything lives in a single Fabric workspace, entirely <span>in the cloud:</span></p><ul><li><p><strong>Fabric Data App (Rayfin)</strong> &#8212; a small web app where a planner enters a budget at <em>month &#215; category &#215; store</em> grain.</p></li><li><p><strong>Fabric SQL database</strong> &#8212; the app writes each budget row here.</p></li><li><p><strong>Lakehouse</strong> &#8212; the actuals land here from CSV.</p></li><li><p><strong>Power BI composite model</strong> &#8212; Imports the actuals, reads the budget table via <strong>DirectQuery</strong>, and exposes <code>Budget</code>, <code>Variance</code>, and <code>Achievement %</code> measures.</p></li><li><p>The clever bit: the app reads its <strong>dropdown values (categories, stores, countries) live from the semantic model</strong> with DAX, so they&#8217;re never out of sync.</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_!cQEQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b61e353-ef2a-4b11-b842-ab05197cf679_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!cQEQ!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b61e353-ef2a-4b11-b842-ab05197cf679_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!cQEQ!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b61e353-ef2a-4b11-b842-ab05197cf679_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!cQEQ!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b61e353-ef2a-4b11-b842-ab05197cf679_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!cQEQ!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b61e353-ef2a-4b11-b842-ab05197cf679_1536x1024.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!cQEQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b61e353-ef2a-4b11-b842-ab05197cf679_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2b61e353-ef2a-4b11-b842-ab05197cf679_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;:1671446,&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://analyticalguy.substack.com/i/210039775?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b61e353-ef2a-4b11-b842-ab05197cf679_1536x1024.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_!cQEQ!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b61e353-ef2a-4b11-b842-ab05197cf679_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!cQEQ!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b61e353-ef2a-4b11-b842-ab05197cf679_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!cQEQ!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b61e353-ef2a-4b11-b842-ab05197cf679_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!cQEQ!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b61e353-ef2a-4b11-b842-ab05197cf679_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><figcaption class="image-caption">Data Architecture</figcaption></figure></div><p>Because the budget table is <strong>DirectQuery</strong>, a new budget appears in the report <em>without a dataset refresh</em>. <span>That&#8217;s the magic moment in the video.</span></p><div><hr></div><h2><strong><span>How I built it</span></strong></h2><h3><strong>1. The writeback app &#8212; with <span>Claude + VS Code</span></strong></h3><p>I scaffolded the app with <strong>Rayfin</strong>, Microsoft&#8217;s framework for <span>Fabric Data Apps:</span></p><pre><code><code>npm create @microsoft/rayfin@latest -- "FabricPlanningBudgetEntry" --template dataapp --workspace "Retail-Planning-Fabric-App"</code></code></pre><p>Then I defined a single data model &#8212; a <code>Budget</code> entity storing month, category, store, and amount. The one design decision that pays off later: <strong>store both the key and the name</strong> (<code>categoryKey</code> <em>and</em> <code>category</code>), so the budget joins cleanly <span>to the model.</span></p><p>A form, a couple of dropdowns fed live from the semantic model, some validation, and a &#8220;recent entries&#8221; table. Deploy is one command &#8212; <code>rayfin up</code> &#8212; which builds the app <em>and</em> provisions the SQL table in <span>a single step.</span></p><h3><strong>2. Actuals <span>into a Lakehouse</span></strong></h3><p>The actuals were CSVs, so I dropped them into a Fabric <strong>Lakehouse</strong> and loaded them as tables. All cloud &#8212; no <span>gateway required.</span></p><h3><strong><span>3. The composite model</span></strong></h3><p>In Power BI Desktop I pointed the actuals at the Lakehouse SQL endpoint and added the <strong>Budgets</strong> table as <strong>DirectQuery</strong> from the Fabric SQL database. Keys made the relationships trivial; a generated date table kept things clean; four simple measures <span>finished it.</span></p><h3><strong>4. Publish <span>&#8212; no gateway</span></strong></h3><p>The part everyone gets wrong: for a cloud source, you <strong>don&#8217;t need a gateway</strong>. I set both sources as <strong>cloud connections with OAuth</strong> and <span>published. Done.</span></p><p>Then the payoff: type a budget in the app &#8594; refresh the visual &#8594; Actual vs Budget updates <span>instantly.</span></p><div><hr></div><h2><strong>The gotchas that cost me hours (so <span>they don&#8217;t cost you)</span></strong></h2><p>This is the part I wish someone had handed <span>me up front:</span></p><ul><li><p><strong>The </strong><code>dataapp</code><strong> template ships without </strong><code>rayfin/tsconfig.json</code><strong>.</strong> Without it, deployment silently compiles <em>zero</em> entities and you get an &#8220;HTTP 404 / no entities&#8221; error. Copy it from the CLI&#8217;s own template and add a <code>references</code> entry to the root tsconfig.</p></li><li><p><strong>Turn OFF Auto date/time.</strong> I genuinely hate this feature. It creates hidden date tables you never see, bloats the model, and <em>will</em> break your refresh the moment you add a security role.</p></li><li><p><strong>Clean your CSVs before loading to a Lakehouse.</strong> Strip the <strong>UTF-8 BOM</strong> and remove <strong>spaces from column headers</strong>, or &#8220;Load to Tables&#8221; rejects them with a cryptic error.</p></li><li><p><strong>Don&#8217;t fight the personal gateway.</strong> A composite model with a cloud DirectQuery source <em>can&#8217;t</em> use one &#8212; keep everything cloud and it just works.</p></li><li><p><strong>Lakehouse vs Dataflow Gen2:</strong> Lakehouse is simpler and faster for static files. If your source data <strong>changes regularly</strong>, use a <strong>Dataflow Gen2</strong> so it&#8217;s a repeatable pipeline instead of you re-uploading.</p></li><li><p><strong>Open the app inside the Fabric portal</strong> &#8212; the embedded auth only works there, not from the <span>raw hosting URL.</span></p></li></ul><div><hr></div><h2><strong><span>What&#8217;s next</span></strong></h2><p>The same pattern works for <em>any</em> &#8220;observed vs human&#8221; comparison. I&#8217;m planning an <strong>&#8220;API &#8594; Fabric &#8594; writeback&#8221;</strong> episode &#8212; pull live data from a public API (creator analytics vs goals, weather-driven demand planning, GitHub OKRs&#8230;) and write the human <span>number back.</span></p><p><strong>Which one should I build? <span>Reply and tell me.</span></strong></p><div><hr></div><p><strong>&#128279; Resources: https://analyticalguy.tech/files</strong></p><p><em>If this was useful, subscribe &#8212; I build Microsoft Fabric and Power BI solutions in public, gotchas and all. And forward it to the one colleague who&#8217;s still emailing budget spreadsheets. <span>&#128578;</span></em></p><p><em><span>Yours truly,<br>Analytical Guy<br></span><a href="https://analyticalguy.tech"><sup>https://analyticalguy.tech</sup></a></em></p><p><br></p>]]></content:encoded></item><item><title><![CDATA[🚀 I Finally Published My Biggest Power BI Tutorial Yet (2.5 Hours)]]></title><description><![CDATA[Perfect for Beginners!]]></description><link>https://analyticalguy.substack.com/p/i-finally-published-my-biggest-power</link><guid isPermaLink="false">https://analyticalguy.substack.com/p/i-finally-published-my-biggest-power</guid><dc:creator><![CDATA[Atikant Jain]]></dc:creator><pubDate>Fri, 31 Jul 2026 12:35:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!8ogj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4000dd39-a679-47de-a42d-9d203562fd53_1361x657.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you&#8217;ve been following my work, you know I&#8217;ve been working on something special over the last few weeks.</p><p>Today, I&#8217;m excited to share my most comprehensive Power BI tutorial yet.</p><p><strong>&#127909; Power BI End-to-End FMCG Sales Analytics Dashboard (2.5 Hours)</strong></p><p>This isn&#8217;t just another &#8220;build a chart&#8221; tutorial.</p><p>It&#8217;s a complete Power BI project that takes you from a raw Excel file all the way to a professional dashboard that you can confidently add to your portfolio.</p><p>Whether you&#8217;re:</p><ul><li><p>Learning Power BI for the first time</p></li><li><p>Preparing for data analyst interviews</p></li><li><p>Looking to switch careers into analytics</p></li><li><p>Wanting to improve your dashboard design</p></li></ul><p>...this tutorial is designed for you.</p><div><hr></div><h1>What You&#8217;ll Build</h1><p>By the end of this tutorial, you&#8217;ll have a professional <strong>FMCG Sales Analytics Dashboard</strong> featuring:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!8ogj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4000dd39-a679-47de-a42d-9d203562fd53_1361x657.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!8ogj!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4000dd39-a679-47de-a42d-9d203562fd53_1361x657.png 424w, /__u/substackcdn.com/image/fetch/$s_!8ogj!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4000dd39-a679-47de-a42d-9d203562fd53_1361x657.png 848w, /__u/substackcdn.com/image/fetch/$s_!8ogj!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4000dd39-a679-47de-a42d-9d203562fd53_1361x657.png 1272w, /__u/substackcdn.com/image/fetch/$s_!8ogj!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4000dd39-a679-47de-a42d-9d203562fd53_1361x657.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!8ogj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4000dd39-a679-47de-a42d-9d203562fd53_1361x657.png" width="1361" height="657" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4000dd39-a679-47de-a42d-9d203562fd53_1361x657.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:657,&quot;width&quot;:1361,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:174096,&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://analyticalguy.substack.com/i/208937236?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4000dd39-a679-47de-a42d-9d203562fd53_1361x657.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_!8ogj!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4000dd39-a679-47de-a42d-9d203562fd53_1361x657.png 424w, /__u/substackcdn.com/image/fetch/$s_!8ogj!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4000dd39-a679-47de-a42d-9d203562fd53_1361x657.png 848w, /__u/substackcdn.com/image/fetch/$s_!8ogj!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4000dd39-a679-47de-a42d-9d203562fd53_1361x657.png 1272w, /__u/substackcdn.com/image/fetch/$s_!8ogj!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4000dd39-a679-47de-a42d-9d203562fd53_1361x657.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">Page1: Executive Summary</figcaption></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_!IITh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa975cd5-dbec-44b8-8797-749970929ecf_1359x655.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!IITh!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa975cd5-dbec-44b8-8797-749970929ecf_1359x655.png 424w, /__u/substackcdn.com/image/fetch/$s_!IITh!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa975cd5-dbec-44b8-8797-749970929ecf_1359x655.png 848w, /__u/substackcdn.com/image/fetch/$s_!IITh!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa975cd5-dbec-44b8-8797-749970929ecf_1359x655.png 1272w, /__u/substackcdn.com/image/fetch/$s_!IITh!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa975cd5-dbec-44b8-8797-749970929ecf_1359x655.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!IITh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa975cd5-dbec-44b8-8797-749970929ecf_1359x655.png" width="1359" height="655" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aa975cd5-dbec-44b8-8797-749970929ecf_1359x655.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:655,&quot;width&quot;:1359,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:133448,&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://analyticalguy.substack.com/i/208937236?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa975cd5-dbec-44b8-8797-749970929ecf_1359x655.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_!IITh!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa975cd5-dbec-44b8-8797-749970929ecf_1359x655.png 424w, /__u/substackcdn.com/image/fetch/$s_!IITh!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa975cd5-dbec-44b8-8797-749970929ecf_1359x655.png 848w, /__u/substackcdn.com/image/fetch/$s_!IITh!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa975cd5-dbec-44b8-8797-749970929ecf_1359x655.png 1272w, /__u/substackcdn.com/image/fetch/$s_!IITh!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa975cd5-dbec-44b8-8797-749970929ecf_1359x655.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">Page2: Product Analysis</figcaption></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_!uT83!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0b42350-f89f-457a-ae7b-59b31967cff7_1357x655.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!uT83!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0b42350-f89f-457a-ae7b-59b31967cff7_1357x655.png 424w, /__u/substackcdn.com/image/fetch/$s_!uT83!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0b42350-f89f-457a-ae7b-59b31967cff7_1357x655.png 848w, /__u/substackcdn.com/image/fetch/$s_!uT83!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0b42350-f89f-457a-ae7b-59b31967cff7_1357x655.png 1272w, /__u/substackcdn.com/image/fetch/$s_!uT83!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0b42350-f89f-457a-ae7b-59b31967cff7_1357x655.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!uT83!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0b42350-f89f-457a-ae7b-59b31967cff7_1357x655.png" width="1357" height="655" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e0b42350-f89f-457a-ae7b-59b31967cff7_1357x655.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:655,&quot;width&quot;:1357,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:119118,&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://analyticalguy.substack.com/i/208937236?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0b42350-f89f-457a-ae7b-59b31967cff7_1357x655.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_!uT83!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0b42350-f89f-457a-ae7b-59b31967cff7_1357x655.png 424w, /__u/substackcdn.com/image/fetch/$s_!uT83!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0b42350-f89f-457a-ae7b-59b31967cff7_1357x655.png 848w, /__u/substackcdn.com/image/fetch/$s_!uT83!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0b42350-f89f-457a-ae7b-59b31967cff7_1357x655.png 1272w, /__u/substackcdn.com/image/fetch/$s_!uT83!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0b42350-f89f-457a-ae7b-59b31967cff7_1357x655.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">Page3: Distributor + ASM analysis</figcaption></figure></div><p>More importantly, you&#8217;ll understand <strong>why</strong> each step is performed&#8212;not just copy what I&#8217;m doing.</p><div><hr></div><h1>What You&#8217;ll Learn</h1><p>We cover the complete Power BI workflow:</p><ul><li><p>Importing Excel data</p></li><li><p>Cleaning data with Power Query</p></li><li><p>Data Modeling (Star Schema)</p></li><li><p>DAX Fundamentals</p></li><li><p>Business KPI Measures</p></li><li><p>Dashboard Design Best Practices</p></li><li><p>Creating Interactive Reports</p></li><li><p>Publishing to Power BI Service</p></li></ul><p>This is the same workflow used in many real-world Power BI projects.</p><div><hr></div><h1>Course Outline</h1><p>&#128204; Power BI Fundamentals</p><p>&#128204; Understanding Business Data</p><p>&#128204; Power Query</p><p>&#128204; Data Modeling</p><p>&#128204; DAX</p><p>&#128204; KPI Development</p><p>&#128204; Dashboard Design</p><p>&#128204; AI-assisted Wireframing</p><p>&#128204; Publishing &amp; Sharing</p><div><hr></div><h1>Watch the Full Tutorial</h1><p>&#127909; <strong>Watch on YouTube</strong></p><div id="youtube2-nEXcXGcB220" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;nEXcXGcB220&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/nEXcXGcB220?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div><hr></div><h1>Free Resources</h1><p>I&#8217;ve also included downloadable resources so you can build everything alongside me.</p><ul><li><p>Dataset</p></li><li><p>Power BI (.pbix) file</p></li><li><p>Practice files</p></li></ul><p>(Links are available in the YouTube comments.)</p><div><hr></div><h1>What&#8217;s Next?</h1><p>Over the coming weeks, I&#8217;ll be publishing more practical content on:</p><ul><li><p>Power BI reports using AI</p></li><li><p>Fabric Apps</p></li><li><p>AI for Data Analysts</p></li><li><p>Power BI for Data Engineers</p></li><li><p>Power Query Tips</p></li><li><p>Dashboard Design</p></li><li><p>Microsoft Fabric</p></li><li><p>SQL</p></li><li><p>Career advice for aspiring analysts</p></li></ul><p>If that sounds useful, consider sharing with your colleagues and friends.</p><p>Thanks for reading, and I hope this tutorial helps you build confidence with Power BI.</p><p>See you in the next one!</p><p>&#8212; <strong>Atikant Jain (Analytical Guy)</strong></p><div><hr></div><p><strong>P.S.</strong> If you watch the tutorial, I&#8217;d love to know what you&#8217;d like me to cover next. Reply to this email or leave a comment on YouTube&#8212;your feedback shapes future content.</p>]]></content:encoded></item><item><title><![CDATA[I Built and Deployed a Full-Stack App Inside Microsoft Fabric — Here's How]]></title><description><![CDATA[FABRIC APP Launched]]></description><link>https://analyticalguy.substack.com/p/i-built-and-deployed-a-full-stack</link><guid isPermaLink="false">https://analyticalguy.substack.com/p/i-built-and-deployed-a-full-stack</guid><dc:creator><![CDATA[Atikant Jain]]></dc:creator><pubDate>Fri, 17 Jul 2026 11:03:19 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/8f95491a-fe61-4603-8f7d-3913cf9ce28a_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you&#8217;ve used Microsoft Fabric for analytics but never thought of it as a place to <strong>build and host actual applications</strong> &#8212; that&#8217;s exactly what changed my mind this week.</p><p>Using the <strong>Rayfin</strong> framework and <strong>Claude Code</strong>, I went from an empty folder to a live, authenticated, database-backed app in a single sitting. Auth, a real database with per-user security, and a public URL &#8212; all running <em>inside</em> Fabric.</p><p>Here&#8217;s the full walkthrough. &#128071;</p><div id="youtube2-cO3NSPFBEM0" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;cO3NSPFBEM0&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/cO3NSPFBEM0?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2><strong>What we actually built</strong></h2><p>A working <strong>To-Do app</strong> &#8212; but a real one, not a toy:</p><ul><li><p>&#128272; <strong>Microsoft sign-in</strong> (Fabric brokered auth)</p></li><li><p>&#128452;&#65039; <strong>A real database</strong> with <strong>row-level security</strong> &#8212; every user only sees their own tasks</p></li><li><p>&#9889; <strong>Task priorities</strong> (High / Medium / Low) added end-to-end, from the data model to the UI</p></li><li><p>&#128640; <strong>One-command deploy</strong> to a live, shareable URL</p></li></ul><p>The interesting part isn&#8217;t the app &#8212; it&#8217;s <em>how little friction there was between idea and deployed product.</em></p><div class="poll-embed" data-attrs="{&quot;id&quot;:797320}" data-component-name="PollToDOM"></div><p>&#128196; <strong>Reference links:</strong></p><ul><li><p>Microsoft Fabric &#8594; <a href="https://www.microsoft.com/microsoft-fabric">https://www.microsoft.com/microsoft-fabric</a></p></li><li><p>Claude Code &#8594; <a href="https://claude.com/claude-code">https://claude.com/claude-code</a></p></li><li><p>Rayfin framework docs &#8594; <a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/Introducing-Rayfin-A-new-AI-first-way-to-build-deploy-and-govern/ba-p/5191676">Rayfin docs</a></p></li><li><p>Source code / repo &#8594; <a href="https://github.com/microsoft/rayfin">Github link</a></p></li></ul><h2><strong>The part that surprised me</strong></h2><p>The whole thing is <strong>declarative</strong>. You describe your data as a class &#8212; <code>Todo</code>, with fields and a security policy &#8212; and Rayfin turns that into a real database table with a check constraint and per-user access enforced <em>server-side</em>. When I added the priority feature, I touched three files and re-ran one deploy command. That&#8217;s it.</p><p>That&#8217;s a genuinely different feeling from wiring up a backend, a database, an auth provider, and a host separately.</p><h2><strong>What&#8217;s next</strong></h2><p><strong>Part 2</strong> is already in the works &#8212; using Semantic Model to work on DEMAND &amp; FORECASTING write-back feature, and a few more features that turn this from a demo into something you&#8217;d actually use. Each part builds on the last.</p><p><strong>Subscribe</strong> to follow the series, and if you want me to cover a specific Fabric App scenario, just reply &#8212; I read every response.</p><div><hr></div><p>&#128172; <em>Building something on Fabric? Hit reply and tell me what you&#8217;re working on.</em><br>&#128276; <em>New parts drop regularly &#8212; <a href="https://claude.ai/epitaxy/local_90de3799-c1da-4777-8914-1df14bac8cb0#">subscribe</a> so you don&#8217;t miss Part 2.</em></p><div><hr></div>]]></content:encoded></item><item><title><![CDATA[I Let Claude Build an Entire Power BI Report — Here's What Happened]]></title><description><![CDATA[Microsoft just shipped agentic skills for Fabric. I connected Claude to Power BI Desktop and built a 4-page report without touching a single visual.]]></description><link>https://analyticalguy.substack.com/p/i-let-claude-build-an-entire-power</link><guid isPermaLink="false">https://analyticalguy.substack.com/p/i-let-claude-build-an-entire-power</guid><dc:creator><![CDATA[Atikant Jain]]></dc:creator><pubDate>Fri, 10 Jul 2026 11:03:57 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/1784d99e-e51e-4cb2-a497-23631e3dc06e_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Last week I did something that would&#8217;ve sounded like science fiction a year ago: I opened Power BI Desktop, typed a sentence, and watched an AI build a complete, themed, multi-page report &#8212; measures and all &#8212; while I drank my coffee.</p><p>No dragging fields onto a canvas. No fiddling with formatting panes. I <em>described the outcome</em>, and Claude did the rest using Microsoft&#8217;s new <strong><a href="https://community.fabric.microsoft.com/t5/Power-BI-Updates-Blog/Power-BI-June-2026-Feature-Summary/ba-p/5193264#toc-hId--1909792031">agentic skills for Fabric</a></strong>.</p><div id="youtube2-oIzuGgNEH-0" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;oIzuGgNEH-0&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/oIzuGgNEH-0?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>The full build is in the video above. This post is the &#8220;why it matters&#8221; version &#8212; plus the one moment that genuinely surprised me.</p><h2><strong>What actually got built</strong></h2><p>Starting from a raw retail model (sales, products, stores, customers), Claude produced a <strong>4-page Power BI report</strong>:</p><ul><li><p><strong>Overview, Products, Stores, Customers</strong> &#8212; with a real top navigation menu</p></li><li><p><strong>DAX measures written from scratch</strong> &#8212; including catching that the fact table had <em>no revenue column</em>, so it derived sales as quantity &#215; unit price on its own</p></li><li><p><strong>A custom theme</strong>, KPI cards with icons, sorted gradient charts, and a drill-down matrix</p></li><li><p>A <strong>dynamic AI insight line</strong> &#8212; <em>&#8220;Computers leads at 34% of sales &#183; United States is the top market &#183; 58.6% margin&#8221;</em> &#8212; that recalculates when you change the year filter</p></li></ul><p>All from plain-English prompts. The kind of thing that&#8217;s normally a full afternoon of clicking.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!W2Zr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60a9ca11-c392-4be3-9c40-219fdd24fe71_1365x772.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!W2Zr!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60a9ca11-c392-4be3-9c40-219fdd24fe71_1365x772.png 424w, /__u/substackcdn.com/image/fetch/$s_!W2Zr!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60a9ca11-c392-4be3-9c40-219fdd24fe71_1365x772.png 848w, /__u/substackcdn.com/image/fetch/$s_!W2Zr!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60a9ca11-c392-4be3-9c40-219fdd24fe71_1365x772.png 1272w, /__u/substackcdn.com/image/fetch/$s_!W2Zr!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60a9ca11-c392-4be3-9c40-219fdd24fe71_1365x772.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!W2Zr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60a9ca11-c392-4be3-9c40-219fdd24fe71_1365x772.png" width="1365" height="772" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/60a9ca11-c392-4be3-9c40-219fdd24fe71_1365x772.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:772,&quot;width&quot;:1365,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:156830,&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://analyticalguy.substack.com/i/206251436?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60a9ca11-c392-4be3-9c40-219fdd24fe71_1365x772.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_!W2Zr!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60a9ca11-c392-4be3-9c40-219fdd24fe71_1365x772.png 424w, /__u/substackcdn.com/image/fetch/$s_!W2Zr!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60a9ca11-c392-4be3-9c40-219fdd24fe71_1365x772.png 848w, /__u/substackcdn.com/image/fetch/$s_!W2Zr!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60a9ca11-c392-4be3-9c40-219fdd24fe71_1365x772.png 1272w, /__u/substackcdn.com/image/fetch/$s_!W2Zr!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60a9ca11-c392-4be3-9c40-219fdd24fe71_1365x772.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><figcaption class="image-caption">Vibe Coded Power BI Report</figcaption></figure></div><h2><strong>The part that sells it: what happens </strong><em><strong>without</strong></em><strong> the skills</strong></h2><p>Here&#8217;s the demo that made the concept click for me.</p><p>I asked a plain AI &#8212; no skills loaded &#8212; to &#8220;build a Power BI page.&#8221; It confidently produced JSON that <em>looked</em> right&#8230; and opened <strong>broken</strong> in Power BI Desktop. Invalid visual types. Properties in the wrong place. Error boxes.</p><p>That&#8217;s the trap with AI and specialized formats: it&#8217;s <em>confident but wrong</em>.</p><p>The agentic skills fix exactly this. They give the model Microsoft&#8217;s actual report spec (PBIR), a <strong>validator</strong>, and &#8212; critically &#8212; the ability to <strong>reload Power BI and screenshot its own work</strong>. So it doesn&#8217;t just generate and hope. It generates, checks, <em>sees the render</em>, and fixes itself.</p><h2><strong>How it works (the 60-second architecture)</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!7LCk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd58807a3-fd9b-49da-ba55-6b54e9b9853e_2752x1317.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!7LCk!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd58807a3-fd9b-49da-ba55-6b54e9b9853e_2752x1317.png 424w, /__u/substackcdn.com/image/fetch/$s_!7LCk!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd58807a3-fd9b-49da-ba55-6b54e9b9853e_2752x1317.png 848w, /__u/substackcdn.com/image/fetch/$s_!7LCk!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd58807a3-fd9b-49da-ba55-6b54e9b9853e_2752x1317.png 1272w, /__u/substackcdn.com/image/fetch/$s_!7LCk!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd58807a3-fd9b-49da-ba55-6b54e9b9853e_2752x1317.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!7LCk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd58807a3-fd9b-49da-ba55-6b54e9b9853e_2752x1317.png" width="1456" height="697" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d58807a3-fd9b-49da-ba55-6b54e9b9853e_2752x1317.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:697,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:509863,&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://analyticalguy.substack.com/i/206251436?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd58807a3-fd9b-49da-ba55-6b54e9b9853e_2752x1317.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_!7LCk!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd58807a3-fd9b-49da-ba55-6b54e9b9853e_2752x1317.png 424w, /__u/substackcdn.com/image/fetch/$s_!7LCk!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd58807a3-fd9b-49da-ba55-6b54e9b9853e_2752x1317.png 848w, /__u/substackcdn.com/image/fetch/$s_!7LCk!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd58807a3-fd9b-49da-ba55-6b54e9b9853e_2752x1317.png 1272w, /__u/substackcdn.com/image/fetch/$s_!7LCk!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd58807a3-fd9b-49da-ba55-6b54e9b9853e_2752x1317.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 two channels working in parallel:</p><ol><li><p><strong>Model channel (live):</strong> Claude talks to the running Power BI Desktop model over XMLA to create measures and test DAX.</p></li><li><p><strong>Report channel (files):</strong> Claude writes the report&#8217;s JSON files to disk, validates them, then reloads Desktop to render them.</p></li></ol><p>Wrapping both is the loop that makes it trustworthy:</p><blockquote><p><strong>write &#8594; validate &#8594; reload &#8594; screenshot &#8594; fix &#8594; repeat</strong></p></blockquote><p>That self-correction loop is the whole difference between a party trick and something you&#8217;d actually use.</p><h2><strong>Where it got genuinely fun: conversation, not configuration</strong></h2><p>The best moments weren&#8217;t the first build &#8212; they were the follow-ups. I just <em>talked to it</em>:</p><ul><li><p>&#8220;Make it multi-page with a navigation menu.&#8221; &#8594; It restructured into four pages with a tab bar.</p></li><li><p>&#8220;The year filter looks off.&#8221; &#8594; It restyled the slicer.</p></li><li><p>&#8220;Polish the cards and add a dynamic insight.&#8221; &#8594; Bigger numbers, icons, and that live AI sentence.</p></li></ul><p>And the finale: I dropped a <strong>theme file into the folder</strong> and said <em>&#8220;use this for inspiration.&#8221;</em> It read the palette and typography and <strong>re-skinned every page</strong> to match. Feed it your brand &#8212; or a screenshot &#8212; and it designs to <em>your</em> taste, not a generic template.</p><p>It felt less like using software and more like <strong>art-directing a designer who never gets tired.</strong></p><h2><strong>The honest take</strong></h2><p>This isn&#8217;t magic, and I&#8217;m not telling you to ship AI-built reports to your CFO tomorrow. A few real caveats:</p><ul><li><p>You still need to <strong>review the DAX and the numbers</strong> &#8212; the AI is fast, not infallible.</p></li><li><p>It works best when you can <strong>see and verify</strong> each step (the screenshot loop matters).</p></li><li><p>It&#8217;s a <strong>collaborator, not a replacement</strong> &#8212; you&#8217;re still the analyst deciding what&#8217;s worth building.</p></li></ul><p>But the direction is unmistakable. The skill of the future isn&#8217;t <em>clicking through menus faster</em> &#8212; it&#8217;s <strong>knowing what to ask for and how to judge the result.</strong></p><p>The future of Power BI is agentic. And it&#8217;s already here in preview.</p><h2><strong>Watch the full build</strong></h2><p>In the video I walk through all of it end-to-end: the announcement, the &#8220;without skills&#8221; failure, setting up the plugin in Claude, the first build, the conversational refinement, and the design re-skin.</p><div id="youtube2-oIzuGgNEH-0" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;oIzuGgNEH-0&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/oIzuGgNEH-0?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>If you found this useful, <strong>subscribe</strong> &#8212; I break down AI + data workflows you can actually use, minus the hype.</p><p><em>What would you hand off to an AI agent first &#8212; and what would you never let it touch? Reply and tell me.</em></p>]]></content:encoded></item><item><title><![CDATA[Are you a Power BI Newbie or an Architect? (Score yourself /36)]]></title><description><![CDATA[A simple map of every Power BI skill &#8212; from your first chart to designing the whole platform. Find your level in 5 minutes.]]></description><link>https://analyticalguy.substack.com/p/are-you-a-power-bi-newbie-or-an-architect</link><guid isPermaLink="false">https://analyticalguy.substack.com/p/are-you-a-power-bi-newbie-or-an-architect</guid><dc:creator><![CDATA[Atikant Jain]]></dc:creator><pubDate>Sun, 05 Jul 2026 04:02:30 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/4b9ad054-7fae-4bcb-982a-ed2cda9d268e_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most Power BI developers have no idea how good they actually are.</p><p>You can build a report&#8230; but is that <em>junior</em> or <em>senior</em>? You know some DAX&#8230; but is it enough to get paid more? There&#8217;s no map. So I built one.</p><p>I broke Power BI down into <strong>6 levels and 36 skills</strong> &#8212; from &#8220;I just opened Power BI&#8221; all the way to &#8220;I design the data platform and lead the team.&#8221; Watch the full breakdown here, then scroll down and <strong>score yourself</strong>:</p><div id="youtube2-mjh5nXvNXQA" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;mjh5nXvNXQA&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/mjh5nXvNXQA?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h3><strong>First, an honest disclaimer</strong></h3><p>These 6 levels (A1 &#8594; C2) are <strong>my own framework</strong> &#8212; a simple way to show how Power BI skills build up in complexity and what employers actually expect at each stage. They are <strong>not</strong> an official Microsoft classification or certification. Think of it as a map, not a rulebook.</p><h3><strong>The 6 Levels (and the 36 skills)</strong></h3><p><strong>&#128997; A1 &#8212; Newbie</strong> <em>(you&#8217;ve opened Power BI)</em><br>Get Data &#183; Core Visuals &#183; Filters &amp; Slicers &#183; Basic Power Query &#183; Publish to the Service &#183; Dashboards vs Reports</p><p><strong>&#128999; A2 &#8212; Learner</strong> <em>(you can shape data)</em><br>Power Query transforms &#183; Data cleaning &#183; Relationships &#183; Basic DAX &#183; Report design &#183; Q&amp;A &amp; Smart Narrative</p><p><strong>&#129000; B1 &#8212; Analyst</strong> <em>(you can model &amp; tell stories)</em><br>Star schema &#183; Date table &amp; time intelligence &#183; CALCULATE/FILTER/ALL &#183; Drill-through &amp; bookmarks &#183; AI visuals &#183; Copilot basics</p><p><strong>&#129000; B2 &#8212; Developer</strong> <em>(enterprise-ready &amp; Fabric-aware)</em><br>Advanced DAX &#183; Time intelligence &#183; Advanced Power Query &#183; Row-Level Security &#183; Microsoft Fabric fundamentals &#183; Copilot for development</p><p><strong>&#129001; C1 &#8212; Expert</strong> <em>(you optimise &amp; engineer at scale)</em><br>Performance tuning &#183; DAX Studio &#183; Calc groups &amp; field parameters &#183; Enterprise refresh &#183; Fabric engineering &#183; AI-ready semantic models</p><p><strong>&#129001; C2 &#8212; Architect</strong> <em>(you design the platform &amp; lead)</em><br>Tabular Editor &amp; TMDL &#183; Git &amp; CI/CD &#183; Semantic model governance &#183; MCP &amp; AI agents &#183; Azure AI / AI Foundry &#183; Solution architecture &amp; leadership</p><h3><strong>Now score yourself &#8212; out of 36</strong></h3><p>Give yourself <strong>1 point per skill</strong> &#8212; but only if you&#8217;ve actually done it in a <em>real</em> report (not just watched a tutorial). Then find your rank:</p><ul><li><p><strong>1&#8211;6</strong> &#8594; Newbie</p></li><li><p><strong>7&#8211;12</strong> &#8594; Learner</p></li><li><p><strong>13&#8211;18</strong> &#8594; Analyst</p></li><li><p><strong>19&#8211;24</strong> &#8594; Developer</p></li><li><p><strong>25&#8211;30</strong> &#8594; Expert</p></li><li><p><strong>31&#8211;36</strong> &#8594; Architect</p></li></ul><h3><strong>The uncomfortable truth</strong></h3><p>Most people plateau at <strong>B1 (Analyst)</strong> and stay there for years &#8212; because they can <em>build a report</em>, so they assume they&#8217;ve made it. But the jump from Analyst to Developer/Architect isn&#8217;t luck or years served. It&#8217;s a specific, learnable set of skills. That gap is your roadmap.</p><p>And here&#8217;s the part nobody&#8217;s talking about: levels 4&#8211;6 are the people who <em>build the AI</em> &#8212; the ones who make a model Copilot can actually read, and wire it up with Fabric and MCP. As AI eats the boring parts of analytics, <strong>that&#8217;s the work that stays valuable.</strong></p><h3><strong>Get the free checklist</strong></h3><p>I turned all 36 skills into a <strong>free checklist</strong> so you can score yourself properly and track your progress level by level:</p><p><a href="https://firstdatajob.com/learn/6_levels_power_bi">Get your free PDFs here.</a></p><h3><strong>Watch the full video</strong></h3><p>The video walks through every level with examples and the exact skill that gets you to the next one:</p><div id="youtube2-mjh5nXvNXQA" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;mjh5nXvNXQA&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/mjh5nXvNXQA?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>If this gave you a clearer path, <strong>subscribe</strong> &#8212; this newsletter (and my channel) is your Power BI + data-career roadmap, with a focus on breaking into data here in Australia &#127462;&#127482;.</p><p>So &#8212; <strong>reply and tell me your score /36 and the one skill you&#8217;re learning next.</strong> I read every reply.</p><p>See you in the next one,<br><strong>Analytical Guy</strong></p>]]></content:encoded></item><item><title><![CDATA[Clickable KPI Cards in Power BI (Easy)]]></title><description><![CDATA[One card, multiple metrics, no custom visual &#8212; just five steps.]]></description><link>https://analyticalguy.substack.com/p/clickable-kpi-cards-in-power-bi-easy</link><guid isPermaLink="false">https://analyticalguy.substack.com/p/clickable-kpi-cards-in-power-bi-easy</guid><dc:creator><![CDATA[Atikant Jain]]></dc:creator><pubDate>Thu, 18 Jun 2026 12:04:17 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!axtG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa02ebded-895e-4ebf-bb34-fd37c695c6dd_1271x641.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you&#8217;ve ever stacked three KPI cards down the side of a Power BI report just to show Sales, Quantity, and Unique Products, this trick is for you.</p><p>We&#8217;re going to build <strong>one</strong> KPI card that switches between metrics when the user clicks a button. No custom visual, no marketplace plugin &#8212; just DAX and a bit of SVG.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!axtG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa02ebded-895e-4ebf-bb34-fd37c695c6dd_1271x641.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!axtG!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa02ebded-895e-4ebf-bb34-fd37c695c6dd_1271x641.png 424w, /__u/substackcdn.com/image/fetch/$s_!axtG!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa02ebded-895e-4ebf-bb34-fd37c695c6dd_1271x641.png 848w, /__u/substackcdn.com/image/fetch/$s_!axtG!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa02ebded-895e-4ebf-bb34-fd37c695c6dd_1271x641.png 1272w, /__u/substackcdn.com/image/fetch/$s_!axtG!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa02ebded-895e-4ebf-bb34-fd37c695c6dd_1271x641.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!axtG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa02ebded-895e-4ebf-bb34-fd37c695c6dd_1271x641.png" width="1271" height="641" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a02ebded-895e-4ebf-bb34-fd37c695c6dd_1271x641.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:641,&quot;width&quot;:1271,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:220942,&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://analyticalguy.substack.com/i/202567705?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa02ebded-895e-4ebf-bb34-fd37c695c6dd_1271x641.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_!axtG!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa02ebded-895e-4ebf-bb34-fd37c695c6dd_1271x641.png 424w, /__u/substackcdn.com/image/fetch/$s_!axtG!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa02ebded-895e-4ebf-bb34-fd37c695c6dd_1271x641.png 848w, /__u/substackcdn.com/image/fetch/$s_!axtG!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa02ebded-895e-4ebf-bb34-fd37c695c6dd_1271x641.png 1272w, /__u/substackcdn.com/image/fetch/$s_!axtG!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa02ebded-895e-4ebf-bb34-fd37c695c6dd_1271x641.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><figcaption class="image-caption">Clickable KPI Card</figcaption></figure></div><h2><strong>How to build it? (5 steps)</strong></h2><p><strong>Step 1 &#8212; Build your base measures</strong><br>Create TY and LY pairs for every metric you want to switch between. Example:</p><ul><li><p><code>Total Sales</code> / <code>Total Sales LY</code></p></li><li><p><code>Total Quantity Sold</code> / <code>Total Quantity Sold LY</code></p></li><li><p><code>Total Unique Products</code> / <code>Total Unique Products LY</code></p></li></ul><p><strong>Step 2 &#8212; Create a field parameter</strong><br>Go to <strong>Modeling &#8594; New parameter &#8594; Fields</strong> and add the TY measures. Power BI auto-creates a <code>Parameter</code> table with a <code>Parameter Order</code> column (0, 1, 2&#8230;) &#8212; that&#8217;s the index we&#8217;ll use to switch.</p><p><strong>Step 3 &#8212; Drop a button slicer</strong><br>Add a <strong>Slicer</strong> visual, set it to <strong>Tile</strong> layout, and put the <code>Parameter</code> field in it. Clicking a button filters the parameter table to one row.</p><p><strong>Step 4 &#8212; Write the SVG measure</strong><br>Create a measure that reads <code>Parameter[Parameter Order]</code>, picks the right TY/LY pair via <code>SWITCH</code>, formats the values, and returns an SVG string prefixed with <code>data:image/svg+xml;utf8,</code>. Color the variance green or red based on sign &#8212; that gives the card its &#8220;smart&#8221; feel.</p><p><strong>Step 5 &#8212; Render it as an Image</strong><br>Drop an <strong>Image</strong> visual on the report, drag the measure into the URL field, and in the model view set the measure&#8217;s <strong>Data category</strong> to <strong>Image URL</strong>. Done &#8212; click a slicer button and the card swaps.</p><p>That&#8217;s it. Five steps, no custom visual, fully native Power BI.</p><h2><strong>Try it yourself</strong></h2><p>I&#8217;ve put the full DAX measure, a README with the step-by-step, and a preview screenshot on GitHub. Clone it, paste the measure into your model, and you&#8217;re up:</p><p>&#128073; <a href="https://firstdatajob.com/dashboard/learn/ClickableKPICard">Resources</a></p><div><hr></div><h2><strong>Want to actually land a data job?</strong></h2><p>If you&#8217;re learning Power BI because you want a job in data &#8212; read this next bit.</p><p>I built <a href="https://firstdatajob.com/">FirstDataJob.com</a> for exactly that. It&#8217;s the resource I wish I&#8217;d had when I was breaking into the field:</p><ul><li><p><strong>Resume reviews built for data roles</strong> &#8212; not generic templates. We look at how you frame your projects, your tools, and your impact metrics so recruiters actually call back.</p></li><li><p><strong>Curated job listings</strong> &#8212; analyst, BI developer, data engineer roles, filtered for actual entry- and mid-level openings (not the &#8220;entry-level, 5 years required&#8221; trap).</p></li><li><p><strong>Upskilling tracks</strong> &#8212; Power BI, SQL, Python, and DAX paths that map to what hiring managers test for, not what looks good on a course catalog.</p></li></ul><p>If a clickable KPI card felt approachable, the rest of the journey can too. Start at <a href="https://firstdatajob.com/">FirstDataJob.com</a>.</p><div><hr></div><p><em>Subscribe &#8212; I help you learn new Data Concept every week!</em></p><p></p>]]></content:encoded></item><item><title><![CDATA[Build a Custom KPI Card in Power BI with HTML + DAX]]></title><description><![CDATA[One custom visual. Infinite designs. Sales Performance, TY vs LY, and a % achievement bar chart by category &#8212; all from a single DAX measure.]]></description><link>https://analyticalguy.substack.com/p/build-a-custom-kpi-card-in-power</link><guid isPermaLink="false">https://analyticalguy.substack.com/p/build-a-custom-kpi-card-in-power</guid><dc:creator><![CDATA[Atikant Jain]]></dc:creator><pubDate>Fri, 05 Jun 2026 16:28:23 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!KfqM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbd9970c-4205-48d5-a055-4b9c3e0a28d9_355x433.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Native Power BI KPI cards do one thing: a big number. No conditional color. No comparison bar. No breakdown. If you want any of that, you stitch together three visuals and pray the alignment holds.</p><p>There&#8217;s a better way &#8212; and it uses a visual most Power BI developers have never tried: the <strong>HTML Content</strong> visual.</p><div><hr></div><h4>This Article/Video will let you build this visual in 5 minutes:</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!KfqM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbd9970c-4205-48d5-a055-4b9c3e0a28d9_355x433.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!KfqM!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbd9970c-4205-48d5-a055-4b9c3e0a28d9_355x433.png 424w, /__u/substackcdn.com/image/fetch/$s_!KfqM!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbd9970c-4205-48d5-a055-4b9c3e0a28d9_355x433.png 848w, /__u/substackcdn.com/image/fetch/$s_!KfqM!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbd9970c-4205-48d5-a055-4b9c3e0a28d9_355x433.png 1272w, /__u/substackcdn.com/image/fetch/$s_!KfqM!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbd9970c-4205-48d5-a055-4b9c3e0a28d9_355x433.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!KfqM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbd9970c-4205-48d5-a055-4b9c3e0a28d9_355x433.png" width="355" height="433" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cbd9970c-4205-48d5-a055-4b9c3e0a28d9_355x433.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:433,&quot;width&quot;:355,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:130907,&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://analyticalguy.substack.com/i/200769985?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56c119c3-82fa-4574-8b3b-94e84c88d102_355x433.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_!KfqM!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbd9970c-4205-48d5-a055-4b9c3e0a28d9_355x433.png 424w, /__u/substackcdn.com/image/fetch/$s_!KfqM!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbd9970c-4205-48d5-a055-4b9c3e0a28d9_355x433.png 848w, /__u/substackcdn.com/image/fetch/$s_!KfqM!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbd9970c-4205-48d5-a055-4b9c3e0a28d9_355x433.png 1272w, /__u/substackcdn.com/image/fetch/$s_!KfqM!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbd9970c-4205-48d5-a055-4b9c3e0a28d9_355x433.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><figcaption class="image-caption">Custom Visual in Power BI</figcaption></figure></div><div><hr></div><h3><strong>What is the HTML Content visual?</strong></h3><p>It&#8217;s a free, Microsoft-certified custom visual on AppSource. Install it once. From that point forward, anything you can write in HTML + CSS &#8212; cards, badges, bar charts, narrative panels, animated backgrounds &#8212; you can render inside a Power BI report. The HTML comes from a single DAX measure that returns a string.</p><p>So you&#8217;re installing <strong>one custom visual</strong>, but you&#8217;re building <strong>unlimited designs</strong> with it. That&#8217;s the unlock.</p><h3><strong>What we&#8217;re building today</strong></h3><p>A dark, glassy KPI tile with:</p><ul><li><p>The current year&#8217;s sales as the hero number</p></li><li><p>A green or red YoY % badge that flips based on growth</p></li><li><p>An &#8220;overall achievement&#8221; bar with a white reference line at 100%</p></li><li><p>A by-category bar chart where every bar is green if it beat last year, red if it didn&#8217;t</p></li></ul><p>All of it is one DAX measure rendered through the HTML Content visual. No Python, no R, no embedded webpage &#8212; just DAX that returns HTML.</p><div id="youtube2-Ub08Lh5vULM" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;Ub08Lh5vULM&quot;,&quot;startTime&quot;:&quot;29s&quot;,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/Ub08Lh5vULM?start=29s&amp;rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>If you like such videos in your posts, then do let me know in the comments.</p><p>Also if you are looking for jobs in data profession, it will be great to check this website for free account https://firstdatajob.com</p><p>(This website is helping students to find data jobs that they were unable to find on LinkedIn)</p><div><hr></div><p>Stay Analytical, Stay Curious!</p><p>- Atikant Jain (AJ)<br>&#128205;Perth, Australia</p>]]></content:encoded></item><item><title><![CDATA[Looking for your first data role in Australia or India?]]></title><description><![CDATA[I built a job board only for data roles. AI-matched to your resume. Free. Here's how it actually helps.]]></description><link>https://analyticalguy.substack.com/p/looking-for-your-first-data-role</link><guid isPermaLink="false">https://analyticalguy.substack.com/p/looking-for-your-first-data-role</guid><dc:creator><![CDATA[Atikant Jain]]></dc:creator><pubDate>Wed, 03 Jun 2026 09:01:30 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Amem!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8fb6415-4407-481e-a956-30c991fa623a_1280x1280.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey &#128075;</p><p>Quick personal note.</p><p>Most data professionals I talk to are stuck in the same loop:</p><p><code>- Scroll LinkedIn for 2 hours</code></p><p><code>- Apply to 30 random listings</code></p><p><code>- Hear back from maybe 1</code></p><p>The job boards aren&#8217;t the problem &#8212; they show every job to everyone. There&#8217;s no filtering for what actually fits YOU.</p><p><strong>So over the last 8 months, I built FirstDataJob to fix exactly that.</strong></p><div><hr></div><h2><strong>Here&#8217;s what it does:</strong></h2><p>1. You upload your CV + set your target role</p><p>2. We pull fresh data/analytics jobs from across India and Australia every day</p><p>3. We score each one against your skills and surface only the high-fit ones</p><p><code>You spend 5 minutes a week, not 5 hours.</code></p><h4><strong>Free plan: weekly digest of matched roles</strong></h4><h5>Pro plan: daily digest + I personally review your resume + 1:1 30-min consulting call with me</h5><p></p><p>If you&#8217;re job-hunting now or planning a switch in the next 6 months:</p><p><strong><a href="https://firstdatajob.com">&#128073; https://firstdatajob.com</a></strong></p><p>Reply to this email with thoughts. I read every one.</p><p>&#8212; Atikant Jain (AJ)</p><p>Founder, FirstDataJob</p><p>(Analytical Guy on YouTube)</p>]]></content:encoded></item><item><title><![CDATA[Excel in the AI Era: Still the Most Underrated Skill You Can Learn in 20 Minutes]]></title><description><![CDATA[ChatGPT can write your emails. But for the messy, real-world data on your laptop right now? Excel is still the fastest tool on Earth &#8212; and you can get genuinely good at it in a single coffee break.]]></description><link>https://analyticalguy.substack.com/p/excel-in-the-ai-era-still-the-most</link><guid isPermaLink="false">https://analyticalguy.substack.com/p/excel-in-the-ai-era-still-the-most</guid><dc:creator><![CDATA[Atikant Jain]]></dc:creator><pubDate>Fri, 08 May 2026 09:02:51 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/5f1f981a-481b-4e03-be90-0b10a93243c7_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Every week I see another LinkedIn post telling me &#8220;Excel is dead.&#8221;</p><p>Then I open my laptop, and 9 out of 10 analysts I work with - at startups, in Big 4, in finance teams - are living inside a spreadsheet. Cleaning data. Building reports. Sending dashboards to their boss before the 10 AM meeting.</p><p>Here&#8217;s the thing nobody wants to admit:</p><p><strong>AI didn&#8217;t kill Excel. AI made Excel more important.</strong></p><p>Because the moment you have AI generating data, summaries, reports, and forecasts -  somebody still needs to <em>check it, slice it, filter it, and present it</em>. And for that last mile? Nothing beats a well-built Excel report.</p><p>The good news? You don&#8217;t need 6 months of YouTube tutorials. You need maybe <strong>20 focused minutes</strong> to learn the modern Excel stack.</p><p>Let me show you exactly what I mean.</p><div><hr></div><h3><strong>The 20-Minute Modern Excel Stack</strong></h3><p>Here&#8217;s what actually matters in 2026 &#8212; forget VLOOKUP-and-pivot tutorials from 2015:</p><ol><li><p><strong>Dynamic arrays</strong> &#8212; <code>FILTER</code>, <code>UNIQUE</code>, <code>SORT</code>, <code>SEQUENCE</code>. One formula, infinite rows.</p></li><li><p><strong>Search-as-you-type filtering</strong> &#8212; give your spreadsheet a &#8220;Google-like&#8221; experience.</p></li><li><p><strong>Cascading dropdowns</strong> &#8212; country &#8594; category &#8594; product, all driven by formulas.</p></li><li><p><strong>One-click PDF export</strong> &#8212; branded headers, footers, page numbers, the works.</p></li><li><p><strong>A reusable template</strong> that updates the second you change a single cell.</p></li></ol><p>Sounds like a lot? It isn&#8217;t. I packed all of it into one video.</p><div><hr></div><h3><strong>Watch: Build a Dynamic Excel Report from Scratch</strong></h3><div id="youtube2-0iIUfTZU9oQ" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;0iIUfTZU9oQ&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/0iIUfTZU9oQ?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>In this video you&#8217;ll build:</p><ul><li><p>A clean filtered report driven by dropdowns</p></li><li><p>A live search box that narrows rows as you type</p></li><li><p>A polished one-click &#8220;Export to PDF&#8221; button with your branding</p></li></ul><p>Open Excel side-by-side, hit play, and by the end you&#8217;ll have something you can actually show your boss tomorrow.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://analyticalguy.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">Analytical Guy Newsletter 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>Download Files:</strong> <a href="https://bit.ly/Dynamic-Report-Excel">Dataset + Template + VBA Scrip</a>t</p><div><hr></div><h3><strong>&#8220;But I&#8217;m Already Using AI for This&#8221;</strong></h3><p>Cool &#8212; let me ask you three questions:</p><ul><li><p>Can you trust AI with the financial data you can&#8217;t paste into a chatbot? <em>(Hint: confidentiality.)</em></p></li><li><p>When your CEO asks for &#8220;the same report but only for Q2 India,&#8221; can AI hand it back in 4 seconds? <em>(In Excel, you change one dropdown.)</em></p></li><li><p>Can AI build something your finance team can keep using, without you, next month?</p></li></ul><p>Excel + AI is the actual unlock. AI to <em>think</em>. Excel to <em>deliver</em>. The professionals who win in this era aren&#8217;t the ones picking sides &#8212; they&#8217;re the ones using both.</p><div><hr></div><h3><strong>Want to Go Deeper? Here&#8217;s the Full Roadmap</strong></h3><p>If the dynamic reporting video clicked for you, these playlists are the next steps:</p><p><strong>&#128202; Excel Foundations Playlist</strong><br><strong><a href="https://bit.ly/ExcelFormulaTutorial">Excel Formula Full Course: Become a PRO in 45 Minutes</a></strong><br><em>Start here if you&#8217;re rebuilding your Excel basics for 2026.</em></p><p><strong>&#9889; Advanced Formulas &amp; Dynamic Arrays</strong><br><a href="https://bit.ly/Excel-Playlist">Complete Playlist for Beginner to Advanced</a></p><p><a href="https://bit.ly/AI-Enabled-Playlist">AI Enabled Playlist</a></p><p><a href="https://bit.ly/ExcelFormulaCheatsheet">Excel Formula Cheat sheet (Video follow along)</a></p><div><hr></div><h3><strong>The Bottom Line</strong></h3><p>The world isn&#8217;t moving from Excel to AI. It&#8217;s moving toward <strong>professionals who can do both.</strong></p><p>You&#8217;ve got 20 minutes. You&#8217;ve got the video. The only question is whether the next person who opens your spreadsheet thinks <em>&#8220;this is a mess&#8221;</em> &#8212; or <em>&#8220;who built this?&#8221;</em></p><p>Hit play. Build it with me.</p><p>&#8212; Analytical Guy</p><div><hr></div><p><strong>&#128233; If this was useful, subscribe &#8212; I send one practical Excel + analytics breakdown every week.</strong><br><strong>&#128279; Got a request? Reply to this email or comment below.</strong></p>]]></content:encoded></item><item><title><![CDATA[Understanding Star Schema in Power BI: The Complete Guide]]></title><description><![CDATA[Data Concepts Series]]></description><link>https://analyticalguy.substack.com/p/understanding-star-schema-in-power</link><guid isPermaLink="false">https://analyticalguy.substack.com/p/understanding-star-schema-in-power</guid><dc:creator><![CDATA[Atikant Jain]]></dc:creator><pubDate>Mon, 04 May 2026 11:35:53 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/wKKxBjOJW3M" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you&#8217;re looking for mentoring on <strong>Power BI, Microsoft Fabric, AI, and building a career in the modern data profession</strong>, you can connect with me here:<br><a href="https://topmate.io/analyticalguy">https://topmate.io/analyticalguy</a></p><div><hr></div><p>Your CEO asks a simple question:</p><p><strong>&#8220;What&#8217;s our total revenue?&#8221;</strong></p><p>Three people give three different answers.</p><ul><li><p>$10.5 million</p></li><li><p>$9.8 million</p></li><li><p>$11.2 million</p></li></ul><p>Which one is correct?</p><p>This chaos happens because you don&#8217;t have a proper data model.<br>But there&#8217;s a solution: <strong>Star Schema</strong>.</p><p>In this post, I&#8217;ll break down exactly why Star Schema matters, how to build one in Power BI, and why it&#8217;s the foundation of every professional data warehouse.</p><p></p><div><hr></div><p>If you would like to watch the video instead of reading, you can watch it here:</p><div id="youtube2-wKKxBjOJW3M" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;wKKxBjOJW3M&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/wKKxBjOJW3M?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://analyticalguy.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">Analytical Guy Newsletter 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>Why Star Schema Matters (The Real Problem)</h2><p>Let me show you what happens <strong>without</strong> a star schema.</p><h3>Your Data (All Mixed Together)</h3><p><strong>Orders Table (No Structure):</strong></p><ul><li><p>order_id: 1001</p></li><li><p>customer_name: &#8220;John Doe&#8221;</p></li><li><p>customer_email: &#8220;<a href="mailto:john@email.com">john@email.com</a>&#8220;</p></li><li><p>product_name: &#8220;MacBook Pro&#8221;</p></li><li><p>product_category: &#8220;Electronics&#8221;</p></li><li><p>product_price: $1,999</p></li><li><p>order_amount: $1,999</p></li><li><p>order_date: 2024-01-15</p></li></ul><h3>The Problem</h3><p>When a product category changes from <em>&#8220;Electronics&#8221;</em> to <em>&#8220;Consumer Tech&#8221;</em>, where do you update it?</p><ul><li><p>Orders table? (50,000 rows?)</p></li><li><p>Excel reports? (5 different files?)</p></li><li><p>Power BI &amp; Tableau? (different logic?)</p></li></ul><p>Nobody knows. Everything breaks.</p><h3>The Impact</h3><ul><li><p>&#9203; Slow updates</p></li><li><p>&#128561; Inconsistent reports</p></li><li><p>&#128293; Data integrity issues</p></li><li><p>&#128184; Lost productivity</p></li></ul><h3>With Star Schema</h3><p><strong>One update. One place. Everything updates automatically.</strong></p><div><hr></div><h2>What Is Star Schema? (The Solution)</h2><p>Star Schema organizes data into <strong>two types of tables:</strong></p><div><hr></div><h3>1. Fact Tables (Center of the Star)</h3><p>Fact tables store <strong>measurable data</strong> &#8212; the numbers you analyze.</p><p><strong>Example: fct_Sales</strong></p><ul><li><p>sales_key</p></li><li><p>customer_key</p></li><li><p>product_key</p></li><li><p>date_key</p></li><li><p>order_amount</p></li><li><p>units_sold</p></li><li><p>discount</p></li><li><p>tax</p></li></ul><p><code>Rule: Only numbers + foreign keys. No descriptions.</code></p><div><hr></div><h3>2. Dimension Tables (Context Around the Star)</h3><p>Dimension tables store <strong>descriptive attributes</strong>.</p><p><strong>dim_Product</strong></p><ul><li><p>product_key</p></li><li><p>product_name</p></li><li><p>category</p></li><li><p>brand</p></li><li><p>price</p></li></ul><p><strong>dim_Customer</strong></p><ul><li><p>customer_key</p></li><li><p>name</p></li><li><p>email</p></li><li><p>segment</p></li><li><p>region</p></li></ul><p><strong>dim_Date</strong></p><ul><li><p>date_key</p></li><li><p>date</p></li><li><p>month</p></li><li><p>quarter</p></li><li><p>year</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_!Av_t!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde04febc-fe50-4271-808e-c04d134940d0_842x572.svg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!Av_t!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde04febc-fe50-4271-808e-c04d134940d0_842x572.svg 424w, /__u/substackcdn.com/image/fetch/$s_!Av_t!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde04febc-fe50-4271-808e-c04d134940d0_842x572.svg 848w, /__u/substackcdn.com/image/fetch/$s_!Av_t!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde04febc-fe50-4271-808e-c04d134940d0_842x572.svg 1272w, /__u/substackcdn.com/image/fetch/$s_!Av_t!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde04febc-fe50-4271-808e-c04d134940d0_842x572.svg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!Av_t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde04febc-fe50-4271-808e-c04d134940d0_842x572.svg" width="842" height="572" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/de04febc-fe50-4271-808e-c04d134940d0_842x572.svg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:572,&quot;width&quot;:842,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Diagram showing an illustration of a star schema.&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="Diagram showing an illustration of a star schema." title="Diagram showing an illustration of a star schema." srcset="/__u/substackcdn.com/image/fetch/$s_!Av_t!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde04febc-fe50-4271-808e-c04d134940d0_842x572.svg 424w, /__u/substackcdn.com/image/fetch/$s_!Av_t!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde04febc-fe50-4271-808e-c04d134940d0_842x572.svg 848w, /__u/substackcdn.com/image/fetch/$s_!Av_t!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde04febc-fe50-4271-808e-c04d134940d0_842x572.svg 1272w, /__u/substackcdn.com/image/fetch/$s_!Av_t!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde04febc-fe50-4271-808e-c04d134940d0_842x572.svg 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">STAR Schema (Source: Microsoft Learn)</figcaption></figure></div><div><hr></div><h3>How They Connect</h3><ul><li><p>fct_Sales.customer_key &#8594; dim_Customer</p></li><li><p>fct_Sales.product_key &#8594; dim_Product</p></li><li><p>fct_Sales.date_key &#8594; dim_Date</p></li></ul><p><code>This enables fast, consistent analysis.</code></p><div><hr></div><h2>Normalization vs Denormalization (The Confusion)</h2><h3>Normalization (Operational Systems)</h3><p><strong>Used in:</strong> Banking, transactions, apps</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!w2MT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac9ab24d-ab4c-46d0-8fa4-95fa7b52c8e3_735x307.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!w2MT!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac9ab24d-ab4c-46d0-8fa4-95fa7b52c8e3_735x307.png 424w, /__u/substackcdn.com/image/fetch/$s_!w2MT!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac9ab24d-ab4c-46d0-8fa4-95fa7b52c8e3_735x307.png 848w, /__u/substackcdn.com/image/fetch/$s_!w2MT!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac9ab24d-ab4c-46d0-8fa4-95fa7b52c8e3_735x307.png 1272w, /__u/substackcdn.com/image/fetch/$s_!w2MT!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac9ab24d-ab4c-46d0-8fa4-95fa7b52c8e3_735x307.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!w2MT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac9ab24d-ab4c-46d0-8fa4-95fa7b52c8e3_735x307.png" width="735" height="307" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ac9ab24d-ab4c-46d0-8fa4-95fa7b52c8e3_735x307.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:307,&quot;width&quot;:735,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:80083,&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://analyticalguy.substack.com/i/194632684?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac9ab24d-ab4c-46d0-8fa4-95fa7b52c8e3_735x307.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_!w2MT!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac9ab24d-ab4c-46d0-8fa4-95fa7b52c8e3_735x307.png 424w, /__u/substackcdn.com/image/fetch/$s_!w2MT!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac9ab24d-ab4c-46d0-8fa4-95fa7b52c8e3_735x307.png 848w, /__u/substackcdn.com/image/fetch/$s_!w2MT!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac9ab24d-ab4c-46d0-8fa4-95fa7b52c8e3_735x307.png 1272w, /__u/substackcdn.com/image/fetch/$s_!w2MT!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac9ab24d-ab4c-46d0-8fa4-95fa7b52c8e3_735x307.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">Normalized Table</figcaption></figure></div><p><strong>Pros:</strong></p><ul><li><p>No redundancy</p></li><li><p>Accurate updates</p></li><li><p>Strong data integrity</p></li></ul><p><strong>Cons:</strong></p><ul><li><p>Too many joins</p></li><li><p>Slow for analytics</p></li><li><p>Complex</p></li></ul><div><hr></div><h3>Denormalization (Analytics Systems)</h3><p><strong>Used in:</strong> Power BI, Data Warehouses</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!R0MB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b682fc4-692a-4f1c-aaaf-43265350bc0b_1300x478.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!R0MB!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b682fc4-692a-4f1c-aaaf-43265350bc0b_1300x478.png 424w, /__u/substackcdn.com/image/fetch/$s_!R0MB!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b682fc4-692a-4f1c-aaaf-43265350bc0b_1300x478.png 848w, /__u/substackcdn.com/image/fetch/$s_!R0MB!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b682fc4-692a-4f1c-aaaf-43265350bc0b_1300x478.png 1272w, /__u/substackcdn.com/image/fetch/$s_!R0MB!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b682fc4-692a-4f1c-aaaf-43265350bc0b_1300x478.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!R0MB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b682fc4-692a-4f1c-aaaf-43265350bc0b_1300x478.png" width="1300" height="478" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0b682fc4-692a-4f1c-aaaf-43265350bc0b_1300x478.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:478,&quot;width&quot;:1300,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:176860,&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://analyticalguy.substack.com/i/194632684?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b682fc4-692a-4f1c-aaaf-43265350bc0b_1300x478.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_!R0MB!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b682fc4-692a-4f1c-aaaf-43265350bc0b_1300x478.png 424w, /__u/substackcdn.com/image/fetch/$s_!R0MB!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b682fc4-692a-4f1c-aaaf-43265350bc0b_1300x478.png 848w, /__u/substackcdn.com/image/fetch/$s_!R0MB!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b682fc4-692a-4f1c-aaaf-43265350bc0b_1300x478.png 1272w, /__u/substackcdn.com/image/fetch/$s_!R0MB!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b682fc4-692a-4f1c-aaaf-43265350bc0b_1300x478.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">Denormalized Table</figcaption></figure></div><p><strong>Pros:</strong></p><ul><li><p>Fast queries</p></li><li><p>Simple structure</p></li><li><p>Easy for business users</p></li></ul><p><strong>Cons:</strong></p><ul><li><p>Redundancy</p></li><li><p>Slower updates</p></li></ul><div><hr></div><h3>The Truth</h3><p>You need <strong>both</strong>:</p><ul><li><p><strong>Operational DB &#8594; Normalized</strong> (fast writes)</p></li><li><p><strong>Data Warehouse &#8594; Star Schema</strong> (fast reads)</p></li></ul><div><hr></div><h2>Star Schema vs Snowflake Schema</h2><p style="text-align: justify;">A <strong>snowflake schema</strong> is a variation of a star schema where dimension tables are <strong>further normalized into multiple related tables</strong> (e.g., product &#8594; category &#8594; subcategory), reducing redundancy but increasing the number of joins required for queries. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!X2Yd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3a7b9d-55c0-4f2f-839f-ddb3f2bc5522_818x637.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!X2Yd!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3a7b9d-55c0-4f2f-839f-ddb3f2bc5522_818x637.png 424w, /__u/substackcdn.com/image/fetch/$s_!X2Yd!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3a7b9d-55c0-4f2f-839f-ddb3f2bc5522_818x637.png 848w, /__u/substackcdn.com/image/fetch/$s_!X2Yd!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3a7b9d-55c0-4f2f-839f-ddb3f2bc5522_818x637.png 1272w, /__u/substackcdn.com/image/fetch/$s_!X2Yd!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3a7b9d-55c0-4f2f-839f-ddb3f2bc5522_818x637.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!X2Yd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3a7b9d-55c0-4f2f-839f-ddb3f2bc5522_818x637.png" width="818" height="637" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/be3a7b9d-55c0-4f2f-839f-ddb3f2bc5522_818x637.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:637,&quot;width&quot;:818,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:298026,&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://analyticalguy.substack.com/i/194632684?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3a7b9d-55c0-4f2f-839f-ddb3f2bc5522_818x637.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_!X2Yd!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3a7b9d-55c0-4f2f-839f-ddb3f2bc5522_818x637.png 424w, /__u/substackcdn.com/image/fetch/$s_!X2Yd!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3a7b9d-55c0-4f2f-839f-ddb3f2bc5522_818x637.png 848w, /__u/substackcdn.com/image/fetch/$s_!X2Yd!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3a7b9d-55c0-4f2f-839f-ddb3f2bc5522_818x637.png 1272w, /__u/substackcdn.com/image/fetch/$s_!X2Yd!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3a7b9d-55c0-4f2f-839f-ddb3f2bc5522_818x637.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 style="text-align: justify;">It is typically used when <strong>data storage optimization, strict data integrity, or complex hierarchical relationships</strong> are more important than query speed&#8212;common in large enterprise data warehouses with highly structured dimensions. </p><p style="text-align: justify;">However, <strong>star schema is generally preferred</strong> because it keeps dimensions in a single table, resulting in <strong>fewer joins, faster query performance, simpler models, and better usability in tools like Power BI</strong>, making it ideal for analytics and business reporting.</p><div><hr></div><h2>Key Takeaways</h2><h3>1. Solves Multiple Truth Problem</h3><p>One source = consistent numbers.</p><h3>2. Fact Tables = Numbers</h3><p>Revenue, units, profit.</p><h3>3. Dimensions = Context</h3><p>Customer, product, date.</p><h3>4. Denormalization = Speed</h3><p>Faster analytics queries.</p><h3>5. You Need Both Worlds</h3><p>OLTP (normalized) + DW (star schema).</p><h3>6. Star &gt; Snowflake for Power BI</h3><p>Less joins = faster performance.</p><h3>7. One Change, Everywhere Updates</h3><p>Update once &#8594; reflect everywhere.</p><div><hr></div><h2>How to Implement in Power BI</h2><h3>Step 1: Create Fact Table</h3><p>fct_Sales with keys + measures.</p><h3>Step 2: Create Dimensions</h3><p>dim_Customer, dim_Product, dim_Date.</p><h3>Step 3: Build Relationships</h3><ul><li><p>customer_key</p></li><li><p>product_key</p></li><li><p>date_key</p></li></ul><h3>Step 4: Create Measures</h3><pre><code><code>Revenue = SUM(fct_Sales[order_amount])
Profit = SUM(fct_Sales[profit_amount])
Units = SUM(fct_Sales[units_sold])
</code></code></pre><h3>Step 5: Build Reports</h3><p>Use dimensions for slicing/filtering.</p><div><hr></div><h2>Resources: <a href="https://bit.ly/StarSchemaFiles">Star Schema Code + ReadMe file</a></h2><div><hr></div><h2>Questions?</h2><ul><li><p>What&#8217;s your biggest challenge in data modeling?</p></li><li><p>Are you using star schema already?</p></li><li><p>Want a deeper dive on something specific?</p></li></ul><p>Drop a comment &#8212; I read everything.</p><div><hr></div><p><em>Subscribe for more practical guides on data analytics, AI tools, and building a high-value analyst career.</em></p><p>Stay analytical. Stay curious.</p><p>Atikant Jain<br>Your Analytical Guy<br>admin@analyticalguy.tech</p>]]></content:encoded></item><item><title><![CDATA[How I used Claude AI to Optimize a Power BI Model in 1 Hour (That Normally Take 15 Hours)]]></title><description><![CDATA[Power BI Performance using Claude]]></description><link>https://analyticalguy.substack.com/p/how-i-used-claude-ai-to-optimize</link><guid isPermaLink="false">https://analyticalguy.substack.com/p/how-i-used-claude-ai-to-optimize</guid><dc:creator><![CDATA[Atikant Jain]]></dc:creator><pubDate>Wed, 29 Apr 2026 10:05:03 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/xFkoE7S4qng" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey Analytical Minds,</p><p>I just completed something I thought would take an entire week in just one hour.</p><p>Here&#8217;s what happened: I connected a Power BI semantic model to Claude AI and ran a comprehensive audit. What I discovered was shocking. The model had critical data quality issues, performance bottlenecks, and organizational problems that would have taken me days to find manually.</p><h2><strong>The Starting Point</strong></h2><p>The &#8220;Customer Profitability Sample&#8221; model looked fine on the surface:</p><ul><li><p>9 tables</p></li><li><p>47,646 fact rows</p></li><li><p>44 measures organized in display folders</p></li><li><p>8 relationships configured</p></li></ul><p>But underneath, there were serious problems.</p><h2><strong>The Critical Issues I Found</strong></h2><h3><strong>Issue #1: 21 Orphaned Customer Keys</strong></h3><p>I ran a simple DAX query through Claude: &#8220;<em><strong>Find customer keys in the Fact table that don&#8217;t exist in the Customer dimension</strong></em>.&#8221;</p><p><strong>Result</strong>: 21 keys were referencing non-existent customers. This meant 1,953 fact rows were broken&#8212;they weren&#8217;t properly linked to any customer. Any report filtering by customer would give incomplete results.</p><p><strong>Traditional approach</strong>: Manually compare the two tables, identify missing keys, decide how to handle them. Maybe 3-4 hours of work.</p><p><strong>Claude approach</strong>: Identify the problem, suggest the fix, execute it. 10 minutes.</p><div><hr></div><p><strong>Watch the Practical Video Guide Now:</strong></p><div id="youtube2-xFkoE7S4qng" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;xFkoE7S4qng&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/xFkoE7S4qng?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://analyticalguy.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">Analytical Guy Newsletter 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><strong>Issue #2: Data Type Mismatches</strong></h3><p>I discovered that:</p><ul><li><p>Fact[Product Key] was String, but Product[Product Key] was <strong>Int64</strong></p></li><li><p>Customer[Industry ID] was String, but Industry[ID] was <strong>Int64</strong></p></li></ul><p>These type mismatches force SQL to convert data types on every join. That&#8217;s a <strong>15-20% performance penalty</strong> on every Product filter. Hidden but costly.</p><h3><strong>Issue #3: Sparse Columns</strong></h3><p>Three columns had 99%+ zeros:</p><ul><li><p><strong>Material Costs</strong>: 99.97% zeros (47,630 empty rows out of 47,646)</p></li><li><p><strong>Taxes</strong>: 99.96% zeros</p></li><li><p><strong>Subscription Revenue</strong>: 99.78% zeros</p></li></ul><p>These were wasting storage space and cluttering the field picker with essentially unusable data.</p><h2><strong>How Claude AI Solved This</strong></h2><p>Instead of manually fixing each issue, I used Claude to:</p><ol><li><p><strong>Audit automatically</strong> - Identify all problems in one pass</p></li><li><p><strong>Generate code</strong> - Create the fixes in TMDL (the semantic model language)</p></li><li><p><strong>Execute changes</strong> - Apply fixes to the live model</p></li><li><p><strong>Validate results</strong> - Verify 100% data integrity</p></li></ol><h2><strong>The Fixes</strong></h2><h3><strong>Fix #1: Add Unknown Customers</strong></h3><p>I asked Claude to add 21 &#8220;Unknown Customer&#8221; records for the orphaned keys. This took 5 minutes. The 1,953 broken rows now properly link to customers.</p><h3><strong>Fix #2: Align Data Types</strong></h3><p>Changed Product Key from String to Int64. Changed Industry ID from String to Int64. Both now align with their dimension tables.</p><p>Impact: 15-20% faster queries on Product and Industry filters.</p><h3><strong>Fix #3: Delete Sparse Columns</strong></h3><p>Removed Material Costs, Taxes, and Subscription Revenue columns. Also deleted 3 measures that only summed zeros.</p><p>Impact: 300 KB storage saved, cleaner field picker, zero functional loss.</p><h2><strong>The Results</strong></h2><p><strong>Before optimization:</strong></p><ul><li><p>Data integrity: ~96% (21 orphaned keys)</p></li><li><p>Type mismatches: 2 (performance penalty)</p></li><li><p>Sparse columns: 3 (wasted space)</p></li><li><p>Documentation: None</p></li></ul><p><strong>After optimization:</strong></p><ul><li><p>Data integrity: 100% &#10003;</p></li><li><p>Type consistency: 100% &#10003;</p></li><li><p>Sparse data: Removed &#10003;</p></li><li><p>Performance: +15-20% &#10003;</p></li><li><p>Documentation: Complete &#10003;</p></li></ul><h2><strong>The Time Comparison</strong></h2><p><strong>Typical optimization work:</strong></p><ul><li><p>Audit: 4-6 hours</p></li><li><p>Data quality fixes: 3-4 hours</p></li><li><p>Type corrections: 2-3 hours</p></li><li><p>Documentation: 2-3 hours</p></li><li><p><strong>Total: 11-16 hours</strong></p></li></ul><p><strong>With Claude AI:</strong></p><ul><li><p>Audit: 15 minutes</p></li><li><p>Fixes: 20 minutes</p></li><li><p>Validation: 20 minutes</p></li><li><p>Documentation: 5 minutes</p></li><li><p><strong>Total: 1 hour</strong></p></li></ul><p>That&#8217;s 14-15x faster.</p><h2><strong>What I Learned</strong></h2><p>AI isn&#8217;t replacing BI professionals. It&#8217;s eliminating the tedious parts so you can focus on strategy.</p><p><strong>What Claude handled:</strong></p><ul><li><p>Pattern recognition (finding orphaned keys)</p></li><li><p>Code generation (TMDL edits)</p></li><li><p>Validation (checking all relationships)</p></li><li><p>Documentation (creating reference guides)</p></li></ul><p><strong>What I handled:</strong></p><ul><li><p>Strategic decisions (which columns to delete)</p></li><li><p>Quality judgment (validating findings)</p></li><li><p>Final reviews (ensuring correctness)</p></li></ul><h2><strong>The Best Part</strong></h2><p>Every change is version-controlled. The entire model is defined in TMDL (text-based), so I can see exactly what changed, when, and why. This is reproducible, auditable, and maintainable.</p><h2><strong>Resources Used:</strong></h2><p><strong><a href="https://drive.google.com/drive/folders/11J7RDtOrsQIr6BCfFDD4d_M-JuvqdO_o?usp=sharing">Drive Link</a></strong></p><h2><strong>If You Work With Power BI</strong></h2><p>Ask yourself:</p><ul><li><p>How many hours are you spending on manual audits?</p></li><li><p>How many data quality issues are you missing?</p></li><li><p>How long does it take to document your models?</p></li><li><p>How often do you fix performance issues?</p></li></ul><p>Claude AI can handle all of this. Not perfectly&#8212;it still needs human judgment&#8212;but fast enough to change how you work.</p><h2><strong>What&#8217;s Next</strong></h2><p>I&#8217;m building out this workflow into a full optimization framework. Next: implementing this for larger models (500K+ rows) and exploring how to automate ongoing monitoring.</p><p>If you want to try this yourself, here&#8217;s what you need:</p><ol><li><p>Power BI Desktop (running locally)</p></li><li><p>Claude AI access (API or web interface)</p></li><li><p>Basic understanding of Power BI concepts</p></li><li><p>2 hours of time</p></li></ol><p>The ROI is immediate.</p><div><hr></div><p><strong>Questions?</strong> Drop them in the comments. I&#8217;ll be working on advanced DAX optimization next&#8212;what topics would you like to see?</p><div><hr></div><h2><strong>Stay Updated</strong></h2><p><em>Subscribe for more practical guides on data analytics, AI tools, and building a high-value analyst career.</em></p><p>Stay analytical. Stay curious.</p><p>Atikant Jain<br>Your Analytical Guy<br>admin@analyticalguy.tech</p>]]></content:encoded></item><item><title><![CDATA[The Harsh Truth About Data Careers in 2026]]></title><description><![CDATA[Hello Data enthusiasts,]]></description><link>https://analyticalguy.substack.com/p/the-harsh-truth-about-data-careers</link><guid isPermaLink="false">https://analyticalguy.substack.com/p/the-harsh-truth-about-data-careers</guid><dc:creator><![CDATA[Atikant Jain]]></dc:creator><pubDate>Tue, 28 Apr 2026 03:42:16 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Amem!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8fb6415-4407-481e-a956-30c991fa623a_1280x1280.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hello Data enthusiasts,</p><p>A few years ago, &#8220;entry-level&#8221; meant one thing:</p><p><strong>0 years of experience.</strong></p><p>Today?</p><p>It looks more like this:</p><p><strong>2000:</strong><code> SQL &#8594; get a job<br></code><strong>2005:</strong><code> SQL + Excel &#8594; get a job<br></code><strong>2010:</strong><code> SQL + Excel + Python &#8594; get a job<br></code><strong>2015:</strong><code> SQL + Excel + Python + Stats &#8594; get a job<br></code><strong>2020:</strong><code> SQL + Excel + Python + Stats + ML &#8594; get a job</code></p><p><strong>2026:</strong><br><code>SQL + Excel + Python + Stats + ML +<br>LLMs + MLOps + AI Agents + System Design + Cloud + Domain Expertise</code></p><ul><li><p>Communication + Business Thinking + Ownership</p></li><li><p><strong>5 years of experience</strong></p></li></ul><p>&#8594; <em>Entry-level job</em></p><div><hr></div><p>Let&#8217;s be honest.</p><p>The bar didn&#8217;t rise.</p><p><strong>It multiplied.</strong></p><p>And if you&#8217;re feeling overwhelmed right now&#8212;<br>you&#8217;re not behind&#8230;</p><p>You&#8217;re reacting to a system that changed faster than anyone prepared you for.</p><div><hr></div><h3>Here&#8217;s the uncomfortable truth</h3><p>Most people are trying to learn <em>everything</em>.</p><ul><li><p>Every tool</p></li><li><p>Every trend</p></li><li><p>Every buzzword</p></li></ul><p>And that&#8217;s exactly why they stay stuck.</p><p>Because the market doesn&#8217;t reward <em>more skills</em>.</p><p>It rewards <strong>clear positioning + proof of impact</strong>.</p><div><hr></div><h3>What actually works in 2026</h3><p>After working with analysts and data professionals, I see the same pattern:</p><p>The ones who grow fast don&#8217;t chase everything.</p><p>They:</p><ul><li><p>Pick <strong>1&#8211;2 core strengths</strong></p></li><li><p>Build <strong>visible proof (projects, dashboards, case studies)</strong></p></li><li><p>Learn just enough AI to <strong>amplify</strong>, not overwhelm</p></li><li><p>Speak the language of <strong>business, not just tools</strong></p></li></ul><div><hr></div><h3>The gap no one is talking about</h3><p>There&#8217;s a massive difference between:</p><p>&#8220;I know SQL, Python, Power BI&#8230;&#8221;</p><p>vs</p><p>&#8220;I can help a company increase revenue, reduce cost, or make better decisions.&#8221;</p><p>Most resumes sit in the first category.</p><p>Hiring happens in the second.</p><div><hr></div><h3>If you&#8217;re stuck, here&#8217;s the reality</h3><p>You don&#8217;t need:</p><ul><li><p>10 more courses</p></li><li><p>Another certification</p></li><li><p>A new roadmap every week</p></li></ul><p>You need <strong>clarity + direction + feedback</strong>.</p><div><hr></div><h3>What I&#8217;m doing about it</h3><p>I&#8217;ve started working 1:1 with a small number of people to help them:</p><ul><li><p>Cut through the noise</p></li><li><p>Build a focused skill stack</p></li><li><p>Create portfolio projects that actually stand out</p></li><li><p>Position themselves for real opportunities</p></li></ul><p>If that&#8217;s something you&#8217;ve been struggling with, you can book a session with me here:</p><p>&#128073; <a href="https://topmate.io/analyticalguy">BOOK NOW</a></p><div><hr></div><p>No fluff. No generic advice.</p><p>Just a clear plan based on where you are and where you want to go.</p><div><hr></div><p>The market is harder than before.<br>But it&#8217;s also clearer than ever:</p><p><strong>The winners aren&#8217;t the ones who know everything.<br>They&#8217;re the ones who know what matters.</strong></p><p>Stay analytical. Stay curious.</p><p>Atikant Jain<br>Your Analytical Guy<br>admin@analyticalguy.tech</p>]]></content:encoded></item><item><title><![CDATA[The Medallion Architecture: A Practical Guide to Building Scalable Data Pipelines]]></title><description><![CDATA[Data Concepts Series]]></description><link>https://analyticalguy.substack.com/p/the-medallion-architecture-a-practical</link><guid isPermaLink="false">https://analyticalguy.substack.com/p/the-medallion-architecture-a-practical</guid><dc:creator><![CDATA[Atikant Jain]]></dc:creator><pubDate>Mon, 20 Apr 2026 11:35:42 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/74e9d3e2-ca8b-491d-92ea-a0086a765381_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you&#8217;re looking for mentoring on <strong>Power BI, Microsoft Fabric, AI, and building a career in the modern data profession</strong>, you can connect with me here:<br><a href="https://topmate.io/analyticalguy/">https://topmate.io/analyticalguy/</a></p><div><hr></div><p>Modern data teams don&#8217;t fail because of lack of tools.<br>They fail because of <strong>poor data structure</strong>.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://analyticalguy.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">Analytical Guy Newsletter 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 your reports break unexpectedly, metrics don&#8217;t match across dashboards, or your Power BI model feels fragile&#8212;you don&#8217;t have a tooling problem.</p><p>You have an <strong>architecture problem</strong>.</p><p>The Medallion Architecture solves this.</p><div><hr></div><h2>The Core Idea</h2><p>At its simplest, the Medallion Architecture is about <strong>layering your data</strong> so that each stage has a clear responsibility.</p><p>Instead of messy, tangled pipelines, you get a structured flow:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!xsHc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca978d3e-9c92-47d7-a7ee-37298d5c73be_1032x198.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!xsHc!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca978d3e-9c92-47d7-a7ee-37298d5c73be_1032x198.png 424w, /__u/substackcdn.com/image/fetch/$s_!xsHc!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca978d3e-9c92-47d7-a7ee-37298d5c73be_1032x198.png 848w, /__u/substackcdn.com/image/fetch/$s_!xsHc!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca978d3e-9c92-47d7-a7ee-37298d5c73be_1032x198.png 1272w, /__u/substackcdn.com/image/fetch/$s_!xsHc!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca978d3e-9c92-47d7-a7ee-37298d5c73be_1032x198.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!xsHc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca978d3e-9c92-47d7-a7ee-37298d5c73be_1032x198.png" width="1032" height="198" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ca978d3e-9c92-47d7-a7ee-37298d5c73be_1032x198.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:198,&quot;width&quot;:1032,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:16880,&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://analyticalguy.substack.com/i/194271539?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca978d3e-9c92-47d7-a7ee-37298d5c73be_1032x198.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_!xsHc!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca978d3e-9c92-47d7-a7ee-37298d5c73be_1032x198.png 424w, /__u/substackcdn.com/image/fetch/$s_!xsHc!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca978d3e-9c92-47d7-a7ee-37298d5c73be_1032x198.png 848w, /__u/substackcdn.com/image/fetch/$s_!xsHc!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca978d3e-9c92-47d7-a7ee-37298d5c73be_1032x198.png 1272w, /__u/substackcdn.com/image/fetch/$s_!xsHc!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca978d3e-9c92-47d7-a7ee-37298d5c73be_1032x198.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Each layer builds on the previous one.</p><p>No shortcuts. No mixing responsibilities.</p><div><hr></div><p>Now if you want to skip reading and watch a 5 minutes YouTube video explaining this concept, then watch it here:</p><div id="youtube2-x1ap0ApBVZI" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;x1ap0ApBVZI&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/x1ap0ApBVZI?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>For others, lets continue reading :) :)</p><div><hr></div><h2>&#129353; Bronze Layer &#8212; Raw, Untouched Data</h2><p>This is your <strong>foundation layer</strong>.</p><p>Think of Bronze as a <strong>data lake landing zone</strong> where everything arrives exactly as it is.</p><h3>What goes into Bronze:</h3><ul><li><p>Raw extracts from databases</p></li><li><p>CSV uploads</p></li><li><p>API responses (JSON)</p></li><li><p>Logs and event streams</p></li></ul><div><hr></div><p>Leave a comment to get complete PDF file and roadmap.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://analyticalguy.substack.com/p/the-medallion-architecture-a-practical/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/analyticalguy.substack.com/p/the-medallion-architecture-a-practical/comments"><span>Leave a comment</span></a></p><div><hr></div><h3>Key Rules:</h3><ul><li><p><strong>No transformations</strong></p></li><li><p><strong>Append-only (never delete/update)</strong></p></li><li><p><strong>Full history preserved</strong></p></li><li><p><strong>Include metadata (timestamp, source)</strong></p></li></ul><h3>Why this matters</h3><p>Bronze is your <strong>insurance policy</strong>.</p><p>If business logic changes tomorrow, you don&#8217;t panic.<br>You simply rebuild downstream layers.</p><p>Without Bronze, you&#8217;re stuck fixing broken reports instead of fixing the root cause.</p><div><hr></div><h2>&#129352; Silver Layer &#8212; Where Data Becomes Reliable</h2><p>This is the <strong>most important layer</strong>.<br>And the one most teams either skip&#8212;or get wrong.</p><p>Silver is where data is:</p><ul><li><p>Cleaned</p></li><li><p>Validated</p></li><li><p>Standardized</p></li><li><p>Joined</p></li></ul><h3>Typical transformations:</h3><pre><code><code>Bronze.Customers
    &#8595;
[Remove nulls]
[Deduplicate]
[Standardize formats]
[Apply business rules]
    &#8595;
Silver.Customers
</code></code></pre><h3>What happens here:</h3><ul><li><p>Duplicate records removed</p></li><li><p>Data types fixed (dates, currency)</p></li><li><p>Business rules applied</p></li><li><p>Tables joined into meaningful structures</p></li><li><p>Data quality checks enforced</p></li></ul><h3>Key Principles:</h3><ul><li><p><strong>Deterministic</strong> &#8594; Same input = same output</p></li><li><p><strong>Reusable</strong> &#8594; Used by multiple reports</p></li><li><p><strong>Documented</strong> &#8594; Every transformation is explainable</p></li><li><p><strong>Centralized</strong> &#8594; Fix once, benefit everywhere</p></li></ul><h3>The Big Shift</h3><p>Most beginners clean data in:</p><ul><li><p>Power Query</p></li><li><p>DAX</p></li><li><p>Excel</p></li></ul><p>That&#8217;s a mistake.</p><p><strong>All data cleaning belongs in Silver.</strong></p><p>Because:</p><blockquote><p>If you fix data in reports, you fix it 10 times.<br>If you fix it in Silver, you fix it once.</p></blockquote><div><hr></div><h2>&#129351; Gold Layer &#8212; Built for Speed &amp; Business</h2><p>Gold is where data becomes <strong>decision-ready</strong>.</p><p>This is your:</p><ul><li><p>Power BI semantic model</p></li><li><p>Star schema</p></li><li><p>Aggregated tables</p></li></ul><h3>Structure:</h3><pre><code><code>           &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;
           &#9474;  Dim_Date    &#9474;
           &#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508;
           &#9474;  Dim_Product &#9474;
           &#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508;
           &#9474; Dim_Customer &#9474;
           &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;
                  &#8595;
           &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;
           &#9474;  Fact_Sales  &#9474;
           &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;
</code></code></pre><h3>What happens here:</h3><ul><li><p>Metrics are pre-calculated</p></li><li><p>Data is aggregated</p></li><li><p>Business terms replace technical fields</p></li><li><p>Performance is optimized</p></li></ul><h3>Examples:</h3><ul><li><p>Total Revenue</p></li><li><p>Profit Margin</p></li><li><p>Customer Segmentation</p></li><li><p>Monthly Sales Summary</p></li></ul><h3>Why Gold exists</h3><p>Because computing everything on-the-fly is slow.</p><p>Gold ensures:</p><ul><li><p>Fast dashboards</p></li><li><p>Consistent metrics</p></li><li><p>Self-service analytics</p></li></ul><div><hr></div><h2>How It All Connects (End-to-End Flow)</h2><p>Let&#8217;s say you have 3 data sources:</p><ul><li><p>POS system</p></li><li><p>Online store</p></li><li><p>Marketplace API</p></li></ul><p>Your pipeline looks like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!J6-i!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b84c0a3-31fb-4b64-abd0-5f5cab3ce8f9_1086x591.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!J6-i!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b84c0a3-31fb-4b64-abd0-5f5cab3ce8f9_1086x591.png 424w, /__u/substackcdn.com/image/fetch/$s_!J6-i!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b84c0a3-31fb-4b64-abd0-5f5cab3ce8f9_1086x591.png 848w, /__u/substackcdn.com/image/fetch/$s_!J6-i!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b84c0a3-31fb-4b64-abd0-5f5cab3ce8f9_1086x591.png 1272w, /__u/substackcdn.com/image/fetch/$s_!J6-i!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b84c0a3-31fb-4b64-abd0-5f5cab3ce8f9_1086x591.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!J6-i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b84c0a3-31fb-4b64-abd0-5f5cab3ce8f9_1086x591.png" width="1086" height="591" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2b84c0a3-31fb-4b64-abd0-5f5cab3ce8f9_1086x591.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:591,&quot;width&quot;:1086,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:147532,&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://analyticalguy.substack.com/i/194271539?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b84c0a3-31fb-4b64-abd0-5f5cab3ce8f9_1086x591.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_!J6-i!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b84c0a3-31fb-4b64-abd0-5f5cab3ce8f9_1086x591.png 424w, /__u/substackcdn.com/image/fetch/$s_!J6-i!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b84c0a3-31fb-4b64-abd0-5f5cab3ce8f9_1086x591.png 848w, /__u/substackcdn.com/image/fetch/$s_!J6-i!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b84c0a3-31fb-4b64-abd0-5f5cab3ce8f9_1086x591.png 1272w, /__u/substackcdn.com/image/fetch/$s_!J6-i!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b84c0a3-31fb-4b64-abd0-5f5cab3ce8f9_1086x591.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><hr></div><h2>Why This Architecture Works</h2><h3>1. <strong>Separation of Concerns</strong></h3><p>Each layer does one job&#8212;and does it well.</p><h3>2. <strong>Reusability</strong></h3><p>Silver becomes the single source of truth for all reports.</p><h3>3. <strong>Scalability</strong></h3><p>You can add new data sources without breaking existing models.</p><h3>4. <strong>Auditability</strong></h3><p>You can trace any number in a dashboard back to its origin.</p><h3>5. <strong>Performance</strong></h3><p>Gold ensures reports are fast&#8212;even with large datasets.</p><div><hr></div><h2>Common Mistakes (Avoid These)</h2><h3>&#10060; Skipping Silver</h3><p>Going directly from raw data to Power BI.</p><p>&#8594; Leads to messy DAX, inconsistent metrics, and chaos.</p><div><hr></div><h3>&#10060; Transforming in Bronze</h3><p>Trying to &#8220;optimize early.&#8221;</p><p>&#8594; You lose the ability to rebuild logic later.</p><div><hr></div><h3>&#10060; Overloading Gold</h3><p>Creating too many aggregated tables.</p><p>&#8594; Storage explodes, refresh slows down.</p><div><hr></div><h3>&#10060; No Data Lineage</h3><p>Not knowing where a number comes from.</p><p>&#8594; Zero trust in data.</p><div><hr></div><h3>&#10060; Fixing Data in Reports</h3><p>Using Power Query/DAX for cleaning.</p><p>&#8594; Every report becomes its own pipeline.</p><div><hr></div><h2>Where This Fits</h2><p>The Medallion Architecture is ideal if you:</p><ul><li><p>Work with multiple data sources</p></li><li><p>Build Power BI dashboards</p></li><li><p>Use Microsoft Fabric / Databricks / Snowflake</p></li><li><p>Handle growing datasets</p></li></ul><p>It may be overkill if:</p><ul><li><p>You have a single small dataset</p></li><li><p>No transformation complexity</p></li><li><p>No scaling requirement</p></li></ul><div><hr></div><h2>Medallion vs Star Schema (Quick Clarity)</h2><ul><li><p><strong>Medallion Architecture</strong> &#8594; Organizes your <em>pipeline</em></p></li><li><p><strong>Star Schema</strong> &#8594; Organizes your <em>reporting layer</em></p></li></ul><p>They are not competitors.</p><p>They work together.</p><div><hr></div><h2>What You Should Do Next</h2><p>If you&#8217;re currently building dashboards:</p><ol><li><p>Map your current pipeline</p></li><li><p>Identify missing layers</p></li><li><p>Start with Bronze (easy win)</p></li><li><p>Invest heavily in Silver</p></li><li><p>Keep Gold focused and lean</p></li></ol><div><hr></div><h2>Final Thought</h2><p>Most data problems are not technical.</p><p>They&#8217;re structural.</p><p>The Medallion Architecture gives you:</p><ul><li><p>Clarity</p></li><li><p>Control</p></li><li><p>Confidence</p></li></ul><p>And once you implement it properly,<br>you&#8217;ll never go back to messy pipelines again.</p><div><hr></div><h2>Let&#8217;s Talk</h2><p>What does your current setup look like?</p><ul><li><p>Direct from raw data?</p></li><li><p>Partial layering?</p></li><li><p>Fully structured pipeline?</p></li></ul><p>Reply and let me know&#8212;I read every response.</p><div><hr></div><h2>Stay Updated</h2><p><em>Subscribe for more practical guides on data analytics, AI tools, and building a high-value analyst career.</em></p><p>Stay analytical. Stay curious.</p><p>Atikant Jain<br>Your Analytical Guy<br>admin@analyticalguy.tech</p><p>Next: <strong>What are Semantic Model in Power BI and other Data Platforms.</strong></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://analyticalguy.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"></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[Power BI Security: The Manual Way vs The AI Way]]></title><description><![CDATA[Your Security Setup using AI]]></description><link>https://analyticalguy.substack.com/p/power-bi-security-the-manual-way</link><guid isPermaLink="false">https://analyticalguy.substack.com/p/power-bi-security-the-manual-way</guid><dc:creator><![CDATA[Atikant Jain]]></dc:creator><pubDate>Mon, 13 Apr 2026 11:35:45 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/32ef61b8-f273-4467-84f3-5b272c46319b_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you&#8217;re looking for mentoring on <strong>Power BI, Microsoft Fabric, AI, and building a career in the modern data profession</strong>, you can connect with me here:<br><a href="https://topmate.io/analyticalguy/179812">https://topmate.io/analyticalguy/179812</a></p><div><hr></div><p>Hey everyone,</p><p>I just dropped a new video that&#8217;s going to change how you think about Power BI security.</p><p>Here&#8217;s the problem I see all the time: security configuration in Power BI is <strong>tedious, repetitive, and easy to get wrong</strong>. You&#8217;re clicking through Tabular Editor, writing DAX expressions, managing TMDL files&#8212;it&#8217;s hours of work for what should be a 10-minute job.</p><p>So I built this guide to show you <strong>two paths:</strong></p><p><strong>Path 1: The Traditional Way</strong> (What you probably do now)</p><ul><li><p>Static Row-Level Security (RLS) setup</p></li><li><p>Dynamic RLS configurations</p></li><li><p>Object-Level Security (OLS) in Tabular Editor</p></li><li><p>TMDL scripting for version control</p></li></ul><p>You&#8217;ll learn the fundamentals, the best practices, and why these matter. This knowledge is essential.</p><p><strong>Path 2: The Modern Way</strong> (What&#8217;s about to change your workflow)</p><ul><li><p>AI prompts that generate security rules in seconds</p></li><li><p>Automatic configuration without manual clicking</p></li><li><p>Same security, 1/10th the time</p></li></ul><p><code>If you want complete roadmap and prompt documentation, then leave a comment:</code></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://analyticalguy.substack.com/p/power-bi-security-the-manual-way/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/analyticalguy.substack.com/p/power-bi-security-the-manual-way/comments"><span>Leave a comment</span></a></p><p>The video walks through both approaches side-by-side. You&#8217;ll understand <em>why</em> each step matters, <em>when</em> to use manual config, and <em>when</em> to let AI handle it.</p><h3>Why This Matters Right Now</h3><p>If you&#8217;re building enterprise reports or managing security across multiple datasets, this is a game-changer. I&#8217;m seeing teams cut their security setup time from <strong>4+ hours down to 15 minutes</strong>&#8212;mostly by combining smart prompting with Tabular Editor workflows.</p><p>Plus, security governance is only getting more important. Whether you go the traditional route or the AI route, you need to know both. Your stakeholders will expect it.</p><h3>What You&#8217;ll Get From the Video</h3><p>&#10003; <strong>Complete RLS &amp; OLS fundamentals</strong> &#8211; No gaps, no skipped steps<br>&#10003; <strong>Hands-on Tabular Editor workflows</strong> &#8211; Real demo, not theory<br>&#10003; <strong>TMDL scripting breakdown</strong> &#8211; Why it matters for teams<br>&#10003; <strong>AI automation in action</strong> &#8211; How to prompt for security configs<br>&#10003; <strong>Practical takeaways</strong> &#8211; What to use on your next project</p><h3>Watch Now</h3><div id="youtube2-JyXYEXFILnI" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;JyXYEXFILnI&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/JyXYEXFILnI?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div><hr></div><h3>One More Thing</h3><p>If you&#8217;re not already subscribed to the YouTube channel, now&#8217;s a good time. I&#8217;m dropping deep-dive content on Power BI security, AI integration, and Claude every week. This is the stuff that levels you up from &#8220;knows Power BI&#8221; to &#8220;understands Power BI.&#8221;</p><p>Questions? Hit reply&#8212;I read every email.</p><div><hr></div><p><em>Subscribe for more practical guides on data analytics, AI tools, and building a high-value analyst career.</em></p><p>Stay analytical. Stay curious.</p><p>Atikant Jain<br>Your Analytical Guy<br>admin@analyticalguy.tech</p>]]></content:encoded></item><item><title><![CDATA[Will AI replace Power BI developers? I tested it...]]></title><description><![CDATA[A real-world experiment every data professional should see.]]></description><link>https://analyticalguy.substack.com/p/will-ai-replace-power-bi-developers</link><guid isPermaLink="false">https://analyticalguy.substack.com/p/will-ai-replace-power-bi-developers</guid><dc:creator><![CDATA[Atikant Jain]]></dc:creator><pubDate>Mon, 06 Apr 2026 11:55:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/bsBnsgN8ugE" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you&#8217;re looking for mentoring on <strong>Power BI, Microsoft Fabric, AI, and building a career in the modern data profession</strong>, you can connect with me here:<br><a href="https://topmate.io/analyticalguy/179812">https://topmate.io/analyticalguy/179812</a></p><div><hr></div><p><code>&#8220;AI will replace Power BI Developers.&#8221;</code></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://analyticalguy.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">Analytical Guy Newsletter 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>You&#8217;ve probably heard this everywhere lately.</p><p>So instead of debating it&#8230;</p><p><strong>I decided to test it.</strong></p><p>I tried building a real Power BI report using AI &#8212; the same kind of work we do daily.</p><p>No hype. No theory. Just actual results.</p><div><hr></div><h3>Here&#8217;s the interesting part:</h3><p>Some things worked <em>way better</em> than expected.</p><p>Some things completely broke.</p><p>And one part surprised me the most &#8212;<br>it&#8217;s the exact place where most developers think they&#8217;re safe.</p><div><hr></div><h3>So&#8230; can AI actually replace us?</h3><p>I won&#8217;t spoil it here.</p><p>But I&#8217;ve broken it down into a simple framework you can use to understand:</p><ul><li><p>What AI can already do today</p></li><li><p>Where it still fails</p></li><li><p>And what this means for your future as a developer</p></li></ul><div><hr></div><h3>&#127909; Watch the full video here</h3><div id="youtube2-bsBnsgN8ugE" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;bsBnsgN8ugE&quot;,&quot;startTime&quot;:&quot;29s&quot;,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/bsBnsgN8ugE?start=29s&amp;rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>If you&#8217;re working with Power BI (or planning to),<br>this is something you should <em>definitely</em> understand right now.</p><p>Let me know what you think after watching &#8212; I read every reply.</p><div><hr></div><p><em>Subscribe for more practical guides on data analytics, AI tools, and building a high-value analyst career.</em></p><p>Stay analytical. Stay curious.</p><p>Atikant Jain<br>Your Analytical Guy<br>admin@analyticalguy.tech</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://analyticalguy.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">Analytical Guy Newsletter 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[Fully Automating Power BI Development Using Claude]]></title><description><![CDATA[Step into the future of BI: full report automation using AI]]></description><link>https://analyticalguy.substack.com/p/fully-automating-power-bi-development</link><guid isPermaLink="false">https://analyticalguy.substack.com/p/fully-automating-power-bi-development</guid><dc:creator><![CDATA[Atikant Jain]]></dc:creator><pubDate>Mon, 30 Mar 2026 11:45:56 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!P52_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ea974f-e0f2-45da-8373-a5c18e658d98_1087x822.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you&#8217;re looking for mentoring on <strong>Power BI, Microsoft Fabric, AI, and building a career in the modern data profession</strong>, you can connect with me here:<br><a href="https://topmate.io/analyticalguy/179812">https://topmate.io/analyticalguy/179812</a></p><div><hr></div><p><strong>For years, building a Power BI report has followed a predictable (and manual) process:</strong></p><ul><li><p>Gather requirements</p></li><li><p>Load &amp; clean data</p></li><li><p>Build semantic model</p></li><li><p>Create visuals</p></li><li><p>Iterate with stakeholders</p></li></ul><p>But what if this entire workflow could be automated?</p><p>Not partially&#8230; <strong>fully automated.</strong></p><p>That&#8217;s exactly what Agentic AI enables.</p><div><hr></div><h3>What is Agentic AI in Power BI?</h3><p><strong>Agentic AI goes beyond simple prompts. Instead of just generating code, it:</strong></p><ul><li><p>Understands your goal</p></li><li><p>Breaks it into steps</p></li><li><p>Executes each step independently</p></li><li><p>Iterates until the final output is ready</p></li></ul><p>Think of it as a <strong>self-operating Power BI developer</strong></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://analyticalguy.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">Analytical Guy Newsletter 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><div><hr></div><h3>End-to-End Automation Architecture</h3><p>In this section we will understand how <strong>Claude Code (Agentic AI)</strong> automates the full Power BI development process.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!P52_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ea974f-e0f2-45da-8373-a5c18e658d98_1087x822.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!P52_!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ea974f-e0f2-45da-8373-a5c18e658d98_1087x822.png 424w, /__u/substackcdn.com/image/fetch/$s_!P52_!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ea974f-e0f2-45da-8373-a5c18e658d98_1087x822.png 848w, /__u/substackcdn.com/image/fetch/$s_!P52_!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ea974f-e0f2-45da-8373-a5c18e658d98_1087x822.png 1272w, /__u/substackcdn.com/image/fetch/$s_!P52_!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_webp, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ea974f-e0f2-45da-8373-a5c18e658d98_1087x822.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!P52_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ea974f-e0f2-45da-8373-a5c18e658d98_1087x822.png" width="1087" height="822" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/73ea974f-e0f2-45da-8373-a5c18e658d98_1087x822.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:822,&quot;width&quot;:1087,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:171302,&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://analyticalguy.substack.com/i/192575059?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ea974f-e0f2-45da-8373-a5c18e658d98_1087x822.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_!P52_!, /__u/analyticalguy.substack.com/w_424, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ea974f-e0f2-45da-8373-a5c18e658d98_1087x822.png 424w, /__u/substackcdn.com/image/fetch/$s_!P52_!, /__u/analyticalguy.substack.com/w_848, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ea974f-e0f2-45da-8373-a5c18e658d98_1087x822.png 848w, /__u/substackcdn.com/image/fetch/$s_!P52_!, /__u/analyticalguy.substack.com/w_1272, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ea974f-e0f2-45da-8373-a5c18e658d98_1087x822.png 1272w, /__u/substackcdn.com/image/fetch/$s_!P52_!, /__u/analyticalguy.substack.com/w_1456, /__u/analyticalguy.substack.com/c_limit, /__u/analyticalguy.substack.com/f_auto, /__u/analyticalguy.substack.com/q_auto:good, /__u/analyticalguy.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ea974f-e0f2-45da-8373-a5c18e658d98_1087x822.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">Architecture of the Workflow</figcaption></figure></div><ol><li><p><strong>User / You (Blue Box)</strong></p><ul><li><p>You provide a <strong>brief description of your reporting requirements</strong> to Claude Code.</p></li></ul></li><li><p><strong>Claude Code (Orange Box)</strong></p><ul><li><p>Acts as the AI orchestrator.</p></li><li><p>It has various <strong>skills (slash commands)</strong> for Power BI tasks:</p><ul><li><p><code>/powerbi-scaffold</code> &#8594; sets up project structure</p></li><li><p><code>/powerbi-connect</code> &#8594; connects to data sources</p></li><li><p><code>/powerbi-datamodelling</code> &#8594; builds semantic model</p></li><li><p><code>/powerbi-reporting</code> &#8594; generates visuals</p></li><li><p><code>/powerbi-beautify</code> &#8594; cleans up formatting</p></li><li><p><code>/powerbi-pipeline</code> &#8594; runs all above steps in sequence</p></li></ul></li><li><p>Claude Code writes <strong>JSON + TMDL files</strong> to disk to create the PBIP project.</p></li></ul></li><li><p><strong>MCP Tool / Server (Green Box, Top Right)</strong></p><ul><li><p>Claude Code interacts with <strong>powerbi-modeling-mcp</strong> (MCP Server / Bridge) for orchestration.</p></li><li><p>Handles Analysis Services calls needed for semantic models.</p></li></ul></li><li><p><strong>Power BI Desktop (Yellow Box)</strong></p><ul><li><p>Runs locally to hold the <strong>live semantic model in memory</strong>.</p></li><li><p>Receives data and model structure from MCP / Claude Code.</p></li></ul></li><li><p><strong>PBIP Project on Disk (Purple Box)</strong></p><ul><li><p>Claude Code writes all files here:</p><ul><li><p><code>.pbip</code> project file</p></li><li><p><code>Report/pages/*.json</code> &#8594; visuals/pages</p></li><li><p><code>SemanticModel/definition/tables/*.tmdl</code> &#8594; tables &amp; expressions</p></li></ul></li><li><p>This project can then be opened in Power BI Desktop.</p></li></ul></li><li><p><strong>Final Output (Green Box, Bottom Right)</strong></p><ul><li><p>Open the <code>.pbip</code> in Power BI Desktop &#8594; <strong>final report ready</strong>.</p></li></ul></li></ol><div><hr></div><h3>&#9888;&#65039; Does This Replace Power BI Developers?</h3><p>Not exactly&#8212;but it <strong>redefines the role</strong>.</p><p>The focus shifts from:</p><blockquote><p>Building reports &#8594; Designing intelligent systems &amp; validating outputs</p></blockquote><div><hr></div><h3>&#127909; Watch the Full Demo</h3><p>I tested this end-to-end using Claude Code to generate a complete Power BI report <strong>without even opening Power BI manually</strong>.</p><p><em><strong>&#128073; Watch the full video here:</strong></em></p><div id="youtube2-Neb1fCDS5cw" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;Neb1fCDS5cw&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/Neb1fCDS5cw?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div><hr></div><p><em>Subscribe for more practical guides on data analytics, AI tools, and building a high-value analyst career.</em></p><p>Stay analytical. Stay curious.</p><p>Atikant Jain<br>Your Analytical Guy<br>admin@analyticalguy.tech</p>]]></content:encoded></item></channel></rss>