<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>2026-2027 on Hat Full of Data</title><link>https://hatfullofdata.blog/tags/2026-2027/</link><description>Recent content in 2026-2027 on Hat Full of Data</description><generator>Hugo -- gohugo.io</generator><language>en-gb</language><lastBuildDate>Fri, 17 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://hatfullofdata.blog/tags/2026-2027/index.xml" rel="self" type="application/rss+xml"/><item><title>Variable Libraries in Deployment Pipelines</title><link>https://hatfullofdata.blog/variable-libraries-in-deployment-pipelines/</link><pubDate>Fri, 17 Jul 2026 00:00:00 +0000</pubDate><guid>https://hatfullofdata.blog/variable-libraries-in-deployment-pipelines/</guid><description>&lt;img src="https://hatfullofdata.blog/variable-libraries-in-deployment-pipelines/cover.png" alt="Featured image of post Variable Libraries in Deployment Pipelines" /&gt;&lt;p&gt;So you&amp;rsquo;ve done the hard work of building a variable library to make all your Fabric artifacts not have hard coded values. This was promised to be the prep work for making deployment pipelines easier. So lets take a look how that works.&lt;/p&gt;
&lt;h2&gt;Variable Library Series&lt;/h2&gt;
&lt;p&gt;Variable libraries should be part of every project. This post is part of my series to help get you started creating the library and then using the variables and finally seeing your hard work pay back when it comes to deployment pipelines.&lt;/p&gt;
&lt;ol&gt;
 &lt;li&gt;&lt;a href="https://hatfullofdata.blog/variable-library/"&gt;Getting started with variable libraries&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://hatfullofdata.blog/accessing-a-variable-library-in-a-notebook/"&gt;Variable Values in a Fabric Notebook&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://hatfullofdata.blog/using-a-variable-library-in-a-data-pipeline/"&gt;Variable Values in a Data Pipeline&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://hatfullofdata.blog/using-a-variable-library-in-lakehouse-shortcuts/"&gt;Variable Values in Lakehouse Shortcuts&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://hatfullofdata.blog/using-variable-library-in-a-dataflow/"&gt;Variable Values in Dataflows&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;strong&gt;Variable Libraries in Deployment Pipelines&lt;/strong&gt;&lt;/li&gt;
 &lt;li&gt;Connection variables in a variable library &lt;em&gt;(coming soon)&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="scenario"&gt;Scenario
&lt;/h2&gt;&lt;p&gt;For this post we are keeping the example very simple. We are building a process that ingests data from a file into a table. As part of that process the data is loaded into a dataframe called df. The variable library includes a RowLimit variable. If the RowLimit is 0 load all the data, otherwise trim the data to that many rows. This means in dev we can limit to a few rows but in test and prod we can have all the rows. Here is the code snippet that handles that logic.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Get RowLimit Value&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;vl&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;notebookutils&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;variableLibrary&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getLibrary&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Variable_Library&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;RowLimit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;vl&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RowLimit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;RowLimit&lt;/span&gt;&lt;span class="si"&gt;=}&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# If RowLimit has a value above 0, truncate the data&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;RowLimit&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;df&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;limit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;RowLimit&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Data limited to &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;RowLimit&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; rows&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="setting-up-the-variable-library"&gt;Setting up the Variable Library
&lt;/h2&gt;&lt;p&gt;I&amp;rsquo;ve created a variable library with a variable called RowLimit that is an integer and has a value of 5.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Snapshot of the Variable Library" class="gallery-image" data-flex-basis="713px" data-flex-grow="297" height="518" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://hatfullofdata.blog/variable-libraries-in-deployment-pipelines/variable%20library.png" srcset="https://hatfullofdata.blog/variable-libraries-in-deployment-pipelines/variable%20library_hu_ae213448ad4794e6.png 800w, https://hatfullofdata.blog/variable-libraries-in-deployment-pipelines/variable%20library.png 1539w" width="1539"&gt;&lt;/p&gt;
&lt;p&gt;When I run the code we get this&lt;/p&gt;
&lt;p&gt;&lt;img alt="Code block followed by the output RowLimit=5 and Data limited to 5 Rows" class="gallery-image" data-flex-basis="516px" data-flex-grow="215" height="585" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://hatfullofdata.blog/variable-libraries-in-deployment-pipelines/code%20run.png" srcset="https://hatfullofdata.blog/variable-libraries-in-deployment-pipelines/code%20run_hu_b3f5151b6851af5c.png 800w, https://hatfullofdata.blog/variable-libraries-in-deployment-pipelines/code%20run.png 1259w" width="1259"&gt;&lt;/p&gt;
&lt;h2 id="testing-for-zero"&gt;Testing for zero
&lt;/h2&gt;&lt;p&gt;However confident we are on the logic we should test for 0 working. I do and I get the expected output of RowLimit=0 and no other text and all the data rows come through.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Snapshot of the RowLimit 0 run" class="gallery-image" data-flex-basis="562px" data-flex-grow="234" height="502" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://hatfullofdata.blog/variable-libraries-in-deployment-pipelines/code%20run%20rowlimit%200.png" srcset="https://hatfullofdata.blog/variable-libraries-in-deployment-pipelines/code%20run%20rowlimit%200_hu_2d7c5d7295c07c93.png 800w, https://hatfullofdata.blog/variable-libraries-in-deployment-pipelines/code%20run%20rowlimit%200.png 1176w" width="1176"&gt;&lt;/p&gt;
&lt;h2 id="adding-value-sets"&gt;Adding Value Sets
&lt;/h2&gt;&lt;p&gt;A variable library can store different values for each variable in a value set. You can add multiple value sets, usually one for each deployment pipeline stage. In my example for dev I only want 5 rows of data, in test we will look at 20 and in prod I want no limit. Yes there probably should be a UAT with zero as well&amp;hellip; this is just a demo!&lt;/p&gt;
&lt;blockquote class="alert alert-note"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;📝&lt;/span&gt;
 &lt;span class="alert-title"&gt;Instructions&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;ol&gt;
&lt;li&gt;Click on Add value set on the ribbon&lt;/li&gt;
&lt;li&gt;Enter a name and click Create&lt;/li&gt;
&lt;li&gt;The value set appears with all the variable set to the same value as the Default value set.&lt;/li&gt;
&lt;li&gt;Repeat for as many value sets you need.&lt;/li&gt;
&lt;li&gt;Edit the values in datasets. The icon will turn black.&lt;/li&gt;
&lt;li&gt;If you need to reset to default click on the black icon&lt;/li&gt;
&lt;li&gt;Click Save and Agree if a warning appears.&lt;/li&gt;
&lt;/ol&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;p&gt;&lt;img alt="Snapshot of the above steps" class="gallery-image" data-flex-basis="718px" data-flex-grow="299" height="902" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://hatfullofdata.blog/variable-libraries-in-deployment-pipelines/Add%20value%20set.png" srcset="https://hatfullofdata.blog/variable-libraries-in-deployment-pipelines/Add%20value%20set_hu_b912726bb244e8d3.png 800w, https://hatfullofdata.blog/variable-libraries-in-deployment-pipelines/Add%20value%20set_hu_e15f15535930ae0.png 1600w, https://hatfullofdata.blog/variable-libraries-in-deployment-pipelines/Add%20value%20set_hu_1850c056ac1e7ee5.png 2400w, https://hatfullofdata.blog/variable-libraries-in-deployment-pipelines/Add%20value%20set.png 2700w" width="2700"&gt;&lt;/p&gt;
&lt;h2 id="deployment-pipeline"&gt;Deployment Pipeline
&lt;/h2&gt;&lt;p&gt;I&amp;rsquo;ve created a deployment pipeline and deployed to Test.&lt;/p&gt;
&lt;p&gt;&lt;img alt="snapshot of deployment pipeline showing all items in Test are the same as source, ie Dev" class="gallery-image" data-flex-basis="337px" data-flex-grow="140" height="1060" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://hatfullofdata.blog/variable-libraries-in-deployment-pipelines/deployment%20pipeline.png" srcset="https://hatfullofdata.blog/variable-libraries-in-deployment-pipelines/deployment%20pipeline_hu_45249aeaaaa6b574.png 800w, https://hatfullofdata.blog/variable-libraries-in-deployment-pipelines/deployment%20pipeline.png 1492w" width="1492"&gt;&lt;/p&gt;
&lt;h2 id="changing-active-set"&gt;Changing Active Set
&lt;/h2&gt;&lt;p&gt;In order to use the different values for Test and Prod I need to change the active set in the variable library in the workspaces.&lt;/p&gt;
&lt;blockquote class="alert alert-note"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;📝&lt;/span&gt;
 &lt;span class="alert-title"&gt;Instructions&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;ol&gt;
&lt;li&gt;Go to the Test workspace&lt;/li&gt;
&lt;li&gt;Open the variable library&lt;/li&gt;
&lt;li&gt;Click on the three dots on the Test set and select Set as active from the menu.&lt;/li&gt;
&lt;li&gt;In the confirmation message that pops up, click Set as Active&lt;/li&gt;
&lt;li&gt;not the active badge moves and the test set has a heavier border&lt;/li&gt;
&lt;li&gt;Save the variable library&lt;/li&gt;
&lt;/ol&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;p&gt;&lt;img alt="Snapshots of the above instructions" class="gallery-image" data-flex-basis="713px" data-flex-grow="297" height="720" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://hatfullofdata.blog/variable-libraries-in-deployment-pipelines/change%20set.png" srcset="https://hatfullofdata.blog/variable-libraries-in-deployment-pipelines/change%20set_hu_27dafe992e390480.png 800w, https://hatfullofdata.blog/variable-libraries-in-deployment-pipelines/change%20set_hu_660684089cc9f36d.png 1600w, https://hatfullofdata.blog/variable-libraries-in-deployment-pipelines/change%20set.png 2139w" width="2139"&gt;&lt;/p&gt;
&lt;p&gt;The pipeline does not notice the change and any updates to the variable library from deploying from dev do not reset the active set.&lt;/p&gt;
&lt;p&gt;If we now test the notebook in the test workspace we get 20 rows coming through because of the different value in the library.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Picture of the code block with its output showing RowLimit=20 and Data limited to 20 Rows" class="gallery-image" data-flex-basis="565px" data-flex-grow="235" height="543" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://hatfullofdata.blog/variable-libraries-in-deployment-pipelines/test%20run.png" srcset="https://hatfullofdata.blog/variable-libraries-in-deployment-pipelines/test%20run_hu_9309754770ea95dc.png 800w, https://hatfullofdata.blog/variable-libraries-in-deployment-pipelines/test%20run.png 1279w" width="1279"&gt;&lt;/p&gt;
&lt;blockquote class="alert alert-tip"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;💡&lt;/span&gt;
 &lt;span class="alert-title"&gt;Tip&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;Always change the variable library values in your dev workspace and deploy the changes through the pipeline.&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;h2 id="conclusion"&gt;Conclusion
&lt;/h2&gt;&lt;p&gt;This is the big reason Variable libraries are a must have in Fabric solution development. Even if you don&amp;rsquo;t use deployment pipelines it is sometimes useful to be able to swap values.&lt;/p&gt;</description></item><item><title>Humbled and Honoured</title><link>https://hatfullofdata.blog/humbled-and-honoured/</link><pubDate>Wed, 15 Jul 2026 00:00:00 +0000</pubDate><guid>https://hatfullofdata.blog/humbled-and-honoured/</guid><description>&lt;img src="https://hatfullofdata.blog/humbled-and-honoured/cover.png" alt="Featured image of post Humbled and Honoured" /&gt;&lt;p&gt;Today I got the news I get to be a Data Platform MVP for another year!&lt;/p&gt;
&lt;p&gt;As tradition dictates I am of course Humbled and Honoured. In reality though, I&amp;rsquo;m hugely grateful to lots of people who let me be me in this community.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hosts of user groups and conferences who create the place for us to meet and present&lt;/li&gt;
&lt;li&gt;Helpers who make conferences work, tell me when to end a session and help me find my room&lt;/li&gt;
&lt;li&gt;Humans who came to my sessions, read my blog, watched my youtube channel, asked questions and made it feel worth while. If any non-humans were involved I am of course grateful to them as well.&lt;/li&gt;
&lt;li&gt;Hecklers&lt;sup&gt;1&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Handful of friends who have shared the highs, the hurdles, headaches and the hilarity of another year in tech.&lt;/li&gt;
&lt;li&gt;Hubby, Harry, who has done the airport drop offs and pickups, cooked while I build slides and demos, never complains when head off to another conference or user group.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Turns out H is a great letter.&lt;/p&gt;
&lt;p&gt;&lt;img alt="MVP Blue Badge includes the words Microsoft Most Valuable Professional" class="gallery-image" data-flex-basis="640px" data-flex-grow="266" height="540" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://hatfullofdata.blog/humbled-and-honoured/MVP_Digital_RGB_35_badge_single_color_blue.png" srcset="https://hatfullofdata.blog/humbled-and-honoured/MVP_Digital_RGB_35_badge_single_color_blue_hu_99940308fc6e7390.png 800w, https://hatfullofdata.blog/humbled-and-honoured/MVP_Digital_RGB_35_badge_single_color_blue.png 1440w" width="1440"&gt;&lt;/p&gt;
&lt;p&gt;The award comes with a badge, an updated one this year, but in reality the award opened doors for me to an amazing community. We use the ever changing, name changing, icon changing&lt;sup&gt;2&lt;/sup&gt; tech as an excuse to gather, but we stay because of the community of wonderfully diverse, usually neurodivergent and amazing humans we are.&lt;/p&gt;
&lt;p&gt;A huge thank you to my co-speakers this year Claire Edgson, Joe Griffin, Lewis Baybutt and Will Johnson. We rocked!&lt;/p&gt;
&lt;p&gt;Also to Mark Pryce-Mayer who makes me laugh and fixes the lakehouses I break, Sue Bayes who makes me smile every week, Alex Powers who encouraged me to keep going, Ian Tweedie who helped me transfer my blog from wordpress to Hugo, so blogging will again be enjoyable and Ash Graham-Brown who did the accessibility work to make sure a screen reader makes some sense on my blog.&lt;/p&gt;
&lt;p&gt;And last, but never least, Rie Merritt who looks after us Data Platform MVPs, keeps us in line and always supports us non-males in a male dominated industry.&lt;/p&gt;
&lt;p&gt;My advice to anyone looking in on the community, unsure how to join, please reach out. Come talk to a speaker after a session, ask the questions, be brave and say hello. Many of us are incredibly shy, anxious and imposter syndrome is our best skill, so we understand your shyness. You are one of us, I promise. Take a look at my &lt;a class="link" href="https://hatfullofdata.blog/upcoming-events/" target="_blank" rel="noopener"
 &gt;Upcoming Events page&lt;/a&gt; and if you are going to be at one of them reach out to me beforehand and we can have a coffee together and I&amp;rsquo;ll introduce to people you want to meet.&lt;/p&gt;
&lt;hr&gt;
&lt;sup&gt;1&lt;/sup&gt; You know who you are&lt;br&gt;
&lt;sup&gt;2&lt;/sup&gt; Microsoft stop it!</description></item></channel></rss>