<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[The Data Platform Journal]]></title><description><![CDATA[Articles, Videos and Insights to help architect, build and maintain Data Platforms.]]></description><link>https://thedataplatform.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!IwzM!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9a1464c-b7ea-4563-98b2-179a65115c10_412x412.png</url><title>The Data Platform Journal</title><link>https://thedataplatform.substack.com</link></image><generator>Substack</generator><lastBuildDate>Tue, 01 Sep 2026 19:03:59 GMT</lastBuildDate><atom:link href="/__u/thedataplatform.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Jake Watson]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[thedataplatform@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[thedataplatform@substack.com]]></itunes:email><itunes:name><![CDATA[Jake Watson]]></itunes:name></itunes:owner><itunes:author><![CDATA[Jake Watson]]></itunes:author><googleplay:owner><![CDATA[thedataplatform@substack.com]]></googleplay:owner><googleplay:email><![CDATA[thedataplatform@substack.com]]></googleplay:email><googleplay:author><![CDATA[Jake Watson]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[How to Build a Data Platform: Now on YouTube!]]></title><description><![CDATA[My colleague Mike has taken my &#8220;How to Build a Data Platform&#8220; guide and is now making a video series!]]></description><link>https://thedataplatform.substack.com/p/how-to-build-a-data-platform-now</link><guid isPermaLink="false">https://thedataplatform.substack.com/p/how-to-build-a-data-platform-now</guid><dc:creator><![CDATA[Jake Watson]]></dc:creator><pubDate>Tue, 27 May 2025 11:03:30 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/vZEvL-t5yCw" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>My colleague <a href="https://www.linkedin.com/in/mike-le-galloudec-058717168/">Mike</a> has taken my <a href="/__u/thedataplatform.substack.com/p/how-to-build-a-data-platform">&#8220;How to Build a Data Platform&#8220; guide</a> and is now making a video series! Mike has a background in teaching, so he has developed a great knack for taking complicated subjects and explaining them in a simple and entertaining way. </p><p>We have four videos already out; <a href="https://www.youtube.com/@OaklandEverythingData">subscribe to our channel</a> for future videos!</p><h2><a href="/__u/thedataplatform.substack.com/p/what-is-a-data-platform-anyway">What is a Data Platform</a>?</h2><div id="youtube2-vZEvL-t5yCw" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;vZEvL-t5yCw&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/vZEvL-t5yCw?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><a href="/__u/thedataplatform.substack.com/p/finding-adding-and-maximising-value">Finding Value</a></h2><div id="youtube2-eO2NoKt8jwY" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;eO2NoKt8jwY&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/eO2NoKt8jwY?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><a href="/__u/thedataplatform.substack.com/p/how-to-build-a-data-platform-cloud">Cloud and Data Mesh</a></h2><div id="youtube2-l1V5-yxnpXM" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;l1V5-yxnpXM&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/l1V5-yxnpXM?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><a href="/__u/thedataplatform.substack.com/p/how-to-build-a-data-platform-data">Data Processing</a></h2><div id="youtube2-DESia_TnJO4" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;DESia_TnJO4&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/DESia_TnJO4?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>We also have the guide in <a href="https://weareoakland.com/the-ultimate-guide-to-building-a-data-platform/">beautifully designed PDF book format</a>. </p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thedataplatform.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 The Data Platform Journal! 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></p>]]></content:encoded></item><item><title><![CDATA[Failed attempts to replace SQL: a history lesson.]]></title><description><![CDATA[Never break the cycle?]]></description><link>https://thedataplatform.substack.com/p/failed-attempts-to-replace-sql-a</link><guid isPermaLink="false">https://thedataplatform.substack.com/p/failed-attempts-to-replace-sql-a</guid><dc:creator><![CDATA[Jake Watson]]></dc:creator><pubDate>Thu, 04 Apr 2024 10:02:33 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/645aa900-769a-49a1-abc9-690af0790966_6000x4000.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><p><strong>Firstly, an advert:</strong> I&#8217;m doing a related talk on <a href="https://www.meetup.com/yorkshire-data-engineering-meetup/events/299937918/">&#8220;Past, Present and Future of Data Engineering&#8220; in Leeds UK on April 18th</a>, so if you&#8217;re in the area, it would be great to see you there!</p><div><hr></div><p>I know, I know, another &#8220;you can&#8217;t kill SQL; SQL will be around for another 50 years!&#8221; post, but while researching the history of Data Engineering for a talk (see above), I was amused at how many times people have tried to replace SQL and relational databases over their history and had to make a blog about it.</p><p>And yes, I know, I&#8217;ve interchanged between SQL and relational databases a lot here, despite being two different entities, but the two are closely connected, in my opinion.</p><h3>QUEL</h3><p>Interestingly, relational data modelling was created a few years before SQL in 1970 by <a href="https://en.wikipedia.org/wiki/Edgar_F._Codd">Edgar Codd</a> and SQL had some stiff competition from QUEL*, which was invented by <a href="https://en.wikipedia.org/wiki/Michael_Stonebraker">same person</a> who went on to help create <a href="https://www.postgresql.org/">PostgreSQL</a>.</p><p>QUEL had it&#8217;s own pros and cons, <a href="https://en.wikipedia.org/wiki/QUEL_query_languages">listed here</a> and could be argued to be the better language that was also more suited to Codd&#8217;s vision, but <a href="https://www.holistics.io/blog/quel-vs-sql/">SQL received major backing from IBM and Oracle</a>, so QUEL was always fighting an uphill battle. </p><p>I also quite like QUEL&#8217;s copy syntax; I think it was written years before it would appear in SQL:</p><pre><code><strong>copy</strong> student(<strong>name</strong>=c0, comma=d1, age=c0, comma=d1, sex=c0, comma=d1, address=c0, nl=d1)
<strong>into</strong> "/student.txt" </code></pre><p>*The SQL name was apparently a pun on QUEL: &#8220;SEQUEL&#8221;. </p><h3><strong>Object-Oriented Databases</strong></h3><p>Back in the 1980s, when Object-Oriented Programming (OOP) was the coolest kid on the block, there was an attempt to bring databases into the realm of OOP so programmers didn&#8217;t need to learn more than one language. But it became a niche technology, arguably because relational models are more robust for transactional updates*. They sort of still live on in <a href="https://oracle-base.com/articles/8i/object-types">Oracle databases as SQL Object Types</a> and a few niche vendors.</p><p>*Note, since it happened in the 1980s, it was hard to research on the internet to say exactly why Object Oriented Databases did not take off&#8230;</p><div><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thedataplatform.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/thedataplatform.substack.com/subscribe"><span>Subscribe now</span></a></p><div><hr></div><h3><strong>Document Databases</strong> </h3><p>In the 2000s, the use of semi-structured data exploded, and for a period of time, querying such data in SQL was a massive pain, giving rise to analytics usage with Document Databases such as MongoDB with MQL. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!fntb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69893a63-0bc1-4706-b1de-3635978fbf8e_1012x443.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!fntb!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69893a63-0bc1-4706-b1de-3635978fbf8e_1012x443.png 424w, /__u/substackcdn.com/image/fetch/$s_!fntb!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69893a63-0bc1-4706-b1de-3635978fbf8e_1012x443.png 848w, /__u/substackcdn.com/image/fetch/$s_!fntb!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69893a63-0bc1-4706-b1de-3635978fbf8e_1012x443.png 1272w, /__u/substackcdn.com/image/fetch/$s_!fntb!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69893a63-0bc1-4706-b1de-3635978fbf8e_1012x443.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!fntb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69893a63-0bc1-4706-b1de-3635978fbf8e_1012x443.png" width="1012" height="443" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/69893a63-0bc1-4706-b1de-3635978fbf8e_1012x443.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:443,&quot;width&quot;:1012,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Label query&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="Label query" title="Label query" srcset="/__u/substackcdn.com/image/fetch/$s_!fntb!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69893a63-0bc1-4706-b1de-3635978fbf8e_1012x443.png 424w, /__u/substackcdn.com/image/fetch/$s_!fntb!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69893a63-0bc1-4706-b1de-3635978fbf8e_1012x443.png 848w, /__u/substackcdn.com/image/fetch/$s_!fntb!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69893a63-0bc1-4706-b1de-3635978fbf8e_1012x443.png 1272w, /__u/substackcdn.com/image/fetch/$s_!fntb!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69893a63-0bc1-4706-b1de-3635978fbf8e_1012x443.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">Source: https://studio3t.com/academy/lessons/query-mongodb-with-sql-select-statements/</figcaption></figure></div><p>But <a href="https://www.postgresql.org/docs/current/datatype-json.html">SQL databases added JSON type</a>, which made querying semi-structured data easier, and also, data ingestion technologies like Fivetran made ingesting 3rd party APIs into relational tables easier too. ElasticSearch is also still popular in some analytics niches, such as searching logs.</p><h3><strong>Graph Databases Languages (Cypher, Gremlin, etc.)</strong></h3><p>Graph databases have the sales pitch of being better in terms of performance and code conciseness for multiple joins than SQL and relational databases (5 to 10 joins). Though I&#8217;d argue they&#8217;ve stayed fairly niche, as it can be easier to remodel your data to do fewer joins than adopt a whole new database. </p><pre><code>-- SQL
SELECT actors.name
FROM actors
 &#9;LEFT JOIN acted_in ON acted_in.actor_id = actors.id
&#9;LEFT JOIN movies ON movies.id = acted_in.movie_id
WHERE movies.title = "The Matrix"

-- Cypher
MATCH (actor:Actor)-[:ACTED_IN]-&gt;(movie:Movie {title: 'The Matrix'})
RETURN actor.name</code></pre><p>Also, the <a href="https://peter.eisentraut.org/blog/2023/04/04/sql-2023-is-finished-here-is-whats-new">SQL standard now supports Graph querying</a>, which could limit graph database usage even more for data analytics. <a href="https://www.theregister.com/2023/03/06/great_graph_debate_monday/">There is even serious debate recently about whether graph databases have any point at all</a>. </p><p><a href="https://arxiv.org/pdf/2311.07509.pdf">That said, we could see a serious increase in Graph Database usage as they can add a lot of value to a LLM</a>.</p><h3><strong>Java</strong></h3><p>Using Java and/or Scala was quite popular in data analytics in the 2000s for large data transformations (Hadoop), but Hadoop is now dead, and a lot of Hadoop usage ended up being done via SQL anyway using tools such as <a href="https://hive.apache.org/">Hive</a> (which itself has survived much better than the rest of the Hadoop ecosystem, partially due to being, well, SQL). </p><p>Java has had more success in real-time streaming and is still a popular language to this day for the use case, but we are also now increasingly seeing SQL being targeted as a primary language for <a href="https://risingwave.com/">new streaming products</a>. </p><p>Why? You can point to Java being a verbose language to write and difficult to learn quickly unless you&#8217;re an experienced, expensive programmer, so it's a poor language for ad-hoc queries. I can still see use cases in large, complex streaming transformations, though.</p><h3><strong>Python</strong></h3><p>This is the most painful one for me, as five years ago I built everything with <a href="https://spark.apache.org/docs/latest/api/python/index.html">pySpark</a> and thought I only needed SQL for ah-hoc queries now and again. I really liked the idea of using one language for <a href="https://www.pulumi.com/docs/languages-sdks/python/">Infrastructure</a>, Business Intelligence, streaming, and Data Science. The reality is a bit harder to achieve after some bitter experiences.</p><p>One problem with Python is maintainability at large scale, which requires experienced, expensive teams of developers to manage well (though you can argue the same with SQL to be fair). Another bigger problem is migration and re-training, as most new data platforms are doing some kind of migration from a mostly SQL-based platform, and it&#8217;s easier to move between dialects of SQL than another language.</p><p>Python still has a role in data (we are currently using pySpark for a few clients right now), especially in Data Science, though even there, <a href="https://cloud.google.com/bigquery/docs/bqml-introduction">you can find SQL extensions that allow limited ML/AI capability</a>.</p><p>I talk more in depth about <a href="/__u/thedataplatform.substack.com/p/data-transformations">Python and SQL here</a>.</p><h3><strong>Low Code</strong></h3><p>While low-code is increasingly successful recently in some areas of Data Engineering and Analytics, such as Orchestration, Data Visualisation (Power BI/Tableau) and Data Ingestion, I think low-code data transformations at scale are a poor idea: lock-in, often poor debugging experience, <a href="/__u/thedataplatform.substack.com/p/how-to-build-a-data-platform-dataops">DataOps</a> can be an afterthought, and a more limited community than SQL. That said, I can still use cases for simple transformations for small, low-maturity data teams.</p><h3><strong>LLMs(?)</strong></h3><p>This is more of a guess than a history lesson, as there are many companies right now betting on enabling querying via natural language with LLMs. But at the moment, scientific papers suggest <a href="https://arxiv.org/pdf/2311.07509.pdf">querying structured data with LLMs is only 30 to 70% accurate, and that&#8217;s only if you attach an expensive Knowledge Graph / Semantic Model to it</a>.</p><p>This doesn&#8217;t even take into account asking the right questions to solve a business problem, which often requires years of experience in requirements analysis and in-depth knowledge of the domain you&#8217;re working in to be good at.</p><p>If AI does get good enough to answer vague business questions with near 100% accuracy, then it is also likely clever enough to take over the world, at which point we'll have bigger fish to fry. I still think LLMs have many great use cases, such as data discovery, code generation, and debugging, but I currently see LLMs more as a tool to enhance my SQL coding process than as a replacement.</p><h3>So why do engineers keep trying to replace SQL?</h3><p>SQL has become very close to the &#8220;universal data language&#8221; and it performs four quite different use cases across many different domains:</p><ol><li><p>To quickly perform ad-hoc queries on data (<a href="https://en.wikipedia.org/wiki/Data_query_language">DQL</a>)</p></li><li><p>To transform data as part of data pipeline (<a href="https://en.wikipedia.org/wiki/Data_manipulation_language">DML</a>)</p></li><li><p>Defining data models (<a href="https://en.wikipedia.org/wiki/Data_definition_language">DML</a>)</p></li><li><p>To administer data access (<a href="https://en.wikipedia.org/wiki/Data_control_language">DCL</a>)</p></li></ol><p>I think SQL does all four tasks well enough, but learning SQL can feel like a lot of effort to non-engineers for just ad-hoc querying, and certain complex and/or dynamic problems are arguably easier to do in an imperative language like Python and Java.</p><p>For the first problem, low code can sometimes be better suited in low maturity organisations, and there are some SQL-like languages that can fix the second problem to some extent (<a href="https://docs.malloydata.dev/blog/2023-11-13-querying-a-semantic-model/">Malloy</a>, <a href="https://prql-lang.org/">PRQL</a>), though knowing the past history of SQL, it&#8217;s more likely SQL will take the best parts of these languages rather than being replaced.</p><p>What I&#8217;m getting at is that SQL has become a &#8220;good enough&#8221; language for a high percentage of data tasks, but there will always be edge cases where other languages make better sense, and the important point is to be aware when those edge cases come up, and you&#8217;re not trying to hammer a square peg into a round hole when they do pop up.</p><p>The same goes for relational data modelling, which I talk more about in detail in <a href="/__u/thedataplatform.substack.com/p/how-to-build-a-data-platform-data-07e">my data modelling article</a>. </p><p>Cover Photo by <a href="https://unsplash.com/@grstocks?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">GR Stocks</a> on <a href="https://unsplash.com/photos/grayscale-photo-of-person-holding-glass-Iq9SaJezkOE?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Unsplash</a></p><div><hr></div><p>Sponsored by <a href="https://www.theoaklandgroup.co.uk/">The Oakland Group</a>, a full service data consultancy. Download our <a href="https://weare.theoaklandgroup.co.uk/data-platform-guide">guide</a> or <a href="https://www.theoaklandgroup.co.uk/get-in-touch/">contact us</a> if you want to find out more about how we build Data Platforms!</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thedataplatform.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 The Data Platform Journal! 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[Issue #33: Podcast, Practical Data Modelling, and Reviewing Databases in 2023]]></title><description><![CDATA[Plus: Automated dbt Test Generation, BigQuery Design Deep Dive and Data Exploration in Stream Processing]]></description><link>https://thedataplatform.substack.com/p/issue-33-podcast-practical-data-modelling</link><guid isPermaLink="false">https://thedataplatform.substack.com/p/issue-33-podcast-practical-data-modelling</guid><dc:creator><![CDATA[Jake Watson]]></dc:creator><pubDate>Tue, 06 Feb 2024 11:44:07 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/01f7dc46-4e23-4518-9417-5ba976bece85_400x400.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi all, this month we have:</p><ul><li><p>Podcast: How Data Platforms affect AI and ML </p></li><li><p>Practical Data Modelling</p></li><li><p>RAG Using Structured Data: Overview and Important Questions</p></li><li><p>Automated dbt Test Generation</p></li><li><p>Databases in 2023: A Year in Review</p></li><li><p>I spent 6 hours understanding the design principles of BigQuery. Here's what I found.</p></li><li><p>Rethinking Stream Processing: Data Exploration</p></li></ul><div><hr></div><h3><a href="https://podcasts.apple.com/us/podcast/how-data-platforms-affect-ml-ai-jake-watson-207/id1505372978?i=1000643053237">Podcast: How Data Platforms affect AI and ML </a></h3><p>While I haven&#8217;t had time to write an article this month, I did record a podcast with <a href="https://mlops.community/">MLOps Community</a> on how Data Platforms affect AI and ML. There is a <a href="https://www.youtube.com/watch?v=xWApMuyct_4">video</a> and an audio (<a href="https://podcasts.apple.com/us/podcast/mlops-community/id1505372978">Apple</a>, <a href="https://open.spotify.com/episode/42g4Xziulersz7qcwFKSH9">Spotify</a>) version, so pick whatever format suits you.</p><div><hr></div><h3><a href="/__u/practicaldatamodeling.substack.com/">Practical Data Modelling</a></h3><p>Joe Reis, Co-author of one of the most important books in Data Engineering, <a href="https://www.oreilly.com/library/view/fundamentals-of-data/9781098108298/">Fundamentals of Data Engineering</a>, has started a blog on Data Modelling, an area I feel lacks authoritative, up-to-date material, so excited to hear what Joe has to say.</p><div><hr></div><h3><a href="https://ottertune.com/blog/2023-databases-retrospective">Databases in 2023: A Year in Review</a></h3><p>You could argue Andy Pavlo is one of the leading experts in databases: he is, after all, <a href="https://www.cs.cmu.edu/~pavlo/">&#8220;Associate Professor of Databaseology&#8221; at Carnegie Mellon University</a> and CEO of database tuning company <a href="https://ottertune.com/">Ottertune</a>.</p><p>As expected, his thoughts on the latest database technologies and SQL language are highly insightful.</p><div><hr></div><h3><a href="https://kuzudb.com/docusaurus/blog/llms-graphs-part-1/">RAG Using Structured Data: Overview &amp; Important Questions</a></h3><p>As mentioned above, everyone wants a &#8220;Intelligent Data Platform&#8221; and to do that probably requires using RAGs to train LLMs on your data.</p><p>But how good are RAGs at reading structured data and outputting accurate data? Semih Saliho&#287;lu, CEO of graph database company <a href="https://kuzudb.com/">Kuzu</a> and Associate Professor, reviews the latest scientific literature on the topic to give an overview.</p><p>I also highly recommend reading Semih&#8217;s <a href="https://kuzudb.com/docusaurus/blog/llms-graphs-part-2">sister article on using RAGs with unstructured data and the role of knowledge graphs</a>.</p><div><hr></div><h3><a href="https://github.com/kgmcquate/dbt-testgen">Automated dbt Test Generation</a></h3><p>While I use <a href="https://www.getdbt.com/">dbt</a> for most of my data quality testing these days, I still miss <a href="https://greatexpectations.io/">Great Expectations</a> ability to profile your data for you and generate tests, saving you loads of effort in configuring the test yourself.</p><p>Kevin McQuate has released test generation for dbt while it only generates tests for half a dozen types of tests, hopefully it will grow and match Great Expectations profiling capability.</p><div><hr></div><h3><a href="/__u/vutr.substack.com/p/everything-you-need-to-know-about">I spent 6 hours understanding the design principles of BigQuery. Here's what I found.</a></h3><p>While Google has struggled for market share in the cloud against AWS and Azure to a certain extent, it still loved by many Data Engineers and Analysts, mostly due to having great data products like BigQuery, which more than holds it&#8217;s own against the best Warehouses and Lakehouses. </p><p>Vu Trinh&nbsp;dives deep into BigQuery internals to find out why.</p><div><hr></div><h3><a href="https://engineering.grab.com/rethinking-streaming-processing-data-exploration">Rethinking Stream Processing: Data Exploration</a></h3><p>How do you explore data that is constantly in motion? Shi Kai Ng, Calvin Tran and Minh Nhat Nguyenv from <a href="https://www.grab.com/sg/">Grab</a>, a ride-hailing and food delivery app (among many other features) that has hundreds of millions of users in Southeast Asia, try to answer that question.</p><div><hr></div><p>Sponsored by <a href="https://www.theoaklandgroup.co.uk/">The Oakland Group</a>, a full-service data consultancy. Download our <a href="https://weare.theoaklandgroup.co.uk/data-platform-guide">guide</a> or <a href="https://www.theoaklandgroup.co.uk/get-in-touch/">contact us</a> if you want to find out more about how we build data platforms!</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thedataplatform.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 The Data Platform Journal! 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[Issue #32: Reviewing 2023 and Not-So-Bold 2024 Predictions]]></title><description><![CDATA[Plus: Make a Massive Impact on the Bottom Line with Analytics, Understanding Data Lakehouses, Idempotence Explained, Spatiotemporal Data Analysis, Composable Data Systems and New Snowflake Git Feature]]></description><link>https://thedataplatform.substack.com/p/issue-32-reviewing-2023-and-not-so</link><guid isPermaLink="false">https://thedataplatform.substack.com/p/issue-32-reviewing-2023-and-not-so</guid><dc:creator><![CDATA[Jake Watson]]></dc:creator><pubDate>Thu, 04 Jan 2024 12:12:55 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/537ca46f-f7e1-4c45-8d7a-861e26fcae18_7956x4949.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi all, happy new year*! In this newsletter, we have:</p><ul><li><p>Reviewing 2023 and Not-So-Bold 2024 Predictions</p></li><li><p>How Analytics Can Make a Massive Impact on the Bottom Line</p></li><li><p>Understanding Parquet, Iceberg and Data Lakehouses</p></li><li><p>Four pitfalls of spatiotemporal data analysis and how to avoid them</p></li><li><p>Data Explained: Idempotence</p></li><li><p>Is it Time for Composable Data Systems?</p></li><li><p>DevOps in Snowflake: How Git and Database Change Management enable a file-based object lifecycle</p></li></ul><p>*To those that follow the <a href="https://en.wikipedia.org/wiki/Gregorian_calendar">Gregorian calendar</a></p><div><hr></div><h3>Reviewing 2023 and Not-So-Bold 2024 Predictions</h3><p>It&#8217;s that time of the year when loads of experts make bold predictions that 2024 is going to be the year of &#8220;X&#8220; (and often X is also conveniently the exact thing the expert is selling to you).</p><p><a href="/__u/joereis.substack.com/p/happy-2024">Joe Reis makes an excellent argument about not bothering with any predictions</a>, but new year predictions also give us a chance to reflect on the general state of data and what trends have been appearing. After all, 2024 is just a number, so expect many of the trends of 2023 to keep going into the new year.</p><p>So the list below is more of a &#8220;list of what is currently happening and will continue to happen in data, according to me&#8220;:</p><ul><li><p>Generative AI had a big breakout in 2023, though I can see a lot of firms ending up in the &#8220;<a href="https://en.wikipedia.org/wiki/Gartner_hype_cycle">trough of disillusionment</a>&#8221; in 2024 without a sensible data and AI strategy.</p></li><li><p>Relatedly, the phrase &#8220;Intelligent Data Platform&#8220; has been thrown around a lot recently, though if I were being cynical, this is yet to mean any major differences to platform architecture beyond a few AI features being integrated into existing Data Platforms components. I&#8217;ll likely write a full article on this later.</p></li><li><p>Last year didn&#8217;t have too much breakthrough innovation in data outside of generative AI to me. Some people might see this as a good thing: hopefully data companies are trying to make their existing products and features better rather than trying to reinvent the wheel every financial quarter.</p></li><li><p>Related to the above, there has been a strong trend in the last year or two to figure out how to get a good Return on Investment (ROI) from a Data Platform rather than just building one and hoping it makes everything better.</p></li><li><p>Will there be a new game-changing innovation in data in the next year? I don&#8217;t know; it&#8217;s like guessing when a <a href="https://en.wikipedia.org/wiki/Black_swan_theory">black swan</a> event will occur.</p></li><li><p>Data Mesh hype seems to have died down a bit, though the idea of Data Products is still a popular concept. I think the Data Mesh architecture has a lot of merit but only makes sense for high-maturity, highly distributed organisations that are very data-driven.</p></li><li><p>Cloud Data Warehouses and Lakehouses companies are still battling it out, though neither technology has significantly more mindshare than the other, in my opinion. They are also increasingly taking each other&#8217;s features, so the lines between them are becoming increasingly blurry.</p></li><li><p>Real-time streaming has been slowly growing but struggles to fully replace batch processing in most pipelines. Also, streaming-only products will have to find a way to compete with the &#8220;good enough&#8221; streaming offered by Databricks and Snowflake.</p></li><li><p>Data Modelling will keep making a sort of comeback after being somewhat sidelined by One Big Table models and query-driven analytics.</p></li><li><p>Data Governance will keep getting more important as more controls are needed to keep Generative AI usage in check. Though separate data catalogues are still too expensive for most firms. What we are already seeing, on the other hand, is data catalogue features being added to data processing engines, like <a href="https://www.starburst.io/platform/features/gravity/">Starburst Gravity</a> or <a href="https://www.databricks.com/product/unity-catalog">Unity Catalog</a>.</p></li><li><p>In DevOps / Platform, Terraform is still king, though it may have a serious challenge in <a href="https://opentofu.org/">OpenTofu</a>. <a href="https://platformengineering.org/blog/what-is-platform-engineering">Platform Engineering</a> is gaining more traction as a replacement for DevOps, though I expect progress to be slow in the next year as I feels like it&#8217;s only needed for the biggest and most mature cloud platforms.</p></li><li><p>Data quality is still very important, but like Data Catalogs, buying separate data quality products sometimes feels like a step too far for a lot of organisations, <a href="https://www.linkedin.com/posts/paulblankley_a-huge-bloated-data-stack-is-great-for-one-activity-7140093919664500736-fkv8">as they want to keep their data stack as simple and/or cheap as possible</a>. Most seem happy with using free libraries or custom code where they can.</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_!jxbl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5e32e64-27df-48e6-8c2d-eb7d4fbb891e_800x758.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!jxbl!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5e32e64-27df-48e6-8c2d-eb7d4fbb891e_800x758.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!jxbl!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5e32e64-27df-48e6-8c2d-eb7d4fbb891e_800x758.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!jxbl!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5e32e64-27df-48e6-8c2d-eb7d4fbb891e_800x758.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!jxbl!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5e32e64-27df-48e6-8c2d-eb7d4fbb891e_800x758.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!jxbl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5e32e64-27df-48e6-8c2d-eb7d4fbb891e_800x758.jpeg" width="470" height="445.325" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a5e32e64-27df-48e6-8c2d-eb7d4fbb891e_800x758.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:758,&quot;width&quot;:800,&quot;resizeWidth&quot;:470,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;No alternative text description for this image&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="No alternative text description for this image" title="No alternative text description for this image" srcset="/__u/substackcdn.com/image/fetch/$s_!jxbl!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5e32e64-27df-48e6-8c2d-eb7d4fbb891e_800x758.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!jxbl!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5e32e64-27df-48e6-8c2d-eb7d4fbb891e_800x758.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!jxbl!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5e32e64-27df-48e6-8c2d-eb7d4fbb891e_800x758.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!jxbl!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5e32e64-27df-48e6-8c2d-eb7d4fbb891e_800x758.jpeg 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">Source: https://www.linkedin.com/posts/paulblankley_a-huge-bloated-data-stack-is-great-for-one-activity-7140093919664500736-fkv8</figcaption></figure></div><p>So not too many wild surprises above if you already follow existing data trends, but that&#8217;s the point: most people don&#8217;t like to make big gambles when spending on IT.</p><div><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thedataplatform.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/thedataplatform.substack.com/subscribe"><span>Subscribe now</span></a></p><div><hr></div><h3><a href="https://sqlpatterns.com/p/how-analytics-can-make-a-massive">How Analytics Can Make a Massive Impact on the Bottom Line</a></h3><p>Ergest Xheblati, Solutions Architect at <a href="https://www.wave40.com/">Wave40</a>, shows how finding constraints in a process via Data Analytics can have major impacts on a company.</p><p>I&#8217;d also like to note that this article reminds me how important it is to capture your whole business process where possible in data; otherwise, it&#8217;s tricky to see how actions taken upstream affect downstream data, processes, and outputs.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!jYIu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8706252c-c9f7-4cdb-9ba9-6f214894f51a_1508x223.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!jYIu!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8706252c-c9f7-4cdb-9ba9-6f214894f51a_1508x223.png 424w, /__u/substackcdn.com/image/fetch/$s_!jYIu!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8706252c-c9f7-4cdb-9ba9-6f214894f51a_1508x223.png 848w, /__u/substackcdn.com/image/fetch/$s_!jYIu!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8706252c-c9f7-4cdb-9ba9-6f214894f51a_1508x223.png 1272w, /__u/substackcdn.com/image/fetch/$s_!jYIu!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8706252c-c9f7-4cdb-9ba9-6f214894f51a_1508x223.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!jYIu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8706252c-c9f7-4cdb-9ba9-6f214894f51a_1508x223.png" width="1456" height="215" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8706252c-c9f7-4cdb-9ba9-6f214894f51a_1508x223.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:215,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!jYIu!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8706252c-c9f7-4cdb-9ba9-6f214894f51a_1508x223.png 424w, /__u/substackcdn.com/image/fetch/$s_!jYIu!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8706252c-c9f7-4cdb-9ba9-6f214894f51a_1508x223.png 848w, /__u/substackcdn.com/image/fetch/$s_!jYIu!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8706252c-c9f7-4cdb-9ba9-6f214894f51a_1508x223.png 1272w, /__u/substackcdn.com/image/fetch/$s_!jYIu!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8706252c-c9f7-4cdb-9ba9-6f214894f51a_1508x223.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Source: https://sqlpatterns.com/p/how-analytics-can-make-a-massive</figcaption></figure></div><div><hr></div><h3><strong><a href="https://davidgomes.com/understanding-parquet-iceberg-and-data-lakehouses-at-broad/">Understanding Parquet, Iceberg and Data Lakehouses</a></strong></h3><p>Those coming from a Databases and/or Data Warehouse background can struggle with the concept of Data Lakehouses, and David Gomes, Director of Engineering at <a href="https://singlestore.com/?ref=davidgomes.com">SingleStore</a>, admits he was one of those people and wrote this informative article to help their understanding.</p><p>I&#8217;ve also tried my hand at <a href="/__u/thedataplatform.substack.com/p/how-to-build-a-data-platform-data">explaining Lakehouses and how they compare to Warehouses and Databases</a>, if you&#8217;re looking for another take on the topic.</p><div><hr></div><h3><strong><a href="https://www.vis4.net/blog/2023/12/spatiotemporal-data-analysis-pitfalls/">Four pitfalls of spatiotemporal data analysis and how to avoid them</a></strong></h3><p>Analysing data based on time (temporal / time-series) can be tricky, and analysing data on geospatial data can be even more painful, so if you have to analyse data on both dimensions (spatiotemporal), then you could be in for a whole world of pain.</p><p>Gregor Aisch, former founder and CTO of <a href="https://www.datawrapper.de/">Datawrapper</a>, gives tips on how avoid common issues with spatiotemporal data.</p><div><hr></div><h3><a href="https://newsletter.casewhen.xyz/p/data-explained-idempotence">Data Explained: Idempotence</a></h3><p>Yes, I&#8217;m linking to <em>another</em> post by Matt Palmer, but he&#8217;s a great writer, and I think impotence is a) a key ingredient for building robust data pipelines and b) a concept that is not talked about enough in data.</p><div><hr></div><h3><strong><a href="https://medium.com/@jordan_volz/is-it-time-for-composable-data-systems-aaa72e0aa9bd">Is it Time for Composable Data Systems?</a></strong></h3><p>While the last few years have proven there is a market for Data Lakehouses that has the main benefit of decoupling the storage and compute layers, should we go further and decouple the user interface, compute engine, and storage into three different composable layers?</p><p>Jordan Volz, Head of Field Engineering at <a href="https://voltrondata.com/">Voltron Data</a>, makes a case for them.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!SwEB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24346a38-ac5c-47b3-beb1-fe53488e7d46_875x438.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!SwEB!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24346a38-ac5c-47b3-beb1-fe53488e7d46_875x438.png 424w, /__u/substackcdn.com/image/fetch/$s_!SwEB!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24346a38-ac5c-47b3-beb1-fe53488e7d46_875x438.png 848w, /__u/substackcdn.com/image/fetch/$s_!SwEB!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24346a38-ac5c-47b3-beb1-fe53488e7d46_875x438.png 1272w, /__u/substackcdn.com/image/fetch/$s_!SwEB!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24346a38-ac5c-47b3-beb1-fe53488e7d46_875x438.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!SwEB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24346a38-ac5c-47b3-beb1-fe53488e7d46_875x438.png" width="875" height="438" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/24346a38-ac5c-47b3-beb1-fe53488e7d46_875x438.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:438,&quot;width&quot;:875,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!SwEB!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24346a38-ac5c-47b3-beb1-fe53488e7d46_875x438.png 424w, /__u/substackcdn.com/image/fetch/$s_!SwEB!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24346a38-ac5c-47b3-beb1-fe53488e7d46_875x438.png 848w, /__u/substackcdn.com/image/fetch/$s_!SwEB!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24346a38-ac5c-47b3-beb1-fe53488e7d46_875x438.png 1272w, /__u/substackcdn.com/image/fetch/$s_!SwEB!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24346a38-ac5c-47b3-beb1-fe53488e7d46_875x438.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">Source: https://medium.com/@jordan_volz/is-it-time-for-composable-data-systems-aaa72e0aa9bd</figcaption></figure></div><div><hr></div><h3><strong><a href="https://medium.com/snowflake/devops-in-snowflake-how-git-and-database-change-management-enable-a-file-based-object-lifecycle-1f61a0d5257c">DevOps in Snowflake: How Git and Database Change Management enable a file-based object lifecycle</a></strong></h3><p>Vincent Raudszus, Software Engineer at <a href="https://www.snowflake.com/en/">Snowflake</a> walks us through how to add git version control in Snowflake just using SQL commands, which I&#8217;ve never seen before (note it is currently only in private preview).</p><p>I see other data-processing products adopting this approach in the near future.</p><div><hr></div><p>Sponsored by <a href="https://www.theoaklandgroup.co.uk/">The Oakland Group</a>, a full-service data consultancy. Download our <a href="https://weare.theoaklandgroup.co.uk/data-platform-guide">guide</a> or <a href="https://www.theoaklandgroup.co.uk/get-in-touch/">contact us</a> if you want to find out more about how we build data platforms!</p><p>Photo by <a href="https://unsplash.com/@mokngr?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Moritz Kn&#246;ringer</a> on <a href="https://unsplash.com/photos/a-number-that-is-written-in-sparklers-on-a-black-background-vC9SP_j58AQ?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Unsplash</a></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thedataplatform.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 The Data Platform Journal! 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[Issue #31: Microsoft Fabric is Generally Available - Should You Adopt It?]]></title><description><![CDATA[Also: Text to SQL LLMs and Knowledge Graphs vs. Semantic Layers, The State of Streaming, Why You Need a Data Catalog to Build Data Products and Automatic Data Platform Optimisation.]]></description><link>https://thedataplatform.substack.com/p/issue-31-microsoft-fabric-is-generally</link><guid isPermaLink="false">https://thedataplatform.substack.com/p/issue-31-microsoft-fabric-is-generally</guid><dc:creator><![CDATA[Jake Watson]]></dc:creator><pubDate>Tue, 12 Dec 2023 14:47:22 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c2fb5240-d9cc-4c7f-b873-43edcaa821f9_576x473.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hello all, I&#8217;m back after an unforeseen break in writing due to being very busy with work, and honestly, I suspect December will be just as busy. I should hopefully be back to a regular schedule in January.</p><ul><li><p>Microsoft Fabric is Generally Available - Should You Adopt It?</p></li><li><p>Investing in Knowledge Graphs Provides Higher Accuracy for LLM-Powered Analytics Systems</p></li><li><p>Semantic Layer as the Data Interface for LLMs</p></li><li><p>Data Explained: The State of Streaming</p></li><li><p>Why You Need a Data Catalog to Build Data Products</p></li><li><p>Automatic Data Platform Optimisation</p></li></ul><div><hr></div><h3><a href="https://blog.fabric.microsoft.com/en-us/blog/fabric-workloads-are-now-generally-available?ft=All">Microsoft Fabric is Generally Available - Should You Adopt It?</a> </h3><p>So Microsoft Fabric, an all-in-one data platform, has been generally available for a few weeks, and as a Microsoft Partner with five years of personal experience designing and deploying data solutions in Azure, I have opinions.</p><p><a href="/__u/thedataplatform.substack.com/p/issue-14-microsoft-takes-aim-at-the">I had some issues with Fabric when it was announced</a>, and MS, to be fair, has addressed most of my concerns at the time, either in the present or on the future roadmap (which I&#8217;ll cover later).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!LjyN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F777e2168-708b-41c4-97b6-25f4a920fdff_1100x633.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!LjyN!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F777e2168-708b-41c4-97b6-25f4a920fdff_1100x633.png 424w, /__u/substackcdn.com/image/fetch/$s_!LjyN!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F777e2168-708b-41c4-97b6-25f4a920fdff_1100x633.png 848w, /__u/substackcdn.com/image/fetch/$s_!LjyN!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F777e2168-708b-41c4-97b6-25f4a920fdff_1100x633.png 1272w, /__u/substackcdn.com/image/fetch/$s_!LjyN!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F777e2168-708b-41c4-97b6-25f4a920fdff_1100x633.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!LjyN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F777e2168-708b-41c4-97b6-25f4a920fdff_1100x633.png" width="562" height="323.4054545454545" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/777e2168-708b-41c4-97b6-25f4a920fdff_1100x633.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:633,&quot;width&quot;:1100,&quot;resizeWidth&quot;:562,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Diagram of different experiences all accessing the same OneLake data storage.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Diagram of different experiences all accessing the same OneLake data storage." title="Diagram of different experiences all accessing the same OneLake data storage." srcset="/__u/substackcdn.com/image/fetch/$s_!LjyN!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F777e2168-708b-41c4-97b6-25f4a920fdff_1100x633.png 424w, /__u/substackcdn.com/image/fetch/$s_!LjyN!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F777e2168-708b-41c4-97b6-25f4a920fdff_1100x633.png 848w, /__u/substackcdn.com/image/fetch/$s_!LjyN!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F777e2168-708b-41c4-97b6-25f4a920fdff_1100x633.png 1272w, /__u/substackcdn.com/image/fetch/$s_!LjyN!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F777e2168-708b-41c4-97b6-25f4a920fdff_1100x633.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">Source: https://learn.microsoft.com/en-us/fabric/get-started/microsoft-fabric-overview</figcaption></figure></div><p>One thing I should mention early on is that I&#8217;m asking the question &#8220;should you adopt Fabric as a data platform&#8221; and not as a Business Intelligence (BI) solution, which is a far easier question to answer as Fabric has adopted most or all of the features of Power BI, which is arguably the most popular BI application on the market right now and has had great success using in the past for clients.</p><h4>Not quite best-in-class security</h4><p>The consensus among Oakland engineers is that Fabric is great for proof of concept and for low- to medium-data maturity organisations that are not too fussed about having the best security.</p><p>Why? Fabric has no private link support, and most enterprise cloud security teams using Azure mandate them <a href="https://learn.microsoft.com/en-us/security/benchmark/azure/mcsb-network-security#ns-2-secure-cloud-native-services-with-network-controls">partly because Microsoft says including private links in all data solutions is security best practice</a>, so you&#8217;ll likely stick to Synapse or Databricks on Azure in that situation.</p><p><a href="https://learn.microsoft.com/en-us/fabric/security/security-overview">Fabric security</a> is still very good, but not the best.</p><h4>It all depends on data maturity of the organisation</h4><p>As I mentioned above, Fabric is a great option for low-data-maturity organisations, as it&#8217;s very easy to adopt if you already have Microsoft, Office 365, or Azure accounts. This may explain why I&#8217;ve seen lots of excitement among Power BI and Platform users as Fabric massively expands their data capabilities without having to learn cloud infrastructure.</p><p>But also, <a href="https://old.reddit.com/r/dataengineering/comments/17vxmth/microsoft_data_products_merrygoround_of_mediocrity/">I&#8217;ve seen a lot of negative opinions from experienced data engineers for Fabric</a> due to its focus on no- and low-code. Most experienced data engineers just want to write in SQL and/or Python (including me) and not be limited by their tooling, and Fabric doesn&#8217;t allow that in Pipelines and real-time analytics (yet). </p><p>For example, Microsoft has been spending a lot of time adding features to their low-code data flow and pipelines, whereas I would prefer if they added more support for managed <a href="https://airflow.apache.org/">Airflow</a> or something similar to bring it closer in line with GCP or AWS. </p><p>This is also the second Microsoft data product refresh in a few years, and Azure data engineers are weary of having to adapt to a new suite of products rather than see existing products that haven&#8217;t been out very long (Synapse) catch up with the competition (Databricks, Snowflake, etc.). </p><p>Also note that there isn&#8217;t full automation support right now, so platform admins might be tearing their hair out over the prospect of managing Fabric on a large scale. </p><h4>Roadmap</h4><p>Though <a href="https://learn.microsoft.com/en-us/fabric/release-plan/admin-governance#private-link">Private link</a> are on the roadmap for 2024, and speaking of the Fabric <a href="https://learn.microsoft.com/en-us/fabric/release-plan/">roadmap</a>, I&#8217;m quite excited about what&#8217;s in there:</p><ul><li><p>Better Data Factory / Pipelines git integration </p><ul><li><p>The current iteration converts everything JSON at the moment, which is awful to review in pull requests and merging</p></li><li><p><a href="https://github.com/hashicorp/terraform-provider-azurerm/issues/7651">It also has issues when using Infrastructure as Code (Terraform, Bicep, etc.)</a></p></li></ul></li><li><p>SQL for real-time analytics</p></li><li><p>I&#8217;m hoping &#8220;<a href="https://learn.microsoft.com/en-us/fabric/release-plan/data-factory#opdg">On-premises data gateway (OPDG)</a>&#8220; means we don&#8217;t have to build another virtual machine for Pipelines / Data Factory to connect to on-premise again.</p></li><li><p>Better automation support everywhere (SDK, REST API)</p></li></ul><p>This feels a bit &#8220;<a href="https://en.wikipedia.org/wiki/Jam_tomorrow">jam tomorrow</a>&#8221;: I&#8217;ve been burned in the past by great-sounding features turning out to be rubbish or never arriving, but I&#8217;m cautiously optimistic about Fabric&#8217;s future.</p><div><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thedataplatform.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/thedataplatform.substack.com/subscribe"><span>Subscribe now</span></a></p><div><hr></div><h3><a href="https://www.linkedin.com/feed/update/urn:li:activity:7130207789620101120/">Investing in Knowledge Graphs Provides Higher Accuracy for LLM-Powered Analytics Systems</a></h3><p>As you can see in the table below, Knowledge Graphs can possibly provide massive benefits to text-to-SQL query accuracy:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!t0xr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8565a9a-0870-4203-a653-2aafc943016c_703x206.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!t0xr!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8565a9a-0870-4203-a653-2aafc943016c_703x206.png 424w, /__u/substackcdn.com/image/fetch/$s_!t0xr!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8565a9a-0870-4203-a653-2aafc943016c_703x206.png 848w, /__u/substackcdn.com/image/fetch/$s_!t0xr!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8565a9a-0870-4203-a653-2aafc943016c_703x206.png 1272w, /__u/substackcdn.com/image/fetch/$s_!t0xr!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8565a9a-0870-4203-a653-2aafc943016c_703x206.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!t0xr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8565a9a-0870-4203-a653-2aafc943016c_703x206.png" width="703" height="206" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f8565a9a-0870-4203-a653-2aafc943016c_703x206.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:206,&quot;width&quot;:703,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!t0xr!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8565a9a-0870-4203-a653-2aafc943016c_703x206.png 424w, /__u/substackcdn.com/image/fetch/$s_!t0xr!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8565a9a-0870-4203-a653-2aafc943016c_703x206.png 848w, /__u/substackcdn.com/image/fetch/$s_!t0xr!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8565a9a-0870-4203-a653-2aafc943016c_703x206.png 1272w, /__u/substackcdn.com/image/fetch/$s_!t0xr!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8565a9a-0870-4203-a653-2aafc943016c_703x206.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>What is interesting about this <a href="http://pre-print paper">paper</a> is that it was used on a somewhat realistic 13-table schema* based on the insurance industry rather than some noddy one-table dataset. Major kudos to the authors for putting in the effort and money to build this.</p><p>That said, it only gets 71% accuracy on simple results, which says to me that LLMs require an expert to second-check any outputs, so I think we&#8217;re still a bit away from a CFO just using text prompts to get analytical insights.</p><p>Even with the results above, I&#8217;m not sure it&#8217;s still worthwhile to use Knowledge Graphs with LLMs unless it&#8217;s a large-scale solution: you&#8217;ll have to build and maintain two data analytics systems rather than typically just one, and I can tell you, as someone who has designed and/or built more than half a dozen data platforms in the last 6 years, building just one analytical system is hard enough work, even if you can use SaaS solutions and the cloud.</p><p>Also, on top of that, you have to keep Knowledge Graph in sync with your relational database, which exponentially increases your maintenance problems (for example, you now have two sources of truth, not one).</p><p><em>*I know 13 tables is a bit on the small side for a large enterprise dataset, but it&#8217;s a much more complex dataset used to test LLMs than I&#8217;ve seen elsewhere.</em></p><div><hr></div><h3><a href="https://roundup.getdbt.com/p/semantic-layer-as-the-data-interface">Semantic Layer as the Data Interface for LLMs</a></h3><p>But maybe semantic layers are actually better with LLMs than Knowledge Graphs? Jason Ganz, Developer Experience at <a href="https://www.getdbt.com/">dbt Labs</a>, presents their promising initial findings on using dbt semantic layer with LLMs.</p><p>One issue dbt is going to face with this is that the two biggest developers of LLMs, Microsoft and Google, also sort of have a semantic layer in Power BI and Looker, respectively. Though dbt might have an angle here for organisations not looking to be locked into only one LLM stack or BI application.</p><div><hr></div><h3><a href="https://newsletter.casewhen.xyz/p/data-explained-the-state-of-streaming">Data Explained: The State of Streaming</a></h3><p>I&#8217;ve mentioned quite a few articles on streaming and/or real-time data in this newsletter, but I don&#8217;t think I&#8217;ve shared an introduction to streaming here, and Data Engineer Matt&nbsp;Palmer does one of the best intros I&#8217;ve seen in this article.</p><p>I&#8217;d also generally recommend following <a href="https://www.linkedin.com/in/matt-palmer/">Matt Palmer</a>, especially if you like <a href="https://newsletter.casewhen.xyz/p/making-analytics-fun">Jujutsu Kaisen references in your data engineering articles</a>.</p><div><hr></div><h3><a href="https://www.getorchestra.io/blog/why-you-need-a-data-catalog-to-build-data-products">Why You Need a Data Catalog to Build Data Products</a></h3><p>Last week, I was speaking to a data governance professional in Oakland about how it is difficult to get anyone outside of data governance to care about the topic.</p><p>It probably explains why some in data governance use <a href="https://www.linkedin.com/feed/update/urn:li:activity:7047447439498186752/">comics</a> or <a href="https://www.linkedin.com/pulse/13-governors-data-rap-anthem-governance-tiankai-feng">music</a> to lower the bar of entry for non-experts.</p><p>Hugo Lu, Co-Founder and CEO of <a href="https://www.getorchestra.io/">Orchestra</a>, tries well-written prose to make the case for data teams to adopt data catalogs, I especially liked this sentence: &#8220;Catalogs offer a way for data practitioners to finally collaborate with business users effectively.&#8220;</p><div><hr></div><h3><strong><a href="https://itnext.io/automatic-data-platform-optimization-e8ceac63f356">Automatic Data Platform Optimization</a></strong></h3><p>With rising prices in both on-premise hardware and the cloud, there has been a lot of noise in the data world about reducing costs on data platforms. </p><p>That said, I haven&#8217;t seen many articles on comparing vendors that try to save you money on data storage and compute, so I love the article by Phil Dakin here.</p><div><hr></div><p>Sponsored by <a href="https://www.theoaklandgroup.co.uk/">The Oakland Group</a>, a full-service data consultancy. Download our <a href="https://weare.theoaklandgroup.co.uk/data-platform-guide">guide</a> or <a href="https://www.theoaklandgroup.co.uk/get-in-touch/">contact us</a> if you want to find out more about how we build data platforms!</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thedataplatform.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 The Data Platform Journal! 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> </p>]]></content:encoded></item><item><title><![CDATA[Issue #30: How Self-Service Analytics Impact Data Platforms]]></title><description><![CDATA[Hi all, this week we have:]]></description><link>https://thedataplatform.substack.com/p/issue-30-how-self-service-analytics</link><guid isPermaLink="false">https://thedataplatform.substack.com/p/issue-30-how-self-service-analytics</guid><dc:creator><![CDATA[Jake Watson]]></dc:creator><pubDate>Tue, 31 Oct 2023 13:00:12 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/4cf266bc-9201-488e-a762-2e684c866789_4688x2860.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi all, this week we have:</p><ul><li><p>How Self-Service Analytics Impact Data Platforms</p></li><li><p>Data Pipeline Orchestrators - The Emerging Force in the Modern Data Stack (MDS)?</p></li><li><p>When to Build or Kill Your Data Product Ideas</p></li><li><p>From Data Platform to ML Platform</p></li><li><p>dbt Shows Off New Features For its Cloud Service</p></li></ul><div><hr></div><h3>How Self-Service Analytics Impact Data Platforms</h3><p>I believe most decisions made in data should ideally be on a continuum of two or more options or be a compromise rather than picking a binary extreme.</p><p>And I think Self-Service vs. Guided Analytics (pre-built reports) is one of those examples, as in a sufficiently large organisation, you are going to see a mix of both approaches.</p><p>Now I&#8217;m not going to make a typical comparison of the two, <a href="/__u/www.google.com/search?q=self+service+vs+guided+analytics">as there are already a number of great articles on that</a>. Also, the comparison articles can&#8217;t cover all the numerous use cases and personas of analytics (see appendix below).</p><p>The trick is to find the right balance for your organisation based on your current analytics use cases. This balance will differ in each organisation and, most importantly, differ over time as your organisation becomes more data-informed, new technology comes on the scene, and data analytics use cases change.</p><h4>Self-Service is Technically Everywhere</h4><p>While the dream of some to have 100% guided analytics, as it&#8217;s fully governed, requires less data literacy training and documentation, the reality is that there is always a requirement for some custom ad-hoc analysis.</p><p><strong>I also believe pretty much every organisation is doing self-service analytics; just all are not aware of it. If you&#8217;re using Excel for analytics, you&#8217;re doing self-service analytics!</strong></p><p>And with Excel, you are doing <strong>ungoverned self-service analytics</strong>, as Excel doesn&#8217;t have much in the way of query logging, data lineage and version control features out of the box.</p><p>But self-service done right requires more upfront costs than guided analytics: you need the right tools, governance, and training in place so self-service doesn&#8217;t turn into a report-dumping ground.</p><h4>But What Does This Have To Do With Data Platforms?</h4><p>As I mentioned in <a href="/__u/thedataplatform.substack.com/i/121005506/bring-value-as-early-as-possible">my guide</a>, ideally, a data platform should be designed backwards from it&#8217;s analytical use cases so we know the right tools to choose for our platform and how best to use them. How you do analytics can have a massive impact on your data platform.</p><p>Increased self-service use cases will impact platform design in a number of ways:</p><ul><li><p>Modelling: data models will require a more adaptable core data model </p></li><li><p>Performance and Cost: self-service modelling will probably put more strain on your warehouse or lakehouse. Rather than having static indexes and partitions, you may want to look at more dynamic alternatives (<a href="https://www.starburst.io/blog/the-difference-between-micro-partitioning-vs-indexing-and-a-better-way/">Starburst</a>, <a href="https://docs.databricks.com/en/delta/clustering.html">Databricks</a> and <a href="https://docs.snowflake.com/en/user-guide/tables-clustering-micropartitions">Snowflake</a>) based on recent usage.</p></li><li><p>Data Governance: will be harder to manage with self-service, so it requires more platform processes and tooling to manage.</p></li><li><p>Tooling choices: low-code and no-code tooling can increase self-service, but may come with a lack of governance features like version control.</p></li></ul><h4>Summary</h4><p>The above considerations might put you off self-service, but as I mentioned before, it&#8217;s nearly impossible for some self-service not to occur, so it&#8217;s best to plan to govern it, plus it can give you business performance benefits such as a lower time to insights.</p><p>Likewise, I can&#8217;t see a fully self-service approach working for most organisations, as it will simply cost too much to train everyone to be a data analytics wizard, even if all staff want to be one (unlikely).</p><p>So it&#8217;s about finding the right balance for you right now and building the best data platform for that balance.</p><h4>Appendix: Analytics Personas</h4><p>While this didn&#8217;t fit well into my post above, I wanted to give you an idea of the range of use cases that fit into guided analytics and self-service by looking at the types of end users in analytics:</p><ul><li><p>Report viewers:</p><ul><li><p>Require relatively lower data literacy training.</p></li><li><p>Very much a guided analytics use case.</p></li><li><p>Doesn&#8217;t have to be static reports, though the more filters you add to a report, the more training required for it</p></li></ul></li><li><p>Report Builders: </p><ul><li><p>Now into the domain of self-service analytics, building ad-hoc experiment reports or production-ready reports for report viewers</p></li><li><p>Usually exclusively using BI tools such as Power BI or Tableau. </p></li><li><p>Should be trained in data tooling they are using and data literacy.</p></li></ul></li><li><p>Report Modellers:</p><ul><li><p>Still often using BI tools, much also likely comfortable using data warehouses and lakehouses with knowledge of SQL</p></li><li><p>Will also often build the reports too.</p></li><li><p>They require a high level of data literacy: at least the basics of data architecture.</p></li><li><p>Likely data specialists with some domain expertise.</p></li></ul></li><li><p>Analytics Engineers: </p><ul><li><p>Designing their own data pipelines with tooling like <a href="https://www.getdbt.com/product/what-is-dbt">dbt</a>. </p></li><li><p>Very quick time to insights, but can be hard to govern at scale. </p></li><li><p>Likely data specialists with high data literacy.</p></li></ul></li><li><p>Data Scientists: </p><ul><li><p>Will often require access to conformed and even raw data. </p></li><li><p>Will likely still need training on how best to communicate their AI and ML models to non-scientists.</p></li><li><p>May design models that can be accessed in a self-service manner for investigation.</p></li></ul></li></ul><div><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thedataplatform.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/thedataplatform.substack.com/subscribe"><span>Subscribe now</span></a></p><div><hr></div><h3><a href="https://substack.timodechau.com/p/data-pipeline-orchestrators-the-emerging">Data Pipeline Orchestrators - The Emerging Force in the Modern Data Stack (MDS)?</a></h3><p>Timo Decau, Chief Content Maker at <a href="https://www.deepskydata.com/">Deepskydata</a>, often writes great posts, and this is another: pointing out that Data Pipeline Orchestrators offer a common layer for various Data Platform / Modern Data Stack tooling similar to a fully integrated data platform.</p><p>He also does a deep dive comparsion into various Data Pipeline Orchrestrators and wonders if they&#8217;ll exist in 10 years time.</p><div><hr></div><h3>When to Build or Kill Your Data Product Ideas</h3><div id="youtube2-xbuiepiMFd0" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;xbuiepiMFd0&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/xbuiepiMFd0?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>There are lots of posts on LinkedIn telling you that your analytics &#8220;must have business value&#8220;, which I agree with, but how? </p><p>Stanislav Dmitriev, Head of Marketing at <a href="https://www.ellie.ai/">ellie.ai</a> gives a nice intro into how to figure out which data product ideas should be built or not.</p><div><hr></div><h3><strong><a href="https://towardsdatascience.com/from-data-platform-to-ml-platform-4a8192edab5d">From Data Platform to ML Platform</a></strong></h3><p>This is a great (and accidental!) companion article to my article on why data foundations matter in AI and ML, as this looks at how to start with the data foundations of a typical data platform and add AI and ML functionality with a deep dive into MLOps.</p><p>Written by <a href="https://www.linkedin.com/in/ming-gao-57509a101/">Ming Gao</a>, Tech Lead Manager at Bytedance (Tiktok)</p><div><hr></div><h3><strong><a href="https://www.red-gate.com/simple-talk/databases/sql-server/t-sql-programming-sql-server/dont-use-distinct-as-a-join-fixer/">Don&#8217;t Use DISTINCT as a &#8220;Join-Fixer&#8221;</a></strong></h3><p>Great deep dive into the performance impact of DISTINCT SQL function by Aaron Bertrand at Staff Database Reliability Engineer for <a href="https://stackoverflow.com/">Stack Overflow</a>. </p><p>However, <a href="https://bandittracker.com/snowflake-sql-distinct/">Snowflake processes DISTINCT differently</a>, so this advice doesn&#8217;t apply to all databases!</p><div><hr></div><h3><a href="https://roundup.getdbt.com/p/and-thats-a-wrap">dbt Shows Off New Features For its Cloud Service</a></h3><p>While I love open source dbt (or &#8220;dbt core&#8221;), I&#8217;ve always struggled to see much value in dbt cloud, especially at it&#8217;s current pricing. For example, I don&#8217;t think most organisations need a semantic layer, as they likely have one in their Business Intelligence (BI) applications, and it&#8217;s orchestration features are limited compared to best-in-class orchestration libraries.</p><p>But dbt mesh and dbt explorer sound interesting and could add value to organisations that have hundreds or even thousands of models across many data products.</p><p>Though note, there is already work in the open source community to replicate some of the dbt mesh&#8217;s features with <a href="https://github.com/nicholasyager/dbt-loom">dbt loom</a>, Data Engineer Christophe Blefari <a href="https://www.blef.fr/dbt-multi-project-collaboration/">shows off a working example of it</a>.</p><div><hr></div><p>Sponsored by <a href="https://www.theoaklandgroup.co.uk/">The Oakland Group</a>, a full-service data consultancy. Download our <a href="https://weare.theoaklandgroup.co.uk/data-platform-guide">guide</a> or <a href="https://www.theoaklandgroup.co.uk/get-in-touch/">contact us</a> if you want to find out more about how we build data platforms!</p><p>Cover Photo by <a href="https://unsplash.com/@hostreviews?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Stephen Phillips - Hostreviews.co.uk</a> on <a href="https://unsplash.com/photos/monitor-screengrab-shr_Xn8S8QU?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Unsplash</a></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thedataplatform.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 The Data Platform Journal! 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[Issue #29: How Data Platform Foundations Impact AI and ML Applications]]></title><description><![CDATA[Plus Current 2023 Conference Retrospectives, Apache Paimon: the Streaming Lakehouse and dbt Tests are expensive]]></description><link>https://thedataplatform.substack.com/p/issue-29-how-data-platform-foundations</link><guid isPermaLink="false">https://thedataplatform.substack.com/p/issue-29-how-data-platform-foundations</guid><dc:creator><![CDATA[Jake Watson]]></dc:creator><pubDate>Wed, 18 Oct 2023 11:18:03 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/80fdac68-9eda-44f8-bc42-f7c534a40f4b_1247x811.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hello all, this week we have:</p><ul><li><p>How Data Platform Foundations Impact AI and ML Applications</p></li><li><p>Current 2023 Conference Retrospectives</p></li><li><p>What is the Environmental Impact of Your Data? (Sponsored)</p></li><li><p>Beware of dbt Tests&#8230;. Your Money May Disappear</p></li><li><p>Pulumi Environments, Secrets, and Configuration</p></li><li><p>Why data integration will never be fully solved</p></li></ul><div><hr></div><h3>How Data Platform Foundations Impact AI and ML Applications</h3><p>I&#8217;ve always told my clients and colleagues that traditional rule-based software is difficult, but software containing Artificial Intelligence (AI) and/or Machine Learning (ML)* is even more difficult, sometimes impossible.</p><p>Why is this the case? Well, software is difficult because it&#8217;s like flying a plane while building it at the same time, but because AI and ML make rules on the fly based on various factors like training data, it&#8217;s like trying to build a plane in flight, but some parts of the plane will be designed by a machine, and you have little idea what that is going to look like till the machine finishes.</p><p>This double goes for more cutting-edge AI models like GPT, where only the creators of the software have a vague idea of what it will output.</p><p>This makes software with AI / ML more of a scientific experiment than engineering, which is going to make your project manager lose their mind when you have little idea how long a task is going to take.</p><p>But what will make everyone&#8217;s lives easier is having solid data foundations to work from. Learn to walk before running.</p><p>This isn&#8217;t a new concept; it&#8217;s just more relevant in a new AI hype cycle. Previous AI and ML hype cycles gave birth to the idea that good AI, ML, and advanced analytics are best made on top of high-quality, well-modeled, and governed data:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!8jLc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b7d48c-b205-4dff-aa03-ab8b4463bef2_1315x843.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!8jLc!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b7d48c-b205-4dff-aa03-ab8b4463bef2_1315x843.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!8jLc!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b7d48c-b205-4dff-aa03-ab8b4463bef2_1315x843.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!8jLc!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b7d48c-b205-4dff-aa03-ab8b4463bef2_1315x843.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!8jLc!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b7d48c-b205-4dff-aa03-ab8b4463bef2_1315x843.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!8jLc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b7d48c-b205-4dff-aa03-ab8b4463bef2_1315x843.jpeg" width="660" height="423.10266159695817" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f6b7d48c-b205-4dff-aa03-ab8b4463bef2_1315x843.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:843,&quot;width&quot;:1315,&quot;resizeWidth&quot;:660,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!8jLc!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b7d48c-b205-4dff-aa03-ab8b4463bef2_1315x843.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!8jLc!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b7d48c-b205-4dff-aa03-ab8b4463bef2_1315x843.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!8jLc!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b7d48c-b205-4dff-aa03-ab8b4463bef2_1315x843.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!8jLc!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b7d48c-b205-4dff-aa03-ab8b4463bef2_1315x843.jpeg 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">Source: https://hackernoon.com/the-ai-hierarchy-of-needs-18f111fcc007</figcaption></figure></div><p>The above pyramid is from an article in 2017 and could arguably be said to be a reworking of the <a href="https://en.wikipedia.org/wiki/DIKW_pyramid">DKIW pyramid</a>, which can trace it&#8217;s origins back to the 1920s.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!eYEk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ed440a9-4c45-4401-be34-6621503575c1_494x385.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!eYEk!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ed440a9-4c45-4401-be34-6621503575c1_494x385.png 424w, /__u/substackcdn.com/image/fetch/$s_!eYEk!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ed440a9-4c45-4401-be34-6621503575c1_494x385.png 848w, /__u/substackcdn.com/image/fetch/$s_!eYEk!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ed440a9-4c45-4401-be34-6621503575c1_494x385.png 1272w, /__u/substackcdn.com/image/fetch/$s_!eYEk!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ed440a9-4c45-4401-be34-6621503575c1_494x385.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!eYEk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ed440a9-4c45-4401-be34-6621503575c1_494x385.png" width="494" height="385" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5ed440a9-4c45-4401-be34-6621503575c1_494x385.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:385,&quot;width&quot;:494,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;File:DIKW Pyramid.svg&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="File:DIKW Pyramid.svg" title="File:DIKW Pyramid.svg" srcset="/__u/substackcdn.com/image/fetch/$s_!eYEk!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ed440a9-4c45-4401-be34-6621503575c1_494x385.png 424w, /__u/substackcdn.com/image/fetch/$s_!eYEk!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ed440a9-4c45-4401-be34-6621503575c1_494x385.png 848w, /__u/substackcdn.com/image/fetch/$s_!eYEk!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ed440a9-4c45-4401-be34-6621503575c1_494x385.png 1272w, /__u/substackcdn.com/image/fetch/$s_!eYEk!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ed440a9-4c45-4401-be34-6621503575c1_494x385.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">Source: https://commons.wikimedia.org/wiki/File:DIKW_Pyramid.svg</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_!aZnC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4334d87-4741-46db-957c-27609eb0b0fc_575x298.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!aZnC!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4334d87-4741-46db-957c-27609eb0b0fc_575x298.png 424w, /__u/substackcdn.com/image/fetch/$s_!aZnC!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4334d87-4741-46db-957c-27609eb0b0fc_575x298.png 848w, /__u/substackcdn.com/image/fetch/$s_!aZnC!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4334d87-4741-46db-957c-27609eb0b0fc_575x298.png 1272w, /__u/substackcdn.com/image/fetch/$s_!aZnC!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4334d87-4741-46db-957c-27609eb0b0fc_575x298.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!aZnC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4334d87-4741-46db-957c-27609eb0b0fc_575x298.png" width="575" height="298" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c4334d87-4741-46db-957c-27609eb0b0fc_575x298.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:298,&quot;width&quot;:575,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;File:DIKW (1).png&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="File:DIKW (1).png" title="File:DIKW (1).png" srcset="/__u/substackcdn.com/image/fetch/$s_!aZnC!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4334d87-4741-46db-957c-27609eb0b0fc_575x298.png 424w, /__u/substackcdn.com/image/fetch/$s_!aZnC!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4334d87-4741-46db-957c-27609eb0b0fc_575x298.png 848w, /__u/substackcdn.com/image/fetch/$s_!aZnC!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4334d87-4741-46db-957c-27609eb0b0fc_575x298.png 1272w, /__u/substackcdn.com/image/fetch/$s_!aZnC!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4334d87-4741-46db-957c-27609eb0b0fc_575x298.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">Source: https://en.wikipedia.org/wiki/DIKW_pyramid#/media/File:DIKW_(1).png</figcaption></figure></div><p>So wisdom, making the best decisions, is based on learning from past decisions, which in this context means you&#8217;ll have great decision-making capability using AI and ML if you invest in your historical data processing beforehand.</p><p>But you probably did not click the link to this post for a history lesson; you want to make great AI and ML applications and want some tips to make that happen. So let&#8217;s get started. What platform foundations do you need?</p><h4><strong>Data Quality</strong></h4><ul><li><p>If half your training data has wrong or no value, then it is likely to be half as accurate.</p></li><li><p><a href="https://www.youtube.com/watch?v=06-AZXmwHjo">Studies show</a> you&#8217;ll often get more accurate forecasts by increasing Data Quality than by using a bigger and more expensive model.</p></li><li><p>Also Data Quality tests tell Data Scientists what data is useable and inform them that <a href="https://towardsdatascience.com/why-data-drift-detection-is-important-and-how-do-you-automate-it-in-5-simple-steps-96d611095d93">data has drifted</a>, potentially saving time and money in finding that out.</p></li><li><p><a href="/__u/thedataplatform.substack.com/p/how-to-build-a-data-platform-data-14c">I cover Data Quality more in depth here</a>.</p></li></ul><h4><strong>Data Modelling</strong></h4><ul><li><p><a href="https://www.youtube.com/watch?v=OCClTPOEe5s">As the grand sage of data, Joe Reis, says</a>, Data Modelling is more important than ever in the age of Gen AI, as you cannot use Gen AI on your own data well without sufficient modelling to make it consistent, understandable, and easily readable.</p></li><li><p>Also, if done carefully, clean, deduped, and <a href="https://www.kimballgroup.com/data-warehouse-business-intelligence-resources/kimball-techniques/dimensional-modeling-techniques/conformed-dimension/">conformed</a> data can save weeks or even months of work for Data Scientists. </p></li><li><p>Preferably, you&#8217;ll want data not to be overwritten when conformed and curated; forecasting looks at all changes over time, otherwise, if there are any important changes missing due overwritten data, you are going to have less accurate forecasts</p></li><li><p>Also, using aggregated and sometimes anonymized data can make your models less accurate, as you have less training data to work with.</p></li><li><p>You might think then, &#8220;I&#8217;ll go straight to the raw data&#8221;. Oh, sweet summer child, expect to lose months of time trying to replicate work already done for Business Intelligence (BI) to clean data and build business-critical metrics.</p></li><li><p>Try to weigh the trade-offs here between using raw and curated data for Data Science.</p><ul><li><p>The curated layer will have less data to train on, but raw data will likely be more messy, harder to access, and have no business rules.</p></li><li><p>If you are heavily into ML/AI, you may want to invest in an append-only conformed middle layer of data (<a href="https://www.data-vault.co.uk/what-is-data-vault/">Data Vault</a>, <a href="https://github.com/ActivitySchema/ActivitySchema">Activity Schema</a>) if you haven&#8217;t already.</p></li></ul></li><li><p>Classic AI/ML models generally prefer <a href="https://www.fivetran.com/blog/star-schema-vs-obt">One Big Table</a> (OBT) data models, which often expect one big table (or <a href="https://www.kdnuggets.com/2021/02/essential-math-data-science-matrices-matrix-product.html">matrix</a>) of features and target values. Though OBT models have their weaknesses, it&#8217;s not uncommon to use multiple model types. I cover this in more detail in my <a href="/__u/thedataplatform.substack.com/p/how-to-build-a-data-platform-data-07e">Data Modelling post</a>.</p><ul><li><p>Though Generative AI like GPT can take almost any data model, <a href="https://arxiv.org/abs/2303.13547">but smaller and cleaner model will likely give you more predictable results</a>.</p></li></ul></li></ul><h4><strong>Data Governance</strong></h4><ul><li><p>It&#8217;s easier to find the right or best data if it&#8217;s catalogued! Even a Data Dictionary of most organisational data in a spreadsheet will save days, if not weeks, and months of time for Data Scientists.</p></li><li><p>All applications involving data often have some legal and/or ethical concerns you need to be aware of. This is doubly true for most AI and ML applications, as they often make decisions that will impact people's lives. An experienced Data Governance team can often help you navigate these constantly changing legal waters so you don&#8217;t get hefty fines from your government.</p></li><li><p>If decision-making has large impact, you need to document your work</p><ul><li><p><a href="https://www.techtarget.com/whatis/definition/black-box-AI">Black box models</a> may be banned if you can&#8217;t show the ML or AI model how you came to a decision, which might be illegal or very risky in high-impact sectors (medicine).</p></li></ul></li><li><p>I go into more depth on <a href="/__u/thedataplatform.substack.com/p/how-to-build-a-data-platform-data-c2c">Data Governance</a> here.</p></li></ul><h4>MLOps</h4><ul><li><p>While <a href="https://en.wikipedia.org/wiki/MLOps">MLOps</a> can use some different techniques and tools, you can save time if you already have a solid base of DataOps and/or DevOps expertise, services, and tools to rely on.</p></li><li><p>You&#8217;ll also want to track if you&#8217;re product is as efficient and trustworthy as possible, which is where <a href="https://cloud.google.com/blog/products/devops-sre/using-the-four-keys-to-measure-your-devops-performance">DORA metrics</a> like &#8220;time taken to complete a change&#8220;, &#8220;how many changes cause failures in production&#8220; can help.</p></li><li><p><a href="/__u/thedataplatform.substack.com/p/how-to-build-a-data-platform-dataops">I cover DataOps in more detail here</a>.</p></li></ul><h4><strong>Business and Cultural Change</strong></h4><ul><li><p>Have you time and budget to train people on the application? Have you communicated how the application will change the organisation?</p></li><li><p>How you use historical compared to AI/ML-created forecasting data requires different thinking for everyone that uses the application</p><ul><li><p>It requires more &#8220;scientific&#8221; data analysis; how confident is the forecasting?</p></li></ul></li></ul><h4>Cautionary Note</h4><p>Having solid data foundations does not make building AI and ML applications easy - just a lot easier. You might have difficulty with having great data but not enough of it to train accurate enough models, for example.</p><p>Also, having a platform already in place does not mean no more modelling, re-architecture, and cataloguing needs to be done for AI and ML, but you should have to do far less of it if you already have a solid base. </p><h4>Summary</h4><p>There are a lot of elements to consider above, and I didn&#8217;t cover all the topics needed to deliver any successful AI/ML application, like working out the <a href="/__u/thedataplatform.substack.com/p/finding-adding-and-maximising-value">best business value or strategy</a>, <a href="/__u/thedataplatform.substack.com/p/how-to-build-a-data-platform-security">security implications</a>, and <a href="/__u/thedataplatform.substack.com/p/how-to-build-a-data-platform-people">effective team delivery</a>.</p><p>Though if you have these foundations in place, typically found in a <a href="/__u/thedataplatform.substack.com/p/how-to-build-a-data-platform">Data Platform</a>, it can save you a lot of work on AI and ML applications and likely reduce your chance of failure too. It will also make your organisation better at reporting historical data, making it, in general, a more data-informed organisation.</p><p>Finally, I ask those exploring AI and ML projects to understand that while AI can bring big transformational change, be wary of buying into the hype too much: most of the AI and ML projects I&#8217;ve been on have been turned into more traditional rule-based projects, as we found out we only need cheaper rule-based software than a fancy, expensive model once digging into the requirements and data.</p><p>*There's an argument that most <a href="/__u/theaiunderwriter.substack.com/p/well-call-it-ai-to-sell-it-machine">AI is just ML</a>, which I&#8217;m somewhat partial to but is a well-covered topic elsewhere, so I&#8217;ll call it AI/ML and not digress here.</p><div><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thedataplatform.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/thedataplatform.substack.com/subscribe"><span>Subscribe now</span></a></p><div><hr></div><h2><a href="https://www.confluent.io/en-gb/events/current/">Current 2023 Conference Retrospectives</a></h2><p>Current is a streaming/real-time conference hosted by Confluent, which sells arguably the most popular cloud-independent managed streaming product, based on open source Apache Kafka.</p><p>Because Confluent allows any vendor who is related to streaming to attend their event, even their competitors, it is probably the biggest streaming focus conference of the year.</p><p>The two big themes were:</p><ul><li><p> Apache Flink, an open-source combined batch and streaming data analytics library that supports SQL, Python and Java APIs</p></li><li><p>Streaming Databases</p></li></ul><h4>Apache Flink</h4><p>Apache Flink adoption has been growing quickly, and now Confluent has brought out a managed, serverless version of it with a demo at the conference. <strong><a href="/__u/streamingdata.substack.com/p/current-2023">Yaroslav Tkachenko</a></strong> noted that it was disappointing that you could only use it in Confluent Cloud with no bring your own cloud option.</p><p>As mentioned in this newsletter before, Flink could soon become a common element in the data stack, with many vendors like <a href="https://aws.amazon.com/managed-service-apache-flink/">AWS</a>, <a href="https://aiven.io/flink">Aiven</a> and <a href="https://www.ververica.com/">Ververica</a> offering enterprise-ready versions of it now.</p><p>It will be interesting if we see other big vendors (Microsoft, Google, etc.) jump on the Flink bandwagon too.</p><p>Though it does suffer from some headwinds, it often requires Kafka to ingest data into it, and the cost of running both Kafka and Flink at the same time will not be cheap. Also, Databricks and Snowflake both offer streaming analytics now, which looks like an easier option for those not needing streaming first libraries like Flink or super low (sub-second) latencies.</p><p>Also, even though Flink has a SQL API, I don&#8217;t think it&#8217;s really suited for use in Data Analysis: it doesn&#8217;t have direct connectors for Power BI, Tableau, etc., and it doesn&#8217;t have much support for authentication and authorization options in the open source version. It&#8217;s more designed like Spark: only for transforming data, not serving it as well like a Lakehouse/Warehouse, so it requires pushing data elsewhere, likely via the Kafka connector.</p><h4>Streaming Databases</h4><p>While I think Streaming Database suffers from the similar headwinds as Flink, we are seeing a lot of new companies and investment in this sector, so this is one area to watch over the next few years.</p><p><strong>Hubert Delay, </strong>author of <a href="https://www.oreilly.com/library/view/streaming-data-mesh/9781098130718/">Streaming Data Mesh</a> and <a href="https://www.oreilly.com/library/view/streaming-databases/9781098154820/">currently co-writing a book on the topic</a>,<strong> </strong><a href="/__u/hubertdulay.substack.com/p/summarization-of-current-23">explores the topic more</a>.</p><div><hr></div><h3><strong><a href="https://www.theoaklandgroup.co.uk/blog/what-is-the-enviromental-impact-of-your-data7624/">What is the Environmental Impact of Your Data? (Sponsored)</a></strong></h3><p><a href="https://greenly.earth/en-gb/blog/ecology-news/finops-and-greenops-how-do-they-relate">GreenOps</a> is a phrase already thrown around a lot, but expect to hear more of it: climate change is having a bigger impact on our lives every day, and governments are <a href="https://www.pwc.com/us/en/services/esg/library/scope-3-emissions.html">getting tighter on their emissions regulations</a>. </p><p>My colleague <a href="https://www.linkedin.com/in/luke-sharma-95639b92/?originalSubdomain=uk">Luke Sharma</a>, who is Oakland&#8217;s <a href="https://www.linkedin.com/newsletters/the-road-to-green-data-7069293373186039809/">resident expert on GreenOps and Green Data Strategies</a>, gives tips and guidance on how to work towards a mature GreenOps process in your Data Strategy.</p><div><hr></div><h3><a href="https://www.linkedin.com/posts/paul-marcombes_dbt-finops-activity-7115625411715178497-H-kI">Beware of dbt Tests&#8230;. Your Money May Disappear</a></h3><p>Paul Marcombes, Head of Data at <a href="https://nickel.eu/en-be">Nickel</a>, looks at the hidden costs of dbt tests, though I think they can apply to most kinds of Data Quality tests:</p><p>Data Quality is of course important, and keeping costs low is important, but Data Quality tests rarely come for free. So what do you do?</p><p>The difficult answer is to not run a complete set of tests and only run tests that bring the most value. It is a difficult answer, as there&#8217;s no silver bullet but a tradeoff between creating trustworthy data and staying on budget.</p><p>One thing worth also considering is looking at <a href="https://www.mygreatlearning.com/blog/sql-constraints/">SQL constraints</a> to replace some of your testing, which are sometimes called &#8220;free Data Quality tests&#8220;.</p><p>Finally, have a look at Data Quality libraries and products, as they can design their software to run their tests more efficiently than most custom code. I spoke to <a href="/__u/thedataplatform.substack.com/p/issue-23-interview-with-tom-baeyens?utm_source=profile&amp;utm_medium=reader2">Soda CTO Tom Baeyens about this topic in our interview</a>.</p><div><hr></div><h3><a href="https://www.pulumi.com/product/esc/">Pulumi Environments, Secrets, and Configuration</a></h3><p>Managing environments and secrets can be a pain on any reasonably sized platform, as you&#8217;ll be storing configuration for multiple cloud accounts, not to mention 3rd party vendors as well.</p><p>But Pulumi, an <a href="https://www.pulumi.com/what-is/infrastructure-as-code-for-devops/">Infrastructure as Code</a> (IaC) and now <a href="https://www.pulumi.com/blog/developer-portal-platform-teams/">Platform Engineering</a> product, is now offering a feature to store all configurations and secrets in one place.</p><p>While Pulumi has a lot of work to do to knock <a href="https://www.terraform.io/">Terraform</a> from the IaC throne, I would seriously consider it for large, complex platforms.</p><div><hr></div><h3><strong><a href="https://kestra.io/blogs/2023-10-11-why-ingestion-will-never-be-solved">Why data integration will never be fully solved</a></strong></h3><p>Very much onboard with this article, as no-code or low-code data integration solutions like <a href="https://www.fivetran.com/">Fivetran</a> can get you far, but often not all the way, if you can afford them.</p><p>Anna Geller, Product Lead at Kestra, looks at open-source alternatives and their own tradeoffs.</p><div><hr></div><p>Sponsored by <a href="https://www.theoaklandgroup.co.uk/">The Oakland Group</a>, a full-service data consultancy. Download our <a href="https://weare.theoaklandgroup.co.uk/data-platform-guide">guide</a> or <a href="https://www.theoaklandgroup.co.uk/get-in-touch/">contact us</a> if you want to find out more about how we build Data Platforms!</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thedataplatform.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 The Data Platform Journal! 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[How to Build a Data Platform: People & Teams]]></title><description><![CDATA[Roles required, Effective Delivery, Team Design, Communication and Scaling Data Teams.]]></description><link>https://thedataplatform.substack.com/p/how-to-build-a-data-platform-people</link><guid isPermaLink="false">https://thedataplatform.substack.com/p/how-to-build-a-data-platform-people</guid><dc:creator><![CDATA[Jake Watson]]></dc:creator><pubDate>Wed, 11 Oct 2023 11:50:46 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c591c4c4-2595-4980-abe5-a267bfc69965_3032x2021.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Part of my guide on &#8220;How to Build a Data Platform&#8220;:</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;ea38b02f-ba9d-438b-9a80-c7867389220e&quot;,&quot;caption&quot;:&quot;Introduction Like every other introduction to a data white paper will tell you, data in organisations continues to increase in volume, complexity and value. As such, not only do you have to build a data solution that meets the needs of today, but one that can also be efficiently adapted for the future.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;How to Build a Data Platform&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:89369260,&quot;name&quot;:&quot;Jake Watson&quot;,&quot;bio&quot;:&quot;Writer of thedataplatform.substack.com and Principal Data Engineer at The Oakland Group &quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/33014ede-1e81-4376-8e06-b501b31f8e62_316x322.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2023-04-23T11:08:03.584Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/edfe5c6b-2acc-4b97-b17e-69eb4a64d57c_4400x2800.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://thedataplatform.substack.com/p/how-to-build-a-data-platform&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:116521620,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:8,&quot;comment_count&quot;:3,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;The Data Platform Journal&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9a1464c-b7ea-4563-98b2-179a65115c10_412x412.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><h3><br>Introduction</h3><p>Unless ChatGPT manages to figure out how to automatically make Data Platforms from a text prompt, you&#8217;ll need people to build your Data Platform.</p><p>More than that, you&#8217;ll need a team of people that can work well together to deliver your Data Platform successfully. So first we ask, what roles do we need to build a Data Platform?</p><h3><strong>So, What Roles are often involved in building a Data Platform?</strong></h3><ul><li><p>Data Engineers and/or Analytics Engineers</p></li><li><p>Cloud and/or Platform Engineers</p></li><li><p>Data Architects</p></li><li><p>Solution Architects</p></li><li><p>Data Analysts</p></li><li><p>Data Scientists and / or Machine Learning Engineers</p></li><li><p>IT Administrators</p></li><li><p>Support Engineers</p></li><li><p>Security Experts</p></li><li><p>Business Analysts</p></li><li><p>Subject Matter Experts (SME)</p></li><li><p>Product or Project Manager</p></li><li><p>Budget Holder, Data Owner, and/or Product Owner</p></li><li><p>Senior or Executive Management </p></li></ul><p>That&#8217;s a lot of roles! Note that most of the above will only work for days or even hours on the Data Platform, but they are vitally important none the less.</p><p>Also, many roles will be filled by the same person; in fact, we recommend generalists over specialists to make your data teams more resilient to business and staff changes. Though beware of overextending this; if a person wears to many hats, they&#8217;ll more likely get burned out from all the context switching.</p><p>As you may of guessed from the above, building a successful Data Platform requires a lot of teamwork and collaboration, so the focus of this section is on how to get people working as a cohesive, engaged team to deliver a Data Platform or Product, in a reliable but efficient manner.</p><p>So what guidelines are there for effective software delivery?</p><h3><strong>Delivery</strong></h3><p>There are many frameworks for delivering software: <a href="https://www.projectmanager.com/guides/waterfall-methodology">Waterfall</a>, <a href="https://scaledagile.com/what-is-safe/">SAFe</a>, <a href="https://www.scrum.org/learning-series/what-is-scrum">Scrum</a>, <a href="https://kanbanize.com/kanban-resources/getting-started/what-is-kanban">Kanban</a> and lots more. I (and my employer, <a href="https://www.theoaklandgroup.co.uk/">Oakland</a>) do not have &#8220;one delivery method to rule&#8221; unlike other consultancies, but prefer picking the best framework for the project, product, or organisation at that point in time.</p><p>There is also nothing wrong with changing frameworks to suit your needs, say, from fast-build Proof of Concepts (PoCs) to slower, more audited production changes, other than the time taken to change.</p><p>Also, feel free to adapt the delivery to your needs; a delivery framework is just guidance, not a set of instructions. Though do note that your organisation may mandate a delivery method you have to adhere to.</p><p>The one required rule of agile to remember is to regularly reflect on work done to see how your team can improve in the future. Most agile framework diagrams are in a cycle, to reflect the commonly held wisdom that the most effective delivery is one that constantly adapts and learns from its experience.</p><p>Effective delivery also requires automation of common tasks, which we cover in the <a href="/__u/thedataplatform.substack.com/p/how-to-build-a-data-platform-dataops">DataOps</a> section. Using metrics from DataOps as well as <a href="https://www.gallup.com/workplace/285674/improve-employee-engagement-workplace.aspx">team engagement</a> can help you quantitatively work out if the changes you&#8217;re making are having a positive impact.</p><p>I would argue the most important organisational unit when it comes to delivery is the delivery team. So, assess people based on how they contribute to the team, not on individual metrics like lines of code written. </p><p>But what does a good data team look like?</p><h3>Designing Teams</h3><p>Ideally, aim for three to eight people per team:</p><ul><li><p>Avoid large teams (more than eight people) where possible. If a Data Platform build requires more than eight people, split up the teams to focus on an aspect of the platform (more on scaling teams later on).</p><ul><li><p>It is generally too hard for a large team to keep track of everything at a deep and meaningful level, leading to increased levels of burnout and miscommunications.</p></li><li><p>Plus, no one likes to be in a 20 person daily standup that takes an hour and 90% of it&#8217;s content has little direct relevance to them.</p></li></ul></li><li><p>On the other side, teams of one to two people long term can make for lonely experiences and aren&#8217;t very resilient if one person goes off sick or gets pulled away to fix organisational emergencies, for example.</p></li></ul><p>Try to split teams across Business Domain and then Products or Projects rather than role types; ideally, you want your team to design, build, and maintain an entire data solution together from start (source data) to end (reports) and not have to hand it off to other teams where information and context get lost.</p><p>As the number of teams grow, you may add cross-organizational services like monitoring and malware detection, managed by other teams (usually platforms).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!Orlq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dd97911-841b-48a2-aeb9-aafe381dc4c7_2475x975.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!Orlq!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dd97911-841b-48a2-aeb9-aafe381dc4c7_2475x975.png 424w, /__u/substackcdn.com/image/fetch/$s_!Orlq!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dd97911-841b-48a2-aeb9-aafe381dc4c7_2475x975.png 848w, /__u/substackcdn.com/image/fetch/$s_!Orlq!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dd97911-841b-48a2-aeb9-aafe381dc4c7_2475x975.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Orlq!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dd97911-841b-48a2-aeb9-aafe381dc4c7_2475x975.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!Orlq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dd97911-841b-48a2-aeb9-aafe381dc4c7_2475x975.png" width="1456" height="574" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8dd97911-841b-48a2-aeb9-aafe381dc4c7_2475x975.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:574,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:39004,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!Orlq!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dd97911-841b-48a2-aeb9-aafe381dc4c7_2475x975.png 424w, /__u/substackcdn.com/image/fetch/$s_!Orlq!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dd97911-841b-48a2-aeb9-aafe381dc4c7_2475x975.png 848w, /__u/substackcdn.com/image/fetch/$s_!Orlq!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dd97911-841b-48a2-aeb9-aafe381dc4c7_2475x975.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Orlq!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dd97911-841b-48a2-aeb9-aafe381dc4c7_2475x975.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">Source: Jake Watson</figcaption></figure></div><p>We do note, however, that changing organisation structure is often very hard, if not impossible, in the short and medium term, so if you can&#8217;t change your team structure, be aware of it&#8217;s limitations and plan appropriately. In fact, changing teams too much is an anti-pattern; it usually takes a few months for a new team to reach maximum efficiency once they learn how to work together in the most effective way.</p><h3>Communication and Meetings</h3><p>If you speak to most engineers, they&#8217;ll complain that they are into many meetings; however, Project Managers often complain that they don&#8217;t get enough updates from engineers!</p><p>So there is a gap that must be bridged: making sure engineers are not attending unnecessary meetings, but also making sure engineers are updating progress on at least a daily basis so the project budget holders know we are making progress on a project while spending their money.</p><p>For me personally, I try to lean towards overcommunicating. I think the risk of colleagues taking the wrong action because they missed an important update is higher than the risk of colleagues getting annoyed because I&#8217;m communicating too much.</p><h3><strong>Scaling Data Team(s): from one person to many teams</strong></h3><ol><li><p>Your first data hire(s) should normally be a Data Analyst or Analytics Engineer: focus on the data outputs or outcomes first. You&#8217;ll likely want to bring in project management and business analysis experts, even if they are only part-time.</p></li><li><p>After you&#8217;ve hired a few Analysts, you may want to apply some software engineering and/or manage data at scale, so you&#8217;ll likely hire some Data Engineers.</p><ol><li><p>Roughly here is where you think about building data platforms.</p></li></ol></li><li><p>Once your team grows beyond approx. eight people, look to split them up into two teams, each with a manager, both likely reporting to a &#8220;Head of Data&#8221; or similar title.</p></li><li><p>Once you&#8217;ve hired enough people to make more than four to eight teams, you may need to add another layer of management.</p></li><li><p>Try to split the teams along Data Products (or, next best, projects); the easiest way is to have one team = one Data Product.</p><ol><li><p>Multiple teams on one product increase the chance of handoffs and blockers, which increases blocking. Look at splitting up the product if possible.</p></li><li><p>On the other hand, if one team is working on multiple products, it increases cognitive load, which leads to more burnout and expensive context switching. Teams are usually fine with two to three simple products and rarely more than one complex product.</p></li></ol></li><li><p>As you grow in the number of Data Products, you&#8217;ll want to provide them with consistent cross-organisational services such as (Cloud) Platform Engineering, Data Governance, Monitoring, etc. to reduce repetition.</p></li></ol><h3>Summary</h3><p>A reasonably big section, but only touches the surface of effectively running a data team. I haven&#8217;t covered:</p><ul><li><p>In person vs. remote working</p></li><li><p>Comparison of delivery methodologies</p></li><li><p>Office design</p></li><li><p>Delivery estimation</p></li><li><p>Setting personal and team goals (<a href="/__u/thedataplatform.substack.com/i/121005506/set-goals-to-aim-for">though I have a section on product goals</a>). </p></li><li><p>Documentation (<a href="/__u/thedataplatform.substack.com/i/127324234/how-do-i-capture-decisions">though I have a section on documenting architectural decisions</a>)</p></li></ul><p>Feel free to reach out in the comments or in a <a href="https://www.linkedin.com/in/jake-watson-data/">private message on LinkedIn</a> if you have any questions or suggestions!</p><p>Finally, here is some research into this topic that has been a major help to me over the years and that I recommend to others:</p><ul><li><p> <a href="https://press.stripe.com/an-elegant-puzzle">An Elegant Puzzle: Systems of Engineering Management</a> by Will Larson</p></li><li><p><a href="https://teamtopologies.com/book">Team Topologies</a> by Matthew Skelton and Manuel Pais</p></li><li><p><a href="https://www.youtube.com/watch?v=ZFKqlfJiGEQ">What Your Mother Never Told You About Agile Development</a> by Aino Vonge Corry</p></li></ul><p>I&#8217;d also like to thank <a href="https://www.linkedin.com/in/hannahcvarley/">Hannah Varley-Fodden</a> and <a href="https://www.linkedin.com/in/lynne-o-donnell-29339180/">Lynne O'Donnell</a> for reviewing this post and providing valuable feedback. </p><div><hr></div><p>Sponsored by <a href="https://www.theoaklandgroup.co.uk/">The Oakland Group</a>, a full service data consultancy. Download our <a href="https://weare.theoaklandgroup.co.uk/data-platform-guide">guide</a> or <a href="https://www.theoaklandgroup.co.uk/get-in-touch/">contact us</a> if you want to find out more about how we build Data Platforms!</p><p>Cover Photo by <a href="https://unsplash.com/@jannerboy62?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Nick Fewings</a> on <a href="https://unsplash.com/photos/9Hv7vf2n2LI?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Unsplash</a></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thedataplatform.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 The Data Platform Journal! 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[Issue #28: Fancy Data Stack and Data Contract Retrospectives]]></title><description><![CDATA[Plus: SRE Insights, Elementary for dbt, Principles of Data layers in Data Platform, and Data - The Land DevOps Forgot]]></description><link>https://thedataplatform.substack.com/p/issue-28-fancy-data-stack-and-data</link><guid isPermaLink="false">https://thedataplatform.substack.com/p/issue-28-fancy-data-stack-and-data</guid><dc:creator><![CDATA[Jake Watson]]></dc:creator><pubDate>Wed, 04 Oct 2023 12:14:29 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/222fcb47-1d69-42da-9059-5ad5f0e5b791_3872x2592.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>No article from me this week, as I&#8217;m super busy, but I've built up a big enough backlog of great videos and articles that I&#8217;m keen to share:</p><ul><li><p>The Fancy Data Stack - Batch Version</p></li><li><p>Data Contracts at GoCardless - 6 Months On</p></li><li><p>Not My Circus, Not My Monkeys Newsletter</p></li><li><p>Is Data Mesh Only for Analytical Data?</p></li><li><p>Are You Using Elementary for DBT?</p></li><li><p>Principles of Data Layers in Data Platform</p></li><li><p>Data - The Land DevOps Forgot</p></li></ul><p>I will also point out that my <a href="/__u/thedataplatform.substack.com/p/how-to-build-a-data-platform">&#8220;How to Build a Data Platform&#8220;</a> guide is almost done, with only one article to publish that <em>should</em> go out next week. So click the link above if you&#8217;ve recently subscribed and haven&#8217;t already seen them.</p><p>Also, leave a comment if I&#8217;ve missed any major elements of building a Data Platform, as the long-term plan is to go back and update the guide over time.</p><div><hr></div><h3><a href="https://www.blef.fr/the-fancy-data-stack/">The Fancy Data Stack - Batch Version</a></h3><p>This is a great idea by Christophe Blefari, a Senior Data Engineer, who presents his &#8220;ideal&#8221; data stack with few constraints. I find his choices and reasoning to be on point, though I will say every organisation is different, so it will have different &#8220;ideal&#8221; stacks.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!jB8_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5304288-b889-4dba-8b8f-3508b167b3b2_2000x839.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!jB8_!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5304288-b889-4dba-8b8f-3508b167b3b2_2000x839.png 424w, /__u/substackcdn.com/image/fetch/$s_!jB8_!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5304288-b889-4dba-8b8f-3508b167b3b2_2000x839.png 848w, /__u/substackcdn.com/image/fetch/$s_!jB8_!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5304288-b889-4dba-8b8f-3508b167b3b2_2000x839.png 1272w, /__u/substackcdn.com/image/fetch/$s_!jB8_!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5304288-b889-4dba-8b8f-3508b167b3b2_2000x839.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!jB8_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5304288-b889-4dba-8b8f-3508b167b3b2_2000x839.png" width="1456" height="611" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b5304288-b889-4dba-8b8f-3508b167b3b2_2000x839.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:611,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!jB8_!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5304288-b889-4dba-8b8f-3508b167b3b2_2000x839.png 424w, /__u/substackcdn.com/image/fetch/$s_!jB8_!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5304288-b889-4dba-8b8f-3508b167b3b2_2000x839.png 848w, /__u/substackcdn.com/image/fetch/$s_!jB8_!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5304288-b889-4dba-8b8f-3508b167b3b2_2000x839.png 1272w, /__u/substackcdn.com/image/fetch/$s_!jB8_!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5304288-b889-4dba-8b8f-3508b167b3b2_2000x839.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">Source: https://www.blef.fr/the-fancy-data-stack/</figcaption></figure></div><div><hr></div><h3><a href="https://medium.com/gocardless-tech/data-contracts-at-gocardless-6-months-on-bbf24a37206e">Data Contracts at GoCardless - 6 Months On</a></h3><p>Andrew Jones, author of a <a href="https://www.packtpub.com/product/driving-data-quality-with-data-contracts/9781837635009">book on Data Contracts</a>, which has many great reviews, has written a retrospective on implementing Data Contracts at <a href="https://gocardless.com/">GoCardless</a>, an online payment processor with $30 billion in transactions in 2022.</p><div><hr></div><h3><a href="/__u/notmycircus.substack.com/">Not My Circus, Not My Monkeys Newsletter</a></h3><p>Site Reliability Engineering Coach and ex-Colleague of mine, Mark Ellens, has started regularly posting great insights into Monitoring, DevOps and Testing for the last few months, based on his vast experience of building and maintaining modern, large software systems.</p><p>It also often crosses paths into data often (what doesn&#8217;t! ;D). Highly recommended!</p><div><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thedataplatform.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/thedataplatform.substack.com/subscribe"><span>Subscribe now</span></a></p><div><hr></div><h3><strong><a href="https://piethein.medium.com/is-data-mesh-only-for-analytical-data-8456f6207a41">Is Data Mesh Only for Analytical Data?</a></strong></h3><p>Piethein Strengholt, author of <a href="https://learning.oreilly.com/library/view/data-management-at/9781098138851/">Data Management at Scale</a> (see my glowing review here), has another great article.</p><p>I&#8217;ll digress here by saying the first draft of my article on Data Mesh vs. Fabric and Centralised Architectures did include how a Data Mesh can, in theory, mix both operational and analytics system outputs where it makes sense, but I wimped out and took it out. I wish I left it in now!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!-ctb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F634a1e58-f435-4f9b-84a2-db423a769b24_1250x705.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!-ctb!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F634a1e58-f435-4f9b-84a2-db423a769b24_1250x705.png 424w, /__u/substackcdn.com/image/fetch/$s_!-ctb!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F634a1e58-f435-4f9b-84a2-db423a769b24_1250x705.png 848w, /__u/substackcdn.com/image/fetch/$s_!-ctb!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F634a1e58-f435-4f9b-84a2-db423a769b24_1250x705.png 1272w, /__u/substackcdn.com/image/fetch/$s_!-ctb!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F634a1e58-f435-4f9b-84a2-db423a769b24_1250x705.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!-ctb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F634a1e58-f435-4f9b-84a2-db423a769b24_1250x705.png" width="1250" height="705" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/634a1e58-f435-4f9b-84a2-db423a769b24_1250x705.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:705,&quot;width&quot;:1250,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!-ctb!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F634a1e58-f435-4f9b-84a2-db423a769b24_1250x705.png 424w, /__u/substackcdn.com/image/fetch/$s_!-ctb!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F634a1e58-f435-4f9b-84a2-db423a769b24_1250x705.png 848w, /__u/substackcdn.com/image/fetch/$s_!-ctb!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F634a1e58-f435-4f9b-84a2-db423a769b24_1250x705.png 1272w, /__u/substackcdn.com/image/fetch/$s_!-ctb!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F634a1e58-f435-4f9b-84a2-db423a769b24_1250x705.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">Source: https://piethein.medium.com/is-data-mesh-only-for-analytical-data-8456f6207a41</figcaption></figure></div><p>From my experience, I&#8217;d still setup separate deployment areas (Azure Resource Groups) for security and DevOps reasons, but the outputs can be combined if there is a good business requirement for it and ideally have the same data owner(s).</p><div><hr></div><h3><strong><a href="https://leo-godin.medium.com/are-you-using-elementary-for-dbt-f9a56ecbef42">Are You Using Elementary for DBT?</a></strong></h3><p>Lead Data Engineer at <a href="https://newrelic.com/">New Relic</a>, Leo Godin, presents a convincing argument for Elementary if you want more observability, alerting, and testing tools in your <a href="https://www.getdbt.com/product/what-is-dbt">dbt</a> transformations.</p><div><hr></div><h3><strong><a href="https://medium.com/@sivailango.s/principles-of-data-layers-in-data-platform-a336a0ff9e1e">Principles of Data Layers in Data Platform</a></strong></h3><p>Siva Ilango, Principal Data Architect at <a href="https://jmangroup.com/">JMAN Group</a>, has put together a great diagram of Data Modelling layers and what kind of data model best suits that layer:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!3hVn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dc950b1-e5b6-4ddc-bcaf-9db4dc440447_1250x642.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!3hVn!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dc950b1-e5b6-4ddc-bcaf-9db4dc440447_1250x642.png 424w, /__u/substackcdn.com/image/fetch/$s_!3hVn!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dc950b1-e5b6-4ddc-bcaf-9db4dc440447_1250x642.png 848w, /__u/substackcdn.com/image/fetch/$s_!3hVn!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dc950b1-e5b6-4ddc-bcaf-9db4dc440447_1250x642.png 1272w, /__u/substackcdn.com/image/fetch/$s_!3hVn!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dc950b1-e5b6-4ddc-bcaf-9db4dc440447_1250x642.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!3hVn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dc950b1-e5b6-4ddc-bcaf-9db4dc440447_1250x642.png" width="1250" height="642" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9dc950b1-e5b6-4ddc-bcaf-9db4dc440447_1250x642.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:642,&quot;width&quot;:1250,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!3hVn!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dc950b1-e5b6-4ddc-bcaf-9db4dc440447_1250x642.png 424w, /__u/substackcdn.com/image/fetch/$s_!3hVn!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dc950b1-e5b6-4ddc-bcaf-9db4dc440447_1250x642.png 848w, /__u/substackcdn.com/image/fetch/$s_!3hVn!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dc950b1-e5b6-4ddc-bcaf-9db4dc440447_1250x642.png 1272w, /__u/substackcdn.com/image/fetch/$s_!3hVn!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dc950b1-e5b6-4ddc-bcaf-9db4dc440447_1250x642.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">Source: https://medium.com/@sivailango.s/principles-of-data-layers-in-data-platform-a336a0ff9e1e</figcaption></figure></div><p>The article is also a great read, with lots of great Data Architecture advice.</p><div><hr></div><h3><strong><a href="https://www.youtube.com/watch?v=459-H33is6o">Data - The Land DevOps Forgot</a></strong></h3><p>Great video from Michael Nygard, VP of Data Engineering at a large Latin American bank, <a href="https://nubank.com.br/en/">Nubank</a>, on how data comes with extra issues with integrating DevOps and how <a href="https://martinfowler.com/articles/data-monolith-to-mesh.html">Data Mesh</a> can help.</p><p>It also covers a lot of real-world pain issues with Data Meshes too, so far away from another Data Mesh sales pitch.</p><div><hr></div><h3><a href="https://www.linkedin.com/posts/jake-thomas_duckdb-activity-7110630962144649216-SZtg/">We&#8217;re Now Starting to See Major Companies Implementing DuckDB as their Data Warehouse</a></h3><p>In this case, <a href="https://www.okta.com/uk/">Okta</a>. While I don&#8217;t think many enterprises will consider <a href="https://duckdb.org/">DuckDB</a>, it is definitely worth keeping tabs on it to see if a lot of more tech-centric companies adopt it and if it becomes a game changer for them.</p><div><hr></div><p>Sponsored by <a href="https://www.theoaklandgroup.co.uk/">The Oakland Group</a>, a full-service data consultancy. Download our <a href="https://weare.theoaklandgroup.co.uk/data-platform-guide">guide</a> or <a href="https://www.theoaklandgroup.co.uk/get-in-touch/">contact us</a> if you want to find out more about how we build Data Platforms!</p><p>Photo by <a href="https://unsplash.com/@annadziubinska?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Anna Dziubinska</a> on <a href="https://unsplash.com/photos/mVhd5QVlDWw?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Unsplash</a></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thedataplatform.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 The Data Platform Journal! 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[How to Build a Data Platform: Data Governance]]></title><description><![CDATA[Why is Data Governance important?, "Agile" Data Governance, Ownership Over Tooling and Do I Need a Data Catalog]]></description><link>https://thedataplatform.substack.com/p/how-to-build-a-data-platform-data-c2c</link><guid isPermaLink="false">https://thedataplatform.substack.com/p/how-to-build-a-data-platform-data-c2c</guid><pubDate>Thu, 28 Sep 2023 12:46:50 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c7941860-92e7-4813-ac4d-4715e27cbc52_2048x1536.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3>Introduction</h3><p>I&#8217;ve worn a number of hats in my career, but Data Governance isn&#8217;t one of them, so I can&#8217;t claim to be an expert. </p><p>That said, I have implemented governance controls on many Data Platforms, have opinions about it and don&#8217;t think I can talk about &#8220;How to Build a Data Platform&#8221; without mentioning Data Governance in good conscience, as I feel all data solutions benefit from some governance.</p><p>See this as an &#8220;Architects or Engineers guide to Data Governance&#8221; rather than any deep dive into Data Governance, for that, <a href="https://www.theoaklandgroup.co.uk/resources/building-a-data-governance-program-by-stealth-the-lighthouse-concept/">I&#8217;d check out my colleagues expert in-depth guide</a>.</p><h3><strong>Why is Data Governance important?</strong></h3><p>Data Governance is often the last thing on an engineer&#8217;s or analyst&#8217;s mind while being swamped with stakeholder requests that needed to be answered yesterday.</p><p>But it&#8217;s likely they got into that situation partly because of a lack of governance: </p><ul><li><p>Stakeholders can&#8217;t discover data on their own will instead ask an overworked data team.</p></li><li><p>Lack of data documentation inside the data team, which increases <a href="https://www.forbes.com/sites/ciocentral/2012/08/10/whats-your-time-to-insight/?sh=5422c3fd1865">time to insight</a> and generally making the data team miserable because everything is harder to do than it should be.</p></li><li><p>Unclear data access specifications mean it takes weeks, months or even years to get access to data that should only take hours to get access to.</p></li><li><p>There is no clear data ownership on data assets, so data access requests are a slow or impossible task and a lack of updates to data means it becomes a <a href="https://en.wikipedia.org/wiki/Legacy_system">legacy</a> dataset.</p></li><li><p>Little or no usage metrics are collected on data assets, which means investment in data decisions requires more effort and is more likely to be spent incorrectly.</p></li><li><p>Not enough Data Quality, so the data requires more work to do analysis on. </p></li></ul><p>I would argue data with a lack of governance is like software <a href="https://en.wikipedia.org/wiki/Technical_debt">technical debt</a>, so in this case <a href="https://www.secoda.co/blog/staying-ahead-of-data-debt">data debt</a>, okay in small amounts, but can soon build up enough to become a millstone around the data team, if not the whole organisation, making everyone more inefficient.</p><p>I haven&#8217;t even mentioned the security and legal compliance aspects of Data Governance: if you collect personal data and have improper governance, you are at risk of embarrassing and costly data breaches and / or legal action.</p><h3><strong>Govern what you use, not every data asset you have</strong></h3><p>But comprehensive Data Governance in a large organisation is often expensive, and there is never enough budget, right? </p><p>One way to combat this is start governing data that is only actively used (in reports, dashboards, etc.). Once you have a handle on actively used data, then look at data not used often or at all with a view of seeing you can delete it without any impacts (though this can be done through <a href="https://www.theoaklandgroup.co.uk/blog/how-to-manage-spiraling-cloud-costs/">FinOps</a> efforts too).</p><p>It&#8217;s also worthwhile adopting agile strategy of starting in one area and getting feedback on what worked and didn&#8217;t work before rolling it out to other areas of the organisation.</p><h3>Data Ownership and Standards Are More Important Than Tooling</h3><p>I know, right, an engineer recommending less focus on tooling? Wild.</p><p>I&#8217;ve seen many Data Governance initiatives fail due to the organisation buying a fancy Data Catalog and then not doing enough work to make the Catalog an essential part of the organisation&#8217;s data ecosystem.</p><p>To help with that, we recommend implementing data ownership across all essential data and then implementing robust standards and processes, locally by the data owners themselves and globally by a central data team.</p><p>Data Owners (<a href="https://atlan.com/data-governance-roles-and-responsibilities/">or Stewards or Custodians</a>) mean someone (or a team) is responsible for the data assets: quality, documentation, security, and access, helping resolve many of the issues we spoke about at the top of the article.</p><p>After that, I&#8217;d look at implementing a cross-organisation <a href="https://guides.lib.unc.edu/metadata/standards">metadata model or schema</a> for all governed assets so that minimum Data Governance requirements are set. There may also be local policies set to extend the enterprise metamodel, like Finance wanting certain metadata tracked for legal reasons.</p><p>The metadata model can look like a <a href="https://open-data-product-initiative.github.io/open-data-product-spec-2.0/#hello-world-example">complex, nested JSON document</a>, but it can also be three tables in a spreadsheet: data sources, tables and columns.</p><p>Both of the above are often easier to do before adopting any tooling (re-factoring configuration is usually harder than starting from scratch) and still provide benefits if your tooling is only partly implemented or not at all. </p><p>With active data owners, you&#8217;ll have all data assets kept up-to-date in any tooling, and a consistent metadata model makes it easier to import and maintain any metadata in tooling.</p><h3>Do I need a Data Governance Framework?</h3><p>I know that setting out to build a framework for anything requires time, and you&#8217;ll have many competing concerns, so I understand if you feel reluctant to build one, especially if you are a small team with a limited budget.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!Afe8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F093a218e-5ad0-49bf-a0ab-7c301a15f125_1758x1632.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!Afe8!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F093a218e-5ad0-49bf-a0ab-7c301a15f125_1758x1632.png 424w, /__u/substackcdn.com/image/fetch/$s_!Afe8!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F093a218e-5ad0-49bf-a0ab-7c301a15f125_1758x1632.png 848w, /__u/substackcdn.com/image/fetch/$s_!Afe8!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F093a218e-5ad0-49bf-a0ab-7c301a15f125_1758x1632.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Afe8!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F093a218e-5ad0-49bf-a0ab-7c301a15f125_1758x1632.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!Afe8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F093a218e-5ad0-49bf-a0ab-7c301a15f125_1758x1632.png" width="502" height="466.14285714285717" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/093a218e-5ad0-49bf-a0ab-7c301a15f125_1758x1632.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1352,&quot;width&quot;:1456,&quot;resizeWidth&quot;:502,&quot;bytes&quot;:319522,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!Afe8!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F093a218e-5ad0-49bf-a0ab-7c301a15f125_1758x1632.png 424w, /__u/substackcdn.com/image/fetch/$s_!Afe8!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F093a218e-5ad0-49bf-a0ab-7c301a15f125_1758x1632.png 848w, /__u/substackcdn.com/image/fetch/$s_!Afe8!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F093a218e-5ad0-49bf-a0ab-7c301a15f125_1758x1632.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Afe8!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F093a218e-5ad0-49bf-a0ab-7c301a15f125_1758x1632.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">Oakland Data Governance Framework Source: Oakland Group</figcaption></figure></div><p>But there comes a point where fighting lots of local battles with Data Governance becomes more inefficient than building out a framework to reduce Data Governance issues over the long term.<br><br>Like I mentioned at the start of the post, I&#8217;m not going to go in depth on frameworks, but I will say that whatever framework you use, make sure it&#8217;s cyclical so that it&#8217;s always improving and you are acting on any emerging issues in a timely manner.</p><h3><strong>You Might Not Even Need Fancy Expensive Tooling</strong></h3><p>Another budget hack is to just use a spreadsheet, which should do the job in a small Data Platform, especially if you have a low number of schema changes (a few times a month). The downside is that you can&#8217;t easily track who has changed what in the spreadsheet, which is itself a Data Governance concern&#8230;</p><p>Another option is to import metadata into a database or data lake, which is more work to setup but allows for more scale than a spreadsheet and can potentially track changes. </p><p>For cheap metadata visualisation and discovery, think about importing governance metadata into a Business Intelligence (BI) application like Power BI / Tableau so metadata can be discovered alongside the reports and dashboards.</p><h3><strong>What is Data Catalog and / or Data Discovery Software and do I Need It?</strong></h3><p>The main point of Data Catalogs (or the more aspirational title &#8220;Data Discovery&#8220;) is to collect metadata of data assets, including data ownership, column, and table names, import them into a data store (often <a href="https://atlas.apache.org/#/Architecture">graph-based</a>) and then combine that with a User Interface (UI) to search by key terms so users can discover data.</p><p>But Data Catalog software can often seem expensive, starting at hundreds of pounds per month that can scale rapidly up. Why? Because they have many components that need to work well together: Search Engine, Relational Database, Web Server for User Interface, a Graph Database and maybe a Streaming Cluster. Collectively, this costs a lot to run.</p><p>I wouldn&#8217;t recommend building your own unless you have at least a few million dollars or pounds to burn (though some still do, as Data Governance is a bit different in every organisation, making it hard to find the tooling that exactly matches your requirements).</p><p>So are they worth bothering with? </p><p>At a large scale, yes, data discovery software has powerful search engines that search over millions of data assets in fractions of a second, which might take a long time or be impossible to search for in a normal spreadsheet or database.</p><p>They also often have:</p><ul><li><p>Integrations with popular data sources, making metadata import much easier to setup.</p></li><li><p><a href="https://en.wikipedia.org/wiki/Data_lineage">Data Lineage</a>.</p></li><li><p>Real-time updates. </p></li><li><p>Actions that are sent to Teams or Slack if there are any important metadata changes or issues.</p></li><li><p>Integration with Data Quality tooling like Great Expectations.</p></li><li><p>Automatic Personal Identifying Information (PII) detection.</p></li><li><p><a href="https://www.secoda.co/secoda-ai">Some now even use AI to generate documentation for you</a>.</p></li></ul><p>One interesting trend we&#8217;re also seeing is getting Data Catalogs for &#8220;free&#8221; alongside other data solutions (<a href="https://www.databricks.com/product/unity-catalog">Databricks Unity Catalog</a>, <a href="https://www.montecarlodata.com/blog-data-observability-first-data-catalog-second-heres-why/">Monte Carlo</a>, <a href="https://www.starburst.io/platform/features/gravity/">Starburst Gravity</a> and <a href="https://docs.dagster.io/concepts/webserver/ui#asset-catalog">Dagster Asset Catalog</a>) as "Data Catalog lite". </p><p>They lack many features found in a bespoke Data Catalog, but can help data teams have a smaller, cheaper on-ramp into Data Catalogs without buying another product to maintain.</p><h3>Summary</h3><p>As mentioned at the top, this is only a lightweight summary of Data Governance and we did not cover:</p><ul><li><p>Data Culture</p></li><li><p>Data Literacy</p></li><li><p>All the Data Governance Roles</p></li><li><p>Data Quality (though have a upcoming section on this)</p></li></ul><p>That said, my takeaways are:</p><ul><li><p>All Data Projects / Products and Platforms benefit from at least a little bit of Data Governance</p></li><li><p>Start small and don&#8217;t initially focus on governing all the data.</p></li><li><p>Ownership and Standards should ideally exist before starting to look at any tooling</p></li><li><p>Once you do implement tooling for governance, there are a variety of options, from a simple spreadsheet to an enterprise Data Catalog that costs millions per year in licences.</p></li></ul><p>I think my last comment on this is that, like Data Quality, successful Data Governance requires effort from all of the organisation, not just Data Governance professionals.</p><p>If you have any questions or comments on this article, leave a comment below!</p><div><hr></div><p>Sponsored by <a href="https://www.theoaklandgroup.co.uk/">The Oakland Group</a>, a full service data consultancy. Download our <a href="https://weare.theoaklandgroup.co.uk/data-platform-guide">guide</a> or <a href="https://www.theoaklandgroup.co.uk/get-in-touch/">contact us</a> if you want to find out more about how we build Data Platforms!</p><p>Cover photo by <a href="https://unsplash.com/@fabioha?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">fabio</a> on <a href="https://unsplash.com/photos/oyXis2kALVg?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thedataplatform.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 The Data Platform Journal! 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[Issue #27: What Should We "Shift Left" On?]]></title><description><![CDATA[Plus: The State of Databases Today, Serverless is Still Not Designed for Data, Why Prices are Still Going Up, Apache Kafka as System of Record and Why hasn't Streaming Overtaken Batch?]]></description><link>https://thedataplatform.substack.com/p/issue-27-what-should-we-shift-left</link><guid isPermaLink="false">https://thedataplatform.substack.com/p/issue-27-what-should-we-shift-left</guid><dc:creator><![CDATA[Jake Watson]]></dc:creator><pubDate>Tue, 19 Sep 2023 10:53:03 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/59d32df9-886c-4458-9582-d77b51d9ed20_4032x2688.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi all, this week we have:</p><ul><li><p>What Should We "Shift Left" On?</p></li><li><p>Podcast: The State of Databases Today</p></li><li><p>Serverless is Still Not Designed for Data</p></li><li><p>Why Prices are Still Going Up When Companies are Spending Less?</p></li><li><p>Ditching Databases for Apache Kafka as System of Record</p></li><li><p>They Said Streaming Would Overtake Batch.</p></li></ul><div><hr></div><h3>What Should We "Shift Left" On?</h3><p>There is a lot of talk of &#8220;<a href="https://devopedia.org/shift-left">shifting left</a>&#8221; on a number of aspects of a data platform or product. But what is shifting left? Simply put, it is building a feature at the start of a project's or product's development that is normally built late in development. And if you want examples, I have some below:</p><ul><li><p>Shifting left on testing has been around since at least <a href="https://www.drdobbs.com/shift-left-testing/184404768">2001</a> and has it&#8217;s own <a href="https://en.wikipedia.org/wiki/Shift-left_testing">Wikipedia page</a>.</p></li><li><p><a href="https://devops.com/devops-shift-left-avoid-failure/">Shifting left on DevOps has also been around for awhile</a>.</p></li><li><p><a href="https://www.datafold.com/blog/shifting-data-quality-to-the-left-a-four-level-framework">Many data quality vendors talk about how they can help you shift left</a>.</p></li><li><p><a href="https://engineering.linkedin.com/blog/2022/shifting-left-on-governance--datahub-and-schema-annotations">So do some data governance vendors</a>.</p></li><li><p>And while I couldn&#8217;t find any data modelling articles on shifting left, there has been a lot of complaining about the possible trend towards less data modelling, <a href="/__u/joereis.substack.com/p/boring-is-back-the-longer-rant">especially lack of conceptual modelling</a>, which is also typically done at the start of development.</p></li><li><p>Also <a href="https://snyk.io/learn/shift-left-security/">security</a>, though if you&#8217;re putting sensitive data into your MVP, then I&#8217;d argue security should built in from the start.</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_!yUx3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed8923f4-389a-412b-8a4f-783ba2dd4ce3_1024x436.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!yUx3!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed8923f4-389a-412b-8a4f-783ba2dd4ce3_1024x436.png 424w, /__u/substackcdn.com/image/fetch/$s_!yUx3!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed8923f4-389a-412b-8a4f-783ba2dd4ce3_1024x436.png 848w, /__u/substackcdn.com/image/fetch/$s_!yUx3!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed8923f4-389a-412b-8a4f-783ba2dd4ce3_1024x436.png 1272w, /__u/substackcdn.com/image/fetch/$s_!yUx3!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed8923f4-389a-412b-8a4f-783ba2dd4ce3_1024x436.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!yUx3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed8923f4-389a-412b-8a4f-783ba2dd4ce3_1024x436.png" width="1024" height="436" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ed8923f4-389a-412b-8a4f-783ba2dd4ce3_1024x436.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:436,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Shift Left is about doing things earlier in the development cycle. Source: van der Cruijsen 2017.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Shift Left is about doing things earlier in the development cycle. Source: van der Cruijsen 2017." title="Shift Left is about doing things earlier in the development cycle. Source: van der Cruijsen 2017." srcset="/__u/substackcdn.com/image/fetch/$s_!yUx3!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed8923f4-389a-412b-8a4f-783ba2dd4ce3_1024x436.png 424w, /__u/substackcdn.com/image/fetch/$s_!yUx3!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed8923f4-389a-412b-8a4f-783ba2dd4ce3_1024x436.png 848w, /__u/substackcdn.com/image/fetch/$s_!yUx3!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed8923f4-389a-412b-8a4f-783ba2dd4ce3_1024x436.png 1272w, /__u/substackcdn.com/image/fetch/$s_!yUx3!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed8923f4-389a-412b-8a4f-783ba2dd4ce3_1024x436.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">Source: https://devopedia.org/shift-left#van-der-Cruijsen-2017</figcaption></figure></div><p>So should we build our <a href="https://en.wikipedia.org/wiki/Minimum_viable_product">Minimum Viable Product</a> (MVP) with testing, data modelling, data governance, DataOps and data quality built in on the first iteration so we can &#8220;shift left&#8220;? That&#8217;s a lot to cram into an MVP even if you buy a bunch of expensive off-the-shelf products! Especially if you have a deadline of, say, <a href="https://www.theoaklandgroup.co.uk/blog/can-you-really-build-a-cloud-data-platform-in-six-weeks/">six weeks to prove business value</a>.</p><p>Speaking of business value, that should be your number one goal; if you can&#8217;t do that, then you are unlikely to get an extension to your MVP. But proving value can be tricky, especially with more experimental products where we are not even sure if the product can be built.</p><p>But focusing on business value means that shifting left quickly becomes shifting right, leaving you with a potential mountain of tech debt that could take months to clear, reduce trust in customers (remember, no data quality), and slow down the development of new features.</p><p>So what do we do? There are no silver bullets, but a few things can help:</p><ul><li><p>Testing, DataOps, governance, quality, and modelling are not on-off switches; you could pencil in just enough of them to keep technical debt to a reasonable level while not turning each of them into a multi-month project in their own right. The downside to this is that it can lead to a lot of burnout-inducing context switching and work in progress.</p></li><li><p>If you&#8217;re not sure the budget holders will give you extra budget for &#8220;shifting left&#8221;, present it as a series of options in the project proposal while also mentioning the tradeoffs described above for shifting left or right.</p></li><li><p>Hire more people and break up work into parallel workstreams. This can work if you are pretty sure your product will add value, but rarely does doubling the number of people mean you double the production; <a href="https://en.wikipedia.org/wiki/The_Mythical_Man-Month">in fact, it can slow down production</a>.</p></li><li><p>Buy off-the-shelf software that suits your exact needs (or near enough). The downside of very specialist software is that it&#8217;s likely to be less adaptable in the future as the business and requirements change. Also, more expensive licence costs.</p></li><li><p>If you are building the same feature again and again for projects, convert it into a <a href="https://www.managementstudyguide.com/software-products-versus-software-services.htm">service</a> or <a href="https://en.wikipedia.org/wiki/Architectural_pattern">architectural pattern</a> so future projects save time. For example, a well-tested monitoring service or <a href="https://en.wikipedia.org/wiki/Infrastructure_as_code">cloud infrastructure module</a>. This won&#8217;t help you with your next MVP, though.</p></li><li><p>I&#8217;m tempted to say DataOps should come before the other items I mentioned above, as improving DataOps improves the efficiency of new features. Data Quality is another strong contender, as poor quality can lead to a loss of trust among stakeholders that is hard to win back. In reality, this is not a hard rule and depends on the use cases.</p></li><li><p>As a consultant, I can&#8217;t help but mention that you can hire a <a href="https://www.theoaklandgroup.co.uk/">team of experts</a> to help kickstart the development process, especially as many of them have <a href="https://www.theoaklandgroup.co.uk/services/data-platforms-cloud/data-platform-accelerator/">pre-built accelerators</a>. I also have firsthand experience that this is no silver bullet; we cannot always turn water into wine, and it&#8217;s more expensive than in-house staff.</p></li></ul><p>If you have any other ideas on how to shift left under difficult time constraints, leave a comment below!</p><div><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thedataplatform.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/thedataplatform.substack.com/subscribe"><span>Subscribe now</span></a></p><div><hr></div><h3><a href="https://roundup.getdbt.com/p/ep-49-the-state-of-databases-today">Podcast: The State of Databases Today</a></h3><p>This is an interview with Andy Pavlo, CEO of <a href="https://ottertune.com/">OtterTune</a> and <a href="http://www.cs.cmu.edu/~pavlo/">&#8220;Professor of Databaseology&#8221; at Carnegie Mellon</a>.</p><p>Andy Pavlo does <a href="https://ottertune.com/blog/2022-databases-retrospective">great articles reviewing databases each year</a>, so it was great to hear him in audio form talking about relational databases vs. other types and the future of the database market, among other topics.</p><div><hr></div><h3><a href="https://www.bauplanlabs.com/blog/serveless-is-still-not-designed-for-data">Serverless is Still Not Designed for Data</a></h3><p>I&#8217;d personally rename this to &#8220;Microservices is Still Not Designed for Data&#8220; as there are serverless databases available everywhere now, but the article is still an interesting read from Ciro Greco and Jacopo Tagliabue of <a href="https://www.bauplanlabs.com/">Bauplan</a>, as it is curious how Microservices have become a big thing on the operational side and not the analytical side.</p><div><hr></div><h3><strong><a href="https://www.vendr.com/blog/price-hikes-continue">Why Prices are Still Going Up When Companies are Spending Less</a>?</strong></h3><p>Analysis from Jason Quinn from Vendr, who helps companies buy SaaS software.</p><div><hr></div><h3><strong><a href="https://thenewstack.io/ditching-databases-for-apache-kafka-as-system-of-record/">Ditching Databases for Apache Kafka as System of Record</a></strong></h3><p>Andreas Evers, CTO of <a href="https://www.korfinancial.com/">KOR Financial</a>, pitches an idea that many may see as crazy, as Kafka is mostly used to get lots of data from a to b very quickly. </p><div><hr></div><h3><a href="/__u/dataengineeringcentral.substack.com/p/they-said-streaming-would-overtake">They Said Streaming Would Overtake Batch.</a></h3><p>A very good comparison of streaming vs. batch and why streaming hasn&#8217;t taken over Data Engineering by Data Engineer Daniel Beach.</p><div><hr></div><p>Sponsored by <a href="https://www.theoaklandgroup.co.uk/">The Oakland Group</a>, a full-service data consultancy. Download our <a href="https://weare.theoaklandgroup.co.uk/data-platform-guide">guide</a> or <a href="https://www.theoaklandgroup.co.uk/get-in-touch/">contact us</a> if you want to find out more about how we build Data Platforms!</p><p>Cover Photo by <a href="https://unsplash.com/@jannerboy62?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Nick Fewings</a> on <a href="https://unsplash.com/photos/S7cyjr_3prc?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thedataplatform.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 The Data Platform Journal! 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[How to Build a Data Platform: Security]]></title><description><![CDATA[Trade-offs, Defence in Depth, Security Monitoring and Security at Scale]]></description><link>https://thedataplatform.substack.com/p/how-to-build-a-data-platform-security</link><guid isPermaLink="false">https://thedataplatform.substack.com/p/how-to-build-a-data-platform-security</guid><dc:creator><![CDATA[Jake Watson]]></dc:creator><pubDate>Thu, 14 Sep 2023 09:37:54 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/7ed06ba9-f7d6-4e0c-b182-50d49d370de0_2757x2757.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Note:</strong> This is part of an in-progress guide on &#8220;<a href="/__u/thedataplatform.substack.com/p/how-to-build-a-data-platform">How to Build a Data Platform</a>&#8221;, subscribe for future updates!</p><h3>Data Security is a Trade-off between Risk and Cost</h3><p>I don&#8217;t need to tell you how important security is to a Data Platform: large data breaches hit the headlines almost daily, which can have massive monetary, legal, and reputational costs.</p><p>However, it costs money to enforce data security: expensive cybersecurity tooling, &#8220;<a href="https://sso.tax/">SSO tax</a>&#8221;, hiring security experts, and added security processes that can slow down innovation if not designed correctly.</p><p>So it&#8217;s a tradeoff between how much risk of a data breach you're willing to bear vs. how much of your product or platform budget should you spend on security?</p><p>So how do we know what is &#8220;good enough&#8220; security? Fortunately, there are well-known security recommendations and guidelines to aim for, such as <a href="https://www.nist.gov/cyberframework">NIST (US Gov)</a>, <a href="https://www.ncsc.gov.uk/collection/caf">CAF (UK Gov)</a>, <a href="https://www.cisecurity.org/cis-benchmarks">CIS</a>, <a href="https://medium.com/mitre-attack/att-ck-101-17074d3bc62">Mitre Att@ck</a>, <a href="https://en.wikipedia.org/wiki/ISO/IEC_27001">ISO 27001</a> and <a href="https://owasp.org/">OWASP</a>, not to mention that every major vendor will have a guide on security best practises for their product.</p><p>There is also one security strategy that is repeatedly used in the industry for secure software: defence in depth.</p><h3>Defence in Depth</h3><p>Just like a multi-layer backup strategy guards against data loss, a defense-in-depth strategy guards against data breaches by having multiple layers of security, so if one layer fails, you still have other layers to secure your data and minimise the blast radius of any breach.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!__Iq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F658ca252-87cd-4f4e-9dd2-3edbceb10a02_1238x1470.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!__Iq!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F658ca252-87cd-4f4e-9dd2-3edbceb10a02_1238x1470.png 424w, /__u/substackcdn.com/image/fetch/$s_!__Iq!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F658ca252-87cd-4f4e-9dd2-3edbceb10a02_1238x1470.png 848w, /__u/substackcdn.com/image/fetch/$s_!__Iq!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F658ca252-87cd-4f4e-9dd2-3edbceb10a02_1238x1470.png 1272w, /__u/substackcdn.com/image/fetch/$s_!__Iq!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F658ca252-87cd-4f4e-9dd2-3edbceb10a02_1238x1470.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!__Iq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F658ca252-87cd-4f4e-9dd2-3edbceb10a02_1238x1470.png" width="418" height="496.33279483037154" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/658ca252-87cd-4f4e-9dd2-3edbceb10a02_1238x1470.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1470,&quot;width&quot;:1238,&quot;resizeWidth&quot;:418,&quot;bytes&quot;:62550,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!__Iq!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F658ca252-87cd-4f4e-9dd2-3edbceb10a02_1238x1470.png 424w, /__u/substackcdn.com/image/fetch/$s_!__Iq!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F658ca252-87cd-4f4e-9dd2-3edbceb10a02_1238x1470.png 848w, /__u/substackcdn.com/image/fetch/$s_!__Iq!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F658ca252-87cd-4f4e-9dd2-3edbceb10a02_1238x1470.png 1272w, /__u/substackcdn.com/image/fetch/$s_!__Iq!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F658ca252-87cd-4f4e-9dd2-3edbceb10a02_1238x1470.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">Source: Jake Watson</figcaption></figure></div><p>We&#8217;ll go through each of the layers in turn:</p><h4>1. People and Policy</h4><p>People are the number one reason why data breaches happen: they accidentally send data to the wrong place or store sensitive details like passwords or personal information in a public place.</p><p>This is why security training is usually a mandatory first-day exercise for many organisations.</p><p>You also want to foster a <a href="https://www.ncsc.gov.uk/collection/board-toolkit/developing-a-positive-cyber-security-culture">culture of proactive security</a>, where software teams are always on the lookout for any possible security issues so their software is as secure as possible.</p><h4>2. Physical</h4><p>I&#8217;m not an expert on physical security, so I can&#8217;t talk about how to make your data centre bombproof; therefore, I won&#8217;t comment much on this section. Typical recommendations here are to always keep devices that have access to sensitive data, like laptops and phones, close to you or in a secure location.</p><h4>3. Perimeter</h4><p>You can think of all organisations as having a &#8220;security perimeter&#8221;, where you have to login and have the correct credentials to get inside the perimeter.</p><p>The two main ways to setup a perimeter are <a href="https://www.ncsc.gov.uk/collection/device-security-guidance/infrastructure/network-architectures">Virtual Private Network (VPN) and Zero Trust Architectures (ZTA)</a>, with ZTA being the newer, generally preferred approach, especially if you are using the cloud. Sometimes both are used!</p><p>In the cloud, there are lots of organisation-wide security features for:</p><ul><li><p> Authentication (<a href="https://aws.amazon.com/cognito/">AWS</a>, <a href="https://www.microsoft.com/en-gb/security/business/identity-access/azure-active-directory">Azure</a>)</p></li><li><p>Authorization (<a href="https://aws.amazon.com/iam/">AWS</a>, <a href="https://learn.microsoft.com/en-us/azure/role-based-access-control/overview">Azure</a>)</p></li><li><p>Security monitoring (<a href="https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html">AWS</a>, <a href="https://learn.microsoft.com/en-GB/azure/defender-for-cloud/">Azure</a>)</p></li><li><p>Data loss prevention (<a href="https://aws.amazon.com/macie/">AWS</a>, <a href="https://learn.microsoft.com/en-us/purview/dlp-learn-about-dlp">Azure</a>)</p></li><li><p>Plus a half-dozen other options available.</p></li></ul><h4>4. Network</h4><p>I think most engineers can get away with just knowing the basics of the first three layers, but this and the latter layers are where you want to get to know the best practises, as these are the layers engineers are going to be building, interacting with, and enforcing.</p><p>The practise of networking is about connecting compute and storage together, so best practise dictates trying to give each other access to as few services as possible.</p><p>In reality, this can be onerous to enforce, so there can be a trade-off here: for example, an organisation-wide service could give access to all internal services, even if they're not used by all services.</p><p>Other major aspects of network security are:</p><ul><li><p>Firewalls to block traffic to malicious websites and reduce the attack surface. Many internal firewalls also block all inbound connections, so you can&#8217;t connect to most or any data or compute from outside the network aside from a few monitored endpoints.</p><ul><li><p>It&#8217;s common to have multiple firewalls for redundancy and reducing the attack surface: organisational firewalls for all traffic, internal firewalls, application firewalls, and server (Operating System) firewalls.</p></li></ul></li><li><p>Private Networks (<a href="https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html">AWS</a>, <a href="https://learn.microsoft.com/en-us/azure/virtual-network/virtual-networks-overview">Azure</a>) create internal perimeters for each application or set of sub-components of an application, each with their own firewalls.</p></li><li><p>Encryption in Transit: encrypting traffic between servers reduces person in the middle attacks. The most common encryption used in transit is HTTPS.</p></li><li><p>Private Network Endpoints (<a href="https://docs.aws.amazon.com/vpc/latest/privatelink/concepts.html">AWS</a>, <a href="https://learn.microsoft.com/en-us/azure/private-link/private-endpoint-overview">Azure</a>) keep all traffic internal, so no traffic goes through the public internet, which again reduces person-in-the-middle attacks.</p></li></ul><h4>5. Host / Operating System</h4><p>While in the cloud, you may often use managed or serverless services, so you don&#8217;t have to worry about configuring the server's Operating System (OS) according to security best practises.</p><p>If you do need a server, one option is to use preconfigured hardened servers and <a href="https://www.docker.com/resources/what-container/">containers</a> in the cloud marketplace, such as <a href="https://www.cisecurity.org/cis-hardened-images">CIS server images</a> saving you a lot of hard work, though not everything, as you&#8217;ll want to have the minimum required access as well. For container security, I&#8217;d recommend reading <a href="https://docs.docker.com/engine/security/">docker&#8217;s security documentation</a>. For servers, security is such a big area that you&#8217;ll likely end up <a href="https://www.oreilly.com/search/?q=linux%20security&amp;type=*&amp;rows=10">reading multiple books</a> or <a href="https://linuxsecurity.com/">entire websites</a> on the topic.</p><p>You may also want to install anti-virus software on the server, especially if users are going to be actively logging in to the application.</p><p>You also should think about a <a href="https://learn.microsoft.com/en-us/azure/automation/update-management/manage-updates-for-vm">server patching policy</a>, which can actually be very painful to setup as you need to be careful not to push software updates that break your software (note, automated testing is great here), but also make sure you push updates often enough so you don&#8217;t have software with vulnerabilities.</p><h4>6. Application</h4><p>Most applications will have some kind of authentication, though it is increasingly likely that applications are linked to a single organisation-wide authentication service to enforce Single Sign-On (SSO). <a href="https://sso.tax/">Third party vendors generally charge extra for enterprise SSO</a>. </p><p>Limiting what you can access once you are logged in is usually done through Role-Based Access Control (RBAC). Here, you assign everyone one of many roles that each have different levels of access: typical roles are read-only, user, and admin.</p><p>It is also worthwhile scanning all code for vulnerabilities on each change as part of your <a href="/__u/thedataplatform.substack.com/p/how-to-build-a-data-platform-dataops">DataOps pipeline</a>. Another advantage of a fully automated DataOps pipeline is that you can limit access to sensitive areas, such as production environments, to only a few administrators rather than every developer.</p><h4>7. Data</h4><p>You can use your own data to limit access to other parts of the data using Column and Row Level Security, which is also known as <a href="https://www.okta.com/blog/2020/09/attribute-based-access-control-abac/">Attribute Based Access Control</a> (ABAC). This works by having a list of users with some user attributes, and then attributes are looked up to check for access. Some data storage and processing vendors come with managed features built in, usually at a premium. There are also open-source initiatives like <a href="https://www.openpolicyagent.org/">Open Policy Agent</a> (OPA) to build a cross application RBAC and ABAC authorization language.</p><p>You&#8217;ll also want to add <a href="https://www.freecodecamp.org/news/encryption-at-rest/">Data Encryption at Rest</a>, which encrypts data when it's stored in data storage. Most major cloud providers and data vendors provide encryption at rest, though many also charge a premium for it.</p><p>Finally, Data Anonymization or Data Masking: some vendors provide this, but you can also do this yourself, though it requires some maintenance overhead. One issue with this is that it can make some analytics difficult or impossible, and you may have to pay extra for it. It is also worth knowing the difference between anonymization and pseudonymization.</p><h3>Security Monitoring</h3><p>Monitoring and alerting are another big element of security. Alerting can tell you of a breach the moment it happens, and if there is a breach, you want to know who has access to what for legal purposes.</p><p>One issue with extensive monitoring is cost at scale, as all these logs will cost money to store and sometimes process. You need to think carefully about what long-term log data will be useful for, so you are not paying any unnecessary costs.</p><p>Also, monitoring data is itself a security risk, as it logs network and server details that can be used against you if leaked. Because of this, monitoring is usually centralised, and raw log data is often only accessible by a few administrators and developers.</p><h3>Security at Scale </h3><p>Building and managing all these layers can be quite difficult and expensive for one data team, as well as distracting them from their original mission of providing value to the organisation through data.</p><p>You can help ease the burden by providing a number of security services for data teams to adopt, usually in the first three to four layers, such as SSO, <a href="https://learn.microsoft.com/en-us/azure/governance/policy/overview">organisation wide cloud security policy</a> and Network Firewalls.</p><p>Also, providing common architectural patterns can be a massive help here, as they can and should include best security practises. There are some overheads in keeping them up to date, though, and there will always be edge cases that don&#8217;t fit existing patterns.</p><h4>Federation</h4><p>As you scale, the security team will know less about the context of the data team(s) and can easily get overwhelmed by the number of requests it receives for permission changes. This is where it can make more sense to move permission management to the product or project owners, so they can manage access.</p><p>This can save time on getting the required permissions, put less strain on the security team, and provide the best security as the owners know their applications the best. </p><p>This does have the downside of requiring the right tooling to do this, though many large cloud providers allow for permission groups that can be owned by people who are not admins elsewhere.</p><h3>Summary</h3><p>Thanks for reading! My takeaways are:</p><ul><li><p>Security is a tradeoff between risk, usability, and cost.</p></li><li><p>Defence in depth is a great strategy for security.</p></li><li><p>Monitoring is very useful for security but also poses a security risk if configured incorrectly.</p></li><li><p>Federated Security is very useful at scale.</p></li></ul><p>This was a vendor-neutral article; if you&#8217;re interested in Azure Data Platform security, I also recommend my colleague <a href="https://www.theoaklandgroup.co.uk/blog/how-to-create-a-secure-azure-data-platform/">Abigail Brown&#8217;s article</a>.</p><p>Thanks to <a href="https://www.linkedin.com/in/philip-bent-5824b420/">Phil Bent</a> for reviewing this article. Photo by <a href="https://unsplash.com/@jdent?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Jason Dent</a> on <a href="https://unsplash.com/photos/3wPJxh-piRw?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></p><p>If you have anything to add or any questions, feel free to comment below!</p><div><hr></div><p>Sponsored by <a href="https://www.theoaklandgroup.co.uk/">The Oakland Group</a>, a full-service data consultancy. Download our <a href="https://weare.theoaklandgroup.co.uk/data-platform-guide">guide</a> or <a href="https://www.theoaklandgroup.co.uk/get-in-touch/">contact us</a> if you want to find out more about how we build Data Platforms!</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thedataplatform.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 The Data Platform Journal! 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></p>]]></content:encoded></item><item><title><![CDATA[Issue #26: Team Topologies Book Review - Does it Work for Data Teams?]]></title><description><![CDATA[Plus: Data Governance is Broken, MDS Fest, The Streaming Plane, Intro to Data Vault Modelling and Finding the Right Balance in Data Mesh]]></description><link>https://thedataplatform.substack.com/p/issue-26-team-topologies-book-review</link><guid isPermaLink="false">https://thedataplatform.substack.com/p/issue-26-team-topologies-book-review</guid><dc:creator><![CDATA[Jake Watson]]></dc:creator><pubDate>Tue, 05 Sep 2023 10:33:27 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/78548bae-1e84-4d2a-8383-9d57089ab23c_1242x737.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi all, this week we have:</p><ul><li><p>Small Book Review: Team Topologies </p></li><li><p>Data Governance is Broken</p></li><li><p>Modern Data Stack Festival 2023 Recap</p></li><li><p>The Streaming Plane</p></li><li><p>Practical Introduction to Data Vault Modelling</p></li><li><p>Finding the Right Balance in Data Mesh Implementations</p></li><li><p>Why AI Can&#8217;t Pass This Test</p></li></ul><div><hr></div><h3><a href="https://teamtopologies.com/">Small Book Review: Team Topologies</a></h3><p>I read this book after Piethein Strengholt recommended it in his &#8220;<a href="https://www.oreilly.com/library/view/data-management-at/9781098138851/">Data Management at Scale</a>&#8220; book (which I also <a href="/__u/thedataplatform.substack.com/p/issue-24-book-review-of-data-management">reviewed</a>). It is authored by <strong><a href="https://teamtopologies.com/people">Matthew Skelton</a></strong><a href="https://teamtopologies.com/people"> and </a><strong><a href="https://teamtopologies.com/people">Manuel Pais</a>, </strong>both experienced consultants and trainers.</p><p>And in short, it&#8217;s a really great book for many IT leaders, especially those interested in implementing Data Products. It lays out a framework for creating teams that best fit the Agile and DevOps ways of working rather than trying to crowbar Agile in an existing organisation without any changes.</p><p>The authors are trying to ease the pain of engineers having to make many interactions and handoffs to get work done, which increases inefficiencies, burnout from too much context switching, issues caused by miscommunication, and therefore reduces employee engagement too.</p><p>This can happen in data by having a single cross-organisation team for: </p><ul><li><p>Business Analysis </p></li><li><p>Data engineering</p></li><li><p>Data Science</p></li><li><p>Data Analysis</p></li><li><p>Data Architecture</p></li><li><p>Cloud Infrastructure</p></li></ul><p>I could go on. This can create, as an example, several handoffs between teams to get a business requirement into an extra metric for a report. </p><p>What can also happen is <a href="https://en.wikipedia.org/wiki/Conway%27s_law">Conway&#8217;s law</a> (building software that reflects the organisation), instead of building software that matches the organisation&#8217;s <a href="https://opendatawatch.com/reference/the-data-value-chain-executive-summary/">value chains</a>, which again can create unnecessary handoffs. The authors propose the opposite direction: &#8216;<a href="https://ctocraft.com/blog/how-can-the-inverse-conway-manoeuvre-help-drive-organisational-change/">Inverse Conway Maneuver</a>&#8217; (ICM - building teams to match an organisation&#8217;s software services).</p><p>So we ideally want only one service to provide value to the organisation in a single, focused way (for example, a sales forecasting report) and with only one team entirely dedicated to making that service the best it can be. If we have multiple teams doing the above, it increases the number of handoffs needed, which in turn likely increases the number of miscommunications and misalignments too.</p><p>Doing the above will create a number of cross-functional stream-aligned, service, product, or feature teams, like:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!_LDd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1582e11-41e1-44cd-9bdd-306f556386c8_2475x750.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!_LDd!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1582e11-41e1-44cd-9bdd-306f556386c8_2475x750.png 424w, /__u/substackcdn.com/image/fetch/$s_!_LDd!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1582e11-41e1-44cd-9bdd-306f556386c8_2475x750.png 848w, /__u/substackcdn.com/image/fetch/$s_!_LDd!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1582e11-41e1-44cd-9bdd-306f556386c8_2475x750.png 1272w, /__u/substackcdn.com/image/fetch/$s_!_LDd!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1582e11-41e1-44cd-9bdd-306f556386c8_2475x750.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!_LDd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1582e11-41e1-44cd-9bdd-306f556386c8_2475x750.png" width="1456" height="441" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d1582e11-41e1-44cd-9bdd-306f556386c8_2475x750.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:441,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:33651,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!_LDd!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1582e11-41e1-44cd-9bdd-306f556386c8_2475x750.png 424w, /__u/substackcdn.com/image/fetch/$s_!_LDd!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1582e11-41e1-44cd-9bdd-306f556386c8_2475x750.png 848w, /__u/substackcdn.com/image/fetch/$s_!_LDd!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1582e11-41e1-44cd-9bdd-306f556386c8_2475x750.png 1272w, /__u/substackcdn.com/image/fetch/$s_!_LDd!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1582e11-41e1-44cd-9bdd-306f556386c8_2475x750.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">Source: Jake Watson</figcaption></figure></div><p>And we&#8217;ll want to add a &#8220;Platform Team&#8221; for any central services like organisation-wide infrastructure, security, data governance, and monitoring:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!NQrv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38453f9f-9b1b-4bb5-a9a9-b7155d1684d1_2475x975.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!NQrv!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38453f9f-9b1b-4bb5-a9a9-b7155d1684d1_2475x975.png 424w, /__u/substackcdn.com/image/fetch/$s_!NQrv!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38453f9f-9b1b-4bb5-a9a9-b7155d1684d1_2475x975.png 848w, /__u/substackcdn.com/image/fetch/$s_!NQrv!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38453f9f-9b1b-4bb5-a9a9-b7155d1684d1_2475x975.png 1272w, /__u/substackcdn.com/image/fetch/$s_!NQrv!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38453f9f-9b1b-4bb5-a9a9-b7155d1684d1_2475x975.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!NQrv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38453f9f-9b1b-4bb5-a9a9-b7155d1684d1_2475x975.png" width="1456" height="574" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/38453f9f-9b1b-4bb5-a9a9-b7155d1684d1_2475x975.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:574,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:39004,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!NQrv!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38453f9f-9b1b-4bb5-a9a9-b7155d1684d1_2475x975.png 424w, /__u/substackcdn.com/image/fetch/$s_!NQrv!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38453f9f-9b1b-4bb5-a9a9-b7155d1684d1_2475x975.png 848w, /__u/substackcdn.com/image/fetch/$s_!NQrv!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38453f9f-9b1b-4bb5-a9a9-b7155d1684d1_2475x975.png 1272w, /__u/substackcdn.com/image/fetch/$s_!NQrv!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38453f9f-9b1b-4bb5-a9a9-b7155d1684d1_2475x975.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">Source: Jake Watson</figcaption></figure></div><p>There are also two other types of teams, called <strong>enabling teams</strong> and <strong>complicated-subsystem teams, </strong>which are specialised and less common but provide important cross-product, non-platform teams.</p><p>And if you want to see how this looks at scale, <a href="https://www.docker.com/blog/building-stronger-happier-engineering-teams-with-team-topologies/">Docker has a blog</a> on how they implement Team Topologies:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!F9KQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4323191-17e0-4509-8385-1e1d56eadfaf_1100x633.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!F9KQ!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4323191-17e0-4509-8385-1e1d56eadfaf_1100x633.png 424w, /__u/substackcdn.com/image/fetch/$s_!F9KQ!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4323191-17e0-4509-8385-1e1d56eadfaf_1100x633.png 848w, /__u/substackcdn.com/image/fetch/$s_!F9KQ!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4323191-17e0-4509-8385-1e1d56eadfaf_1100x633.png 1272w, /__u/substackcdn.com/image/fetch/$s_!F9KQ!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4323191-17e0-4509-8385-1e1d56eadfaf_1100x633.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!F9KQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4323191-17e0-4509-8385-1e1d56eadfaf_1100x633.png" width="1100" height="633" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c4323191-17e0-4509-8385-1e1d56eadfaf_1100x633.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:633,&quot;width&quot;:1100,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Cleanshot 2022 05 19 at 22. 13. 04 1&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="Cleanshot 2022 05 19 at 22. 13. 04 1" title="Cleanshot 2022 05 19 at 22. 13. 04 1" srcset="/__u/substackcdn.com/image/fetch/$s_!F9KQ!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4323191-17e0-4509-8385-1e1d56eadfaf_1100x633.png 424w, /__u/substackcdn.com/image/fetch/$s_!F9KQ!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4323191-17e0-4509-8385-1e1d56eadfaf_1100x633.png 848w, /__u/substackcdn.com/image/fetch/$s_!F9KQ!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4323191-17e0-4509-8385-1e1d56eadfaf_1100x633.png 1272w, /__u/substackcdn.com/image/fetch/$s_!F9KQ!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4323191-17e0-4509-8385-1e1d56eadfaf_1100x633.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">Source: https://www.docker.com/blog/building-stronger-happier-engineering-teams-with-team-topologies/</figcaption></figure></div><p>For those who already practise agile, this doesn&#8217;t look ground-breaking, and all I can say is that I had the same thought as someone who&#8217;s been working on cross-functional teams for many years now. But the authors here go into more depth about team design and interactions than I&#8217;ve seen elsewhere, so I still got a lot out of this book.</p><p>For example, thinking about and tracking all the interactions a team makes and then checking if they are the right interactions, the right number (too much equals burnout), and the right type of interactions. I also liked the idea of thinking about documenting team interactions like <a href="https://en.wikipedia.org/wiki/API">API</a>s - which made me think of <a href="https://www.montecarlodata.com/blog-data-contracts-explained/">Data Contracts</a> or a <a href="https://opendataproducts.org/">standardised metadata model for a Data Product</a>.</p><p>It&#8217;s quite easy to map this book to Data Products and <a href="https://www.montecarlodata.com/blog-what-is-a-data-mesh-and-how-not-to-mesh-it-up/">Data Mesh</a> and to be honest, I wouldn&#8217;t be surprised if Zhamak Dehghani was partly inspired by this book when creating the Data Mesh. And just like Data Mesh&#8217;s, I would say this team structure is best suited to larger, more decentralised Data Platforms.</p><p>Now, many experienced leaders fear a reorganisation because, at best, it reduces productivity and employee engagement in the short term as everyone adjusts to their new role and colleagues, and if done badly, it can leave permanent damage. The authors of this book are very open about this, saying their methods take time to work. So I&#8217;d understand if you read this book or review and thought, &#8220;This sounds great, but I don&#8217;t have time, money, or political clout to implement it.&#8220;.</p><p>I would say to that, yeah, this book is less useful to you and leaders of smaller teams, but still has many merits: you can still think about the interactions aspect in an existing team or re-think how best to collaborate on new projects and products where there are easier opportunities to create and redesign software teams.</p><p>Right, on to the links!</p><div><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thedataplatform.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/thedataplatform.substack.com/subscribe"><span>Subscribe now</span></a></p><div><hr></div><h3><a href="https://p-platter.medium.com/data-governance-is-broken-c11b592bc391">Data Governance is Broken</a></h3><p>While I&#8217;m not sure I agree with the title of this article from Paolo Platter, CTO of <a href="https://www.agilelab.it">Agile Lab</a>, This is a good summary of issues that can happen in Data Governance: with a nod to my review above, look at all those handoffs and opportunities for miscommunication!</p><p>I also liked the recommendations for making it work better in organisations, especially the one about starting on governance as early as possible: governance is like cleaning the house; it&#8217;s easier and more efficient to do in lots of short bursts rather than in small amounts of big bursts of effort after rubbish has piled up.</p><p>I think the real issue with Data Governance is that, frankly, it doesn&#8217;t happen enough, especially at project or product inception. The same goes for Data Quality and Modelling. The reason why this happens is simple: in the very short term, governance doesn&#8217;t always bring value to a product, unlike, say, building another feature for a product like another set of charts for a report.</p><p>So governance problems like lack of documentation and data sharing pile up and get harder and harder to clean up as bad practises become habits (see my cleaning metaphor again).</p><p>The question for me is: should Data Governance (plus quality and modelling) be part of a <a href="https://en.wikipedia.org/wiki/Minimum_viable_product">Minimum Viable Product</a> (MvP)? And if not, when should it be implemented?</p><div><hr></div><h3><a href="https://www.mdsfest.com/">Modern Data Stack Festival 2023</a></h3><p>This was a great online conference hosted by <a href="https://www.secoda.co/">Secoda</a> two weeks ago, with talks and panels by Joe Reis, Taylor Brownlow, and Chad Sanderson.</p><p>So why am I linking to it now? Well, most of the videos have gone live for all to view:</p><ul><li><p><a href="https://www.youtube.com/playlist?list=PLdVpUmZrh0QpzVxMwSuGkIRIfvU-QwZ16">Day 1 Playlist</a></p></li><li><p><a href="https://www.youtube.com/playlist?list=PLdVpUmZrh0QquK7mtmKpIsdvOYZ2AaRuu">Day 2 Playlist</a></p></li><li><p><a href="https://www.youtube.com/watch?v=0NZ8YCCjTkY&amp;list=PLdVpUmZrh0QoQKP93MgsAKky-AoBjj5VA">Day 3 Playlist</a></p></li></ul><p>You&#8217;ll likely find at least a few videos you&#8217;re interested in.</p><div><hr></div><h3><a href="/__u/hubertdulay.substack.com/p/the-streaming-plane">The Streaming Plane</a></h3><p>The gap between operational data/application teams and data analytical teams has to be one of the most important issues today for Data Platforms, hence why <a href="/__u/joereis.substack.com/about">Joe Reis</a> has written <a href="/__u/joereis.substack.com/p/joes-nerdy-rants-3">not one</a> but <a href="/__u/joereis.substack.com/p/the-dev-and-data-divide-redux">two articles</a> on it.</p><p>Hubert Delay, co-author of the <a href="https://www.oreilly.com/library/view/streaming-data-mesh/9781098130718/">Streaming Data Mesh</a> book, thinks the gap can be bridged with a Streaming Plane.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!0P9J!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F866e0fdb-36ea-4e1e-adf2-ee2e2821241f_2345x1705.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!0P9J!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F866e0fdb-36ea-4e1e-adf2-ee2e2821241f_2345x1705.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!0P9J!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F866e0fdb-36ea-4e1e-adf2-ee2e2821241f_2345x1705.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!0P9J!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F866e0fdb-36ea-4e1e-adf2-ee2e2821241f_2345x1705.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!0P9J!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F866e0fdb-36ea-4e1e-adf2-ee2e2821241f_2345x1705.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!0P9J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F866e0fdb-36ea-4e1e-adf2-ee2e2821241f_2345x1705.jpeg" width="610" height="443.67445054945057" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/866e0fdb-36ea-4e1e-adf2-ee2e2821241f_2345x1705.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1059,&quot;width&quot;:1456,&quot;resizeWidth&quot;:610,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!0P9J!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F866e0fdb-36ea-4e1e-adf2-ee2e2821241f_2345x1705.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!0P9J!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F866e0fdb-36ea-4e1e-adf2-ee2e2821241f_2345x1705.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!0P9J!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F866e0fdb-36ea-4e1e-adf2-ee2e2821241f_2345x1705.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!0P9J!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F866e0fdb-36ea-4e1e-adf2-ee2e2821241f_2345x1705.jpeg 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">Source: Hubert Delay </figcaption></figure></div><div><hr></div><h3><strong><a href="https://medium.com/@nuhad.shaabani/practical-introduction-to-data-vault-modeling-1c7fdf5b9014">Practical Introduction to Data Vault Modelling</a></strong></h3><p>While I hear a lot of noise about data architects and engineers implementing Data Vaults, this is possibly the first time I&#8217;ve come across a good introduction to them that is not in a book or behind a paywall.</p><p>Not only that, Nuhad Shaabani has provided code to implement your own example Data Vault.</p><div><hr></div><h3><strong><a href="https://www.linkedin.com/pulse/finding-right-balance-omar-khawaja/?utm_source=substack&amp;utm_medium=email">Finding the Right Balance: Socio-Technical Balance in Data Mesh Implementations</a></strong></h3><p>One of the benefits (and issues) of Data Mesh architecture is that it goes beyond technology and has solutions for how an organisation should structure it&#8217;s processes and teams. It&#8217;s not a technical architecture but a socio-technical architecture.</p><p>Omar Khawaja, Global Head of Data and Analytics at <a href="https://www.givaudan.com/">Givaudan</a>, explains why socio-technical architectures are important and also breaks down the four core tenants of the Data Mesh into their social and technological parts to show what kind of effort is required for each of the tenants.</p><div><hr></div><h3><a href="https://www.youtube.com/watch?v=QrSCwxrLrRc">Why AI Can&#8217;t Pass This Test</a></h3><div id="youtube2-QrSCwxrLrRc" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;QrSCwxrLrRc&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/QrSCwxrLrRc?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>While this is very much a video for a general audience, this video makes an important point: AI is currently great at certain things but hopeless at others. It can be easy to get caught up in the recent hype and think everything can be solved by GPT and similar models, but in reality, it&#8217;s best currently for a subset of tasks.</p><div><hr></div><p>Sponsored by <a href="https://www.theoaklandgroup.co.uk/">The Oakland Group</a>, a full-service data consultancy. Download our <a href="https://weare.theoaklandgroup.co.uk/data-platform-guide">guide</a> or <a href="https://www.theoaklandgroup.co.uk/get-in-touch/">contact us</a> if you want to find out more about how we build Data Platforms!</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thedataplatform.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 The Data Platform Journal! 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><br><br></p>]]></content:encoded></item><item><title><![CDATA[How to Build A Data Platform: Data Modelling]]></title><description><![CDATA[We ask: Do I Need any Data Modelling?, What is the Data Modelling Workflow, Model Layers, Model Types and why you might need Master Data Management.]]></description><link>https://thedataplatform.substack.com/p/how-to-build-a-data-platform-data-07e</link><guid isPermaLink="false">https://thedataplatform.substack.com/p/how-to-build-a-data-platform-data-07e</guid><dc:creator><![CDATA[Jake Watson]]></dc:creator><pubDate>Thu, 31 Aug 2023 10:44:35 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/19f9336b-b076-4008-9fc2-a7d1f4b2f8e4_5226x3398.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Note:</strong> This is part of an in-progress guide on &#8220;<a href="/__u/thedataplatform.substack.com/p/how-to-build-a-data-platform">How to Build a Data Platform</a>&#8221;, subscribe for future updates!</p><h3><strong>Do I Need any Data Modelling?</strong></h3><p>With the rise of <a href="/__u/seattledataguy.substack.com/p/what-is-query-driven-data-modeling">Query-Based Modelling</a> adopted by large companies and <a href="https://tdan.com/the-enterprise-data-model/5205">enterprise &#8220;super&#8221; data models</a> being broken up by <a href="https://www.starburst.io/blog/what-are-the-different-types-of-data-products/">Data Products</a>, you may be forgiven for thinking data modelling trend is decreasing, maybe even dead. Even if that is the case, I think there is still a case for some modelling in all datasets.</p><p>Why? Well, almost all data has some kind of structure, so putting data in a consistent shape and style can allow data teams to make changes faster as you scale up your Data Platform. Thinking a bit about your data model before implementing it is like drawing a chair diagram before you cut the wood to build it.</p><p>This doesn&#8217;t mean you have to spend weeks or months modelling every dataset, but at least think about rules for consistent labels like columns and table names with sufficient documentation, starting with your most used data, like you would with any well-written code, even if you&#8217;re only using a Data Lake or Real-Time Streaming transformations.</p><p>Data Modelling can also help with Data Governance and debugging data issues if done well; you are documenting the data ecosystem with clear diagrams and easy-to-understand data models that relate to the business.</p><p>Data should be able to be easily visualised in reports and dashboards while also having good enough performance that analysts are not waiting hours or even days for queries to run; both are heavily affected by how you model data.</p><h3>Data Modelling Workflow</h3><p>Just like in Solution Architecture, you want to start with the <strong>Business Processes</strong> and <strong>Business Rules</strong>: what is the Business Process from source to report for your data and what rules must it comply with? Of all the steps, this is arguably the most crucial to get right, as you want to build a data solution that matches stakeholders expectations.</p><p>This stage is often called <a href="https://www.wrike.com/blog/requirements-gathering-guide/">requirements gathering</a>, which is a whole topic in itself and has many textbooks on it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!-Gvr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92403590-0d05-4eda-bf0b-ba38a74dfc4f_600x561.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!-Gvr!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92403590-0d05-4eda-bf0b-ba38a74dfc4f_600x561.png 424w, /__u/substackcdn.com/image/fetch/$s_!-Gvr!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92403590-0d05-4eda-bf0b-ba38a74dfc4f_600x561.png 848w, /__u/substackcdn.com/image/fetch/$s_!-Gvr!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92403590-0d05-4eda-bf0b-ba38a74dfc4f_600x561.png 1272w, /__u/substackcdn.com/image/fetch/$s_!-Gvr!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92403590-0d05-4eda-bf0b-ba38a74dfc4f_600x561.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!-Gvr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92403590-0d05-4eda-bf0b-ba38a74dfc4f_600x561.png" width="444" height="415.14" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/92403590-0d05-4eda-bf0b-ba38a74dfc4f_600x561.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:561,&quot;width&quot;:600,&quot;resizeWidth&quot;:444,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Example of a purchase order process flow diagram&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="Example of a purchase order process flow diagram" title="Example of a purchase order process flow diagram" srcset="/__u/substackcdn.com/image/fetch/$s_!-Gvr!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92403590-0d05-4eda-bf0b-ba38a74dfc4f_600x561.png 424w, /__u/substackcdn.com/image/fetch/$s_!-Gvr!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92403590-0d05-4eda-bf0b-ba38a74dfc4f_600x561.png 848w, /__u/substackcdn.com/image/fetch/$s_!-Gvr!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92403590-0d05-4eda-bf0b-ba38a74dfc4f_600x561.png 1272w, /__u/substackcdn.com/image/fetch/$s_!-Gvr!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92403590-0d05-4eda-bf0b-ba38a74dfc4f_600x561.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">Source: https://www.frevvo.com/blog/business-process-flow/</figcaption></figure></div><p>The next stage is <strong>Conceptual Modelling</strong>: if dealing with lots of data assets, it is usually easier to understand if they are grouped into business domains like Finance, Human Resources and Sales and entities like Employees, Customers and Projects. This part is sometimes skipped, especially for small models that only have one or two concepts.</p><p>You&#8217;ll want to use the same language as the business domain at the first two stages so you can have <a href="https://en.wikipedia.org/wiki/Subject-matter_expert">Subject Matter Experts</a> (SMEs) in the business domain verify your modelling. </p><p><strong>Logical Modelling</strong>: this stage formally defines the relationships between tables, what unique identifiers to use and what columns tables will have. This part is also sometimes skipped, especially on small models where it is combined with a physical model stage to save time writing two different models. One reason to keep this stage is it is largely technology-independent while driving deeper into the model details.</p><p>The last stage is <strong>Physical Modelling</strong>, which defines the column types and <a href="https://www.w3schools.com/sql/sql_constraints.asp">data constraints</a>. After this stage is complete, can use tooling such as <a href="https://sqldbm.com/Home/">SqlDBM</a> or <a href="https://www.erwin.com/products/erwin-data-modeler/">Erwin Data Modeler</a> to convert a physical model diagram into SQL code to save a lot of time creating tables by hand. </p><p>I&#8217;d recommend checking out <a href="https://www.thoughtspot.com/data-trends/data-modeling/conceptual-vs-logical-vs-physical-data-models">Sonny Rivera&#8217;s post</a> which goes into more detail on modelling stages if you&#8217;re interested.</p><h3>Model Layers</h3><p>The other important consideration is how we process our data through our data pipeline, from source to report. Generally, there are three layers: <a href="https://www.databricks.com/glossary/medallion-architecture">Raw, Conformed and Curated</a> (there are many naming variations, with <a href="https://www.databricks.com/glossary/medallion-architecture">Databricks confusing everyone with Bronze, Silver and Gold</a>, but they achieve the same aims). </p><ul><li><p><strong>Raw</strong> layer is most of the time a straight copy of the raw data with essential metadata and maybe some transformations to fit the technology the data is being moved to, so it requires little modelling. </p></li><li><p><strong>Conformed </strong>layer cleans and deduplicates data to make a <a href="https://en.wikipedia.org/wiki/Single_source_of_truth">Single Source of Truth </a>(more detail later). May also add some enterprise-level business rules too. This is arguably the hardest layer to design, as you have to balance use cases for today with adaptability in the future.</p></li><li><p><strong>Curated </strong>layer<strong> </strong>is analytical data that adds business value in some way directly, so often has a very narrow focus of answering one or two business questions. You may end up splitting this layer into business domain <a href="https://panoply.io/data-warehouse-guide/data-mart-vs-data-warehouse/">Data Marts</a>.</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_!bHo8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F192acf42-603d-451a-8d48-26f205f932af_3825x2175.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!bHo8!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F192acf42-603d-451a-8d48-26f205f932af_3825x2175.png 424w, /__u/substackcdn.com/image/fetch/$s_!bHo8!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F192acf42-603d-451a-8d48-26f205f932af_3825x2175.png 848w, /__u/substackcdn.com/image/fetch/$s_!bHo8!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F192acf42-603d-451a-8d48-26f205f932af_3825x2175.png 1272w, /__u/substackcdn.com/image/fetch/$s_!bHo8!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F192acf42-603d-451a-8d48-26f205f932af_3825x2175.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!bHo8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F192acf42-603d-451a-8d48-26f205f932af_3825x2175.png" width="1456" height="828" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/192acf42-603d-451a-8d48-26f205f932af_3825x2175.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:828,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:175191,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!bHo8!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F192acf42-603d-451a-8d48-26f205f932af_3825x2175.png 424w, /__u/substackcdn.com/image/fetch/$s_!bHo8!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F192acf42-603d-451a-8d48-26f205f932af_3825x2175.png 848w, /__u/substackcdn.com/image/fetch/$s_!bHo8!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F192acf42-603d-451a-8d48-26f205f932af_3825x2175.png 1272w, /__u/substackcdn.com/image/fetch/$s_!bHo8!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F192acf42-603d-451a-8d48-26f205f932af_3825x2175.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">Source: Jake Watson</figcaption></figure></div><p>I&#8217;ve seen some data models and pipelines combine both Conformed and Curated together, which could save some time on smaller data models, but does make your conformed layer more narrow in focus and harder to adapt in the future.</p><p>Finally, you have to be careful with the curated stage so that you don&#8217;t end up with hundreds, if not thousands, of unused tables used for one-time queries. Combat this with careful pruning based on usage metrics or by putting more experimental and/or exploratory analytics in a separate layer and/or schema.</p><h3><strong>How to Model Data?</strong></h3><h4>Agile, Value-Oriented Modelling</h4><p>Model what you need to, not every data source you have to get quicker <a href="https://www.adservio.fr/post/time-to-value-and-time-to-insights-kpis#:~:text=Time%20to%20Insight%20(TTI)%20measures,leverage%20that%20data%20almost%20instantly.">Time To Insight (TTI)</a>. <a href="/__u/thedataplatform.substack.com/i/121005506/bring-value-as-early-as-possible">As mentioned earlier in the guide</a>, you should first look at your anticipated analytical outputs and then only model the data that is needed for those outputs. </p><p>Maybe your Data Platform is small and only has a few tables, in which case model the entire Data Platform. However, if your Data Platform will potentially contain hundreds of tables and will take years to implement, we recommend only modelling on data you will use in the next few weeks or months.</p><h4>Model Types</h4><p>The most common data model type historically has been the <a href="https://en.wikipedia.org/wiki/Star_schema">Star Schema</a> or <a href="https://www.kimballgroup.com/data-warehouse-business-intelligence-resources/kimball-techniques/dimensional-modeling-techniques/">Kimball</a> model, especially when it comes to reports and dashboards in <a href="https://en.wikipedia.org/wiki/Business_intelligence">Business Intelligence</a> (BI). For example, some testing has shown <a href="https://www.sqlbi.com/articles/power-bi-star-schema-or-single-table/">Power BI is often better modelled as a Star Schema</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!LXFh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72737f33-8b51-403d-8ddc-99603c469cb4_848x579.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!LXFh!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72737f33-8b51-403d-8ddc-99603c469cb4_848x579.png 424w, /__u/substackcdn.com/image/fetch/$s_!LXFh!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72737f33-8b51-403d-8ddc-99603c469cb4_848x579.png 848w, /__u/substackcdn.com/image/fetch/$s_!LXFh!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72737f33-8b51-403d-8ddc-99603c469cb4_848x579.png 1272w, /__u/substackcdn.com/image/fetch/$s_!LXFh!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72737f33-8b51-403d-8ddc-99603c469cb4_848x579.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!LXFh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72737f33-8b51-403d-8ddc-99603c469cb4_848x579.png" width="488" height="333.1981132075472" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/72737f33-8b51-403d-8ddc-99603c469cb4_848x579.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:579,&quot;width&quot;:848,&quot;resizeWidth&quot;:488,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image shows 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="Image shows an illustration of a star schema." title="Image shows an illustration of a star schema." srcset="/__u/substackcdn.com/image/fetch/$s_!LXFh!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72737f33-8b51-403d-8ddc-99603c469cb4_848x579.png 424w, /__u/substackcdn.com/image/fetch/$s_!LXFh!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72737f33-8b51-403d-8ddc-99603c469cb4_848x579.png 848w, /__u/substackcdn.com/image/fetch/$s_!LXFh!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72737f33-8b51-403d-8ddc-99603c469cb4_848x579.png 1272w, /__u/substackcdn.com/image/fetch/$s_!LXFh!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72737f33-8b51-403d-8ddc-99603c469cb4_848x579.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">Source: https://learn.microsoft.com/en-us/power-bi/guidance/star-schema</figcaption></figure></div><p><a href="https://www.fivetran.com/blog/star-schema-vs-obt">This does not mean Star Schemas are always the best type of model</a>, and with newer technologies like Columnar Data Warehouses, streaming, <a href="https://www.datacamp.com/blog/nosql-databases-what-every-data-scientist-needs-to-know">various flavours of NoSQL</a> and Data Lake, you may require slightly different methods of Data Modelling, so model your data according to your use cases and technology. </p><p>Arguably the most common alterative model is One Big Table (OBT), where it creates a much simpler model where the most commonly used attributes and measures are put in, well, one big table, with possibly small reference tables to supplement it. </p><p>The benefit of this style is that you&#8217;ll have to make fewer joins with other tables, which can be an expensive and difficult to debug operation if there are lots of tables to join. OBT also matches the data model required for most Data Science, AI and ML model algorithms, which often expect one big table (or <a href="https://www.kdnuggets.com/2021/02/essential-math-data-science-matrices-matrix-product.html">matrix</a>) of features and target values. </p><p>The downside is that you can end up with a massive table of dozens, if not hundreds, of columns, which can make it hard to understand and use. Also, as mentioned above, BI applications like Power BI generally prefer Star Schemas. </p><p>Another big factor in how you model your data is how often your data structure changes. This can have a big impact on your modelling; you may even decide to use semi-structured data storage if data changes structure a lot (from data point to data point or on a daily basis).</p><p><a href="https://github.com/ActivitySchema/ActivitySchema">Activity Schemas</a> offer an alternative here by storing data in a tabular database with columns for unique identifiers and metadata but storing dataset attributes and/or semi-structured elements in a <a href="https://www.postgresqltutorial.com/postgresql-tutorial/postgresql-json/">JSON column</a> to keep data models smaller for less maintenance and potentially improve performance.</p><p>The downside is that it requires more effort and expertise to use JSON columns in BI applications and queries. I wrote a <a href="/__u/open.substack.com/pub/thedataplatform/p/issue-15-can-activity-schemas-replace?r=1h7hrg&amp;utm_campaign=post&amp;utm_medium=web">longer post on Activity Schemas</a> if you want to know more.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!nmyY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F837d9993-e4e6-48ea-97b1-272c873f040a_2269x759.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!nmyY!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F837d9993-e4e6-48ea-97b1-272c873f040a_2269x759.png 424w, /__u/substackcdn.com/image/fetch/$s_!nmyY!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F837d9993-e4e6-48ea-97b1-272c873f040a_2269x759.png 848w, /__u/substackcdn.com/image/fetch/$s_!nmyY!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F837d9993-e4e6-48ea-97b1-272c873f040a_2269x759.png 1272w, /__u/substackcdn.com/image/fetch/$s_!nmyY!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F837d9993-e4e6-48ea-97b1-272c873f040a_2269x759.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!nmyY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F837d9993-e4e6-48ea-97b1-272c873f040a_2269x759.png" width="1456" height="487" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/837d9993-e4e6-48ea-97b1-272c873f040a_2269x759.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:487,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;image&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="image" title="image" srcset="/__u/substackcdn.com/image/fetch/$s_!nmyY!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F837d9993-e4e6-48ea-97b1-272c873f040a_2269x759.png 424w, /__u/substackcdn.com/image/fetch/$s_!nmyY!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F837d9993-e4e6-48ea-97b1-272c873f040a_2269x759.png 848w, /__u/substackcdn.com/image/fetch/$s_!nmyY!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F837d9993-e4e6-48ea-97b1-272c873f040a_2269x759.png 1272w, /__u/substackcdn.com/image/fetch/$s_!nmyY!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F837d9993-e4e6-48ea-97b1-272c873f040a_2269x759.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">Source: https://github.com/ActivitySchema/ActivitySchema/blob/main/2.0.md</figcaption></figure></div><p>Also consider <a href="https://en.wikipedia.org/wiki/Data_vault_modeling">Data Vault</a> models for better write performance while keeping to a more tabular structure. The downside of Data Vault models is that they can make your models bigger, so they may require more maintenance. Also, like Activity Schemas, usually not ideal for direct use with BI applications with a small number of data assets.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!K2eE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F448a8d94-0d0f-463f-af3d-b78d207533c0_533x426.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!K2eE!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F448a8d94-0d0f-463f-af3d-b78d207533c0_533x426.png 424w, /__u/substackcdn.com/image/fetch/$s_!K2eE!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F448a8d94-0d0f-463f-af3d-b78d207533c0_533x426.png 848w, /__u/substackcdn.com/image/fetch/$s_!K2eE!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F448a8d94-0d0f-463f-af3d-b78d207533c0_533x426.png 1272w, /__u/substackcdn.com/image/fetch/$s_!K2eE!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F448a8d94-0d0f-463f-af3d-b78d207533c0_533x426.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!K2eE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F448a8d94-0d0f-463f-af3d-b78d207533c0_533x426.png" width="533" height="426" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/448a8d94-0d0f-463f-af3d-b78d207533c0_533x426.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:426,&quot;width&quot;:533,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A diagram illustrating the relationships between data vault hubs, links, and satellites.&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="A diagram illustrating the relationships between data vault hubs, links, and satellites." title="A diagram illustrating the relationships between data vault hubs, links, and satellites." srcset="/__u/substackcdn.com/image/fetch/$s_!K2eE!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F448a8d94-0d0f-463f-af3d-b78d207533c0_533x426.png 424w, /__u/substackcdn.com/image/fetch/$s_!K2eE!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F448a8d94-0d0f-463f-af3d-b78d207533c0_533x426.png 848w, /__u/substackcdn.com/image/fetch/$s_!K2eE!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F448a8d94-0d0f-463f-af3d-b78d207533c0_533x426.png 1272w, /__u/substackcdn.com/image/fetch/$s_!K2eE!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F448a8d94-0d0f-463f-af3d-b78d207533c0_533x426.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">Source: https://www.databricks.com/glossary/data-vault</figcaption></figure></div><p>With all these modelling styles that each support different use cases, it may make sense to use multiple types of models if you have varied workloads and analytical technologies. It is a common pattern to use modelling patterns that may suit better performance, like OBT, Activity Schema or Data Vault closer to the source data and then use Kimball or Star Schema closer to the consumption side for easier understanding of large data models.</p><h4>Non-Database Data Should Still be Modelled</h4><p>Data Lakes still need modelling: they should be structured in such a way that it&#8217;s easy to find the data you want, and <a href="https://www.confessionsofadataguy.com/part-3-data-modeling-in-data-warehouses-data-lakes-and-lake-houses/">large Data Lake files should have thought put into how it is partitioned to get the best performance</a>.</p><p>The same goes for streaming, logs, event data and semi-structured data (JSON, NoSQL): think and document about how the data will be used, joined, and change over time will help create a consistent structure to make refactoring and debugging issues easier in the future.</p><p>Even metadata should ideally be modelled, so you have clear and consistent requirements for data ownership and usage on all datasets for easier governance. </p><h4>Single Source of Truth</h4><p>A lot of modelling effort can go into creating a <a href="https://en.wikipedia.org/wiki/Single_source_of_truth">Single Source of Truth</a> - one record, dataset or model to rule them all for each entity. For example, the customer or employee dataset that (nearly) everyone should use in an organisation. This makes new analytics and fixing issues much easier, as you always know the best, most trusted place to look.</p><p>Getting to this deduplicated nirvana can be very difficult, especially if duplicated data is already widely used. <a href="https://en.wikipedia.org/wiki/Master_data_management">Master Data Management</a> (MDM) can help massively here, but it can cost a lot unless you are a large enterprise and will take time and effort to implement.</p><h2><strong>What is Master Data Management (MDM) and do I need it?</strong></h2><p>Master Data Management can check multiple data sources, combine them into one correct record, and send it back to the data source if the source needs updating.</p><p>You can use algorithms such as <a href="https://en.wikipedia.org/wiki/Levenshtein_distance">Levenshtein Distance</a> or <a href="https://studymachinelearning.com/cosine-similarity-text-similarity-metric/">Cosine Similarity</a> to compare two possible duplicate records, and then use other metadata like update time to work out which record details are correct to give you a Single Source of the Truth.</p><p>Though today&#8217;s off-the-shelf MDM software often uses more complex Machine Learning algorithms to do such matching.</p><p>One example of MDM in action is customer records: large organisations likely store customer data in multiple places across departments, and it can be important for marketing and <a href="https://www.veeva.com/blog/why-master-data-management-is-the-foundation-for-gdpr-compliance/">legal reasons</a> to keep them consistent and up-to-date.</p><p>Off-the-shelf MDM software can be expensive (starting at &gt;&#163;10k per month) and can take awhile to integrate, so it can be cheaper to roll your own solution for simple use cases, though for complex, large-scale cases, you may find MDM is value for money. For example, scanning a table of billions of rows for a &#8220;<a href="https://redis.com/blog/what-is-fuzzy-matching/">fuzzy match</a>&#8220; can be expensive in computer resources, so high performance off-the-shelf MDM software can provide performance benefits without you trying to find them yourself.</p><p>I also haven&#8217;t mentioned that you often get a nice User Interface, alerts, etc. with MDM software, so it can be used beyond Data Engineers.<br><br>I should also mention <a href="https://www.moderndatastack.xyz/category/reverse-etl-tools">Reverse ETL</a>, as it&#8217;s typically much cheaper than MDM, but just sends analytical data back to the data sources like Salesforce with no matching algorithms. This is great if you already have clean, deduplicated data in an analytical data store and want to send it back to the data source.</p><p>There is also <a href="https://hightouch.com/blog/what-is-entity-resolution">Entity Resolution and Identity Resolution</a>, which feel mostly like rebranded MDM for the cloud age, possibly without the moving of deduplicated data back to the data source.</p><p>If you do implement MDM, I would look at first setting it up in <a href="https://www.reltio.com/blogs/4-main-master-data-management-implementation-styles/">registry</a> style, especially in a complex environment, where you deduplicate incoming data and assign unique identifiers, but don&#8217;t use it to conform to a golden single source, which can involve a lot of work in removing and changing existing data. You can use this style initially as a trial run to see if MDM is producing the data you want it to.</p><p>One other important implementation consideration with MDM is whether you send deduplicated, cleaned data back to source* or not (consolidation style): while sending data back to source will lead to better Data Quality, the data source technology might not be able to be updated by a third party source, and the data source owner may not have the budget or the will to incorporate MDM into their systems.</p><p><em>*There are two ways to do this: centralised, which queries the master record before creating a record in a data source or transactional data system; or coexistence style, where data sources are ingested post-creation, then cleaned, deduplicated, and sent back.</em></p><h3>Summary</h3><p>Another big topic with lots of takeaways:</p><ul><li><p>All data that is used by your customers (internal or external) should at least have a bit of modelling and documentation, at least to keep it consistent and easy to find.</p></li><li><p>Model only what you need.</p></li><li><p>Think about multiple model types for varied workloads.</p></li><li><p>Single Source of Truth and MDM are very powerful but can be very expensive and time consuming to implement.</p></li></ul><p>I hope you enjoyed reading this; leave any comments or questions below!<br><br>Cover photo by <a href="https://unsplash.com/@bright?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Karen Vardazaryan</a> on <a href="https://unsplash.com/photos/JBrfoV-BZts?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></p><div><hr></div><p>Sponsored by <a href="https://www.theoaklandgroup.co.uk/">The Oakland Group</a>, a full service data consultancy. Download our <a href="https://weare.theoaklandgroup.co.uk/data-platform-guide">guide</a> or <a href="https://www.theoaklandgroup.co.uk/get-in-touch/">contact us</a> if you want to find out more about how we build Data Platforms!</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thedataplatform.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 The Data Platform Journal! 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[How to Build a Data Platform: Data Quality]]></title><description><![CDATA[Including: Why invest in Data Quality, Testing, Frameworks, Data Reliability, Data Observability and Data Contracts]]></description><link>https://thedataplatform.substack.com/p/how-to-build-a-data-platform-data-14c</link><guid isPermaLink="false">https://thedataplatform.substack.com/p/how-to-build-a-data-platform-data-14c</guid><dc:creator><![CDATA[Jake Watson]]></dc:creator><pubDate>Thu, 24 Aug 2023 11:18:43 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/16db61bc-22c6-4c38-93e4-d68fbd6b4582_890x528.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Note:</strong> This is part of an in-progress guide on &#8220;<a href="/__u/thedataplatform.substack.com/p/how-to-build-a-data-platform">How to Build a Data Platform</a>&#8221;, subscribe for future updates! Also published on the <a href="https://www.theoaklandgroup.co.uk/blog/why_invest_in_data_quality/">Oakland Group Blog</a>.</p><h3>Why Invest in Data Quality?</h3><p>This can seem like a rhetorical question: you should always invest in Data Quality! But I argue we are still not investing enough: surveys show <a href="https://www.dbta.com/Editorial/Trends-and-Applications/RESEARCH-at-DBTA-Data-Mesh-Data-Fabric-Ideas-Whose-Time-Has-Come-Survey-Shows-154441.aspx">Data Quality issues are increasing in most organisations</a> and, <a href="https://www.montecarlodata.com/blog-data-quality-survey">on average, take up 34% of a Data Engineers time</a>, instead of creating value by adding new features. This increases to 50% for large Data Platforms.</p><p>All these Data Quality issues add up, with bad Data Quality costing organisations on average <a href="https://www.gartner.com/smarterwithgartner/how-to-stop-data-quality-undermining-your-business">$15mil a year</a>.</p><p>Data Quality investment is also an investment in high-quality AI and ML, <a href="https://www.youtube.com/watch?v=06-AZXmwHjo">as you&#8217;ll likely get more accurate AI and ML results from improving Data Quality than changing your AI model and code</a>.</p><p>Having Data Quality checks in place helps reduce &#8220;<a href="https://www.montecarlodata.com/blog-the-rise-of-data-downtime/">data downtime"</a> for outages and fixes, which subsequently increases the overall reliability of the Data Platform. Highly reliable data leads to more trust in data and better informed decision-making.</p><p>Better decision making should increase profitability, productivity, and confidence of the whole organisation, which in turn usually leads to more investment in data and, as a result, going back to the start to increasing the quality of data again.</p><p>All this creates a &#8220;Virtuous Cycle&#8221; of Data Quality, constantly improving your organisation:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!ctbX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4dee7a-0097-4d5c-afbd-e09ef862a9be_1991x1479.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!ctbX!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4dee7a-0097-4d5c-afbd-e09ef862a9be_1991x1479.png 424w, /__u/substackcdn.com/image/fetch/$s_!ctbX!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4dee7a-0097-4d5c-afbd-e09ef862a9be_1991x1479.png 848w, /__u/substackcdn.com/image/fetch/$s_!ctbX!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4dee7a-0097-4d5c-afbd-e09ef862a9be_1991x1479.png 1272w, /__u/substackcdn.com/image/fetch/$s_!ctbX!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4dee7a-0097-4d5c-afbd-e09ef862a9be_1991x1479.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!ctbX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4dee7a-0097-4d5c-afbd-e09ef862a9be_1991x1479.png" width="582" height="432.50274725274727" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3f4dee7a-0097-4d5c-afbd-e09ef862a9be_1991x1479.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1082,&quot;width&quot;:1456,&quot;resizeWidth&quot;:582,&quot;bytes&quot;:65369,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!ctbX!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4dee7a-0097-4d5c-afbd-e09ef862a9be_1991x1479.png 424w, /__u/substackcdn.com/image/fetch/$s_!ctbX!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4dee7a-0097-4d5c-afbd-e09ef862a9be_1991x1479.png 848w, /__u/substackcdn.com/image/fetch/$s_!ctbX!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4dee7a-0097-4d5c-afbd-e09ef862a9be_1991x1479.png 1272w, /__u/substackcdn.com/image/fetch/$s_!ctbX!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4dee7a-0097-4d5c-afbd-e09ef862a9be_1991x1479.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">Source: Jake Watson</figcaption></figure></div><p>If Data Quality decreases the opposite happens with a negative cycle.</p><p>Better Data Quality testing should also reduce the blast radius of the issue to a few Data Engineers rather than hundreds or thousands of users as more issues being found earlier:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!WJMI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59e762b7-55dc-4c7b-b807-5ebca100de4c_1892x983.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!WJMI!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59e762b7-55dc-4c7b-b807-5ebca100de4c_1892x983.png 424w, /__u/substackcdn.com/image/fetch/$s_!WJMI!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59e762b7-55dc-4c7b-b807-5ebca100de4c_1892x983.png 848w, /__u/substackcdn.com/image/fetch/$s_!WJMI!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59e762b7-55dc-4c7b-b807-5ebca100de4c_1892x983.png 1272w, /__u/substackcdn.com/image/fetch/$s_!WJMI!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59e762b7-55dc-4c7b-b807-5ebca100de4c_1892x983.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!WJMI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59e762b7-55dc-4c7b-b807-5ebca100de4c_1892x983.png" width="636" height="330.2307692307692" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/59e762b7-55dc-4c7b-b807-5ebca100de4c_1892x983.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:756,&quot;width&quot;:1456,&quot;resizeWidth&quot;:636,&quot;bytes&quot;:54968,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!WJMI!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59e762b7-55dc-4c7b-b807-5ebca100de4c_1892x983.png 424w, /__u/substackcdn.com/image/fetch/$s_!WJMI!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59e762b7-55dc-4c7b-b807-5ebca100de4c_1892x983.png 848w, /__u/substackcdn.com/image/fetch/$s_!WJMI!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59e762b7-55dc-4c7b-b807-5ebca100de4c_1892x983.png 1272w, /__u/substackcdn.com/image/fetch/$s_!WJMI!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59e762b7-55dc-4c7b-b807-5ebca100de4c_1892x983.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">Source: Jake Watson</figcaption></figure></div><p>The fewer users impacted, the smaller the cost caused by the issue, which should again pay back any investment in Data Quality in large multiples.</p><h3>Do I need a Data Quality Framework?</h3><p>I know that setting out to build a framework for anything requires time, and you&#8217;ll have many competing concerns, so I understand if you feel reluctant to build one, especially if you are a small team with a limited budget.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!RpEr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a9323fe-f5ff-4e96-bca3-a1ef2749912e_1849x1743.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!RpEr!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a9323fe-f5ff-4e96-bca3-a1ef2749912e_1849x1743.png 424w, /__u/substackcdn.com/image/fetch/$s_!RpEr!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a9323fe-f5ff-4e96-bca3-a1ef2749912e_1849x1743.png 848w, /__u/substackcdn.com/image/fetch/$s_!RpEr!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a9323fe-f5ff-4e96-bca3-a1ef2749912e_1849x1743.png 1272w, /__u/substackcdn.com/image/fetch/$s_!RpEr!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a9323fe-f5ff-4e96-bca3-a1ef2749912e_1849x1743.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!RpEr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a9323fe-f5ff-4e96-bca3-a1ef2749912e_1849x1743.png" width="434" height="409.25961538461536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5a9323fe-f5ff-4e96-bca3-a1ef2749912e_1849x1743.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1373,&quot;width&quot;:1456,&quot;resizeWidth&quot;:434,&quot;bytes&quot;:355609,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!RpEr!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a9323fe-f5ff-4e96-bca3-a1ef2749912e_1849x1743.png 424w, /__u/substackcdn.com/image/fetch/$s_!RpEr!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a9323fe-f5ff-4e96-bca3-a1ef2749912e_1849x1743.png 848w, /__u/substackcdn.com/image/fetch/$s_!RpEr!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a9323fe-f5ff-4e96-bca3-a1ef2749912e_1849x1743.png 1272w, /__u/substackcdn.com/image/fetch/$s_!RpEr!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a9323fe-f5ff-4e96-bca3-a1ef2749912e_1849x1743.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">Oakland Data Quality Framework. Source: https://www.theoaklandgroup.co.uk/services/data-governance/data-quality-assessment/</figcaption></figure></div><p>But there comes a point where fighting lots of local battles with Data Quality becomes more inefficient than building out a framework to reduce Data Quality issues over the long term.<br><br>I&#8217;m not going to go in depth on Data Quality frameworks, as they are often tied to wider Data Governance frameworks, and we have a guide on that <a href="https://www.theoaklandgroup.co.uk/resources/building-a-data-governance-program-by-stealth-the-lighthouse-concept/">here</a>. I will say that whatever framework you use, make sure it&#8217;s cyclical so that it&#8217;s always improving and you are acting on any emerging issues in a timely manner.</p><h3>How Do I Test for Data Quality?</h3><p>Classically, Data Quality tests are a set of rules that test between the actual and desired state of data. The desired state may not be perfect, but &#8216;good enough&#8217;. What counts as &#8216;good enough&#8216; varies from dataset to dataset, which makes Data Quality more challenging.</p><p>What do we normally test in a dataset, though? The <a href="https://www.dama.org/cpages/body-of-knowledge">DAMA International&#8217;s Guide to the Data Management Body of Knowledge</a> says there are six dimensions to Data Quality:</p><ul><li><p> Accuracy: does the date look how we expect it to?</p></li><li><p>Completeness: are there any unexpected missing values?</p></li><li><p>Uniqueness: no duplicates!</p></li><li><p>Consistency: does a person&#8217;s data match in two different datasets?</p></li><li><p>Timeliness: is the data out of date?</p></li><li><p>Validity: does the data conform to an expected format? Think postcodes, emails, etc.</p></li></ul><p>Tracking all these dimensions for every dataset at every stage of your pipeline is a lot of work, probably too much work. Therefore, a trade-off is often required to focus on areas where Data Quality will have the most impact on the business.</p><p>You also have to beware of false positives or minor issues being blown out of proportion, overwhelming your engineers with too many issues that can be fixed. It can help categorise your Data Quality issues by severity just <a href="https://www.atlassian.com/incident-management/kpis/severity-levels">like other software issues</a>.</p><p>You also have to take into account the mental wellbeing aspect too: few Data Engineers and Analysts want to spend a large percentage of their time fixing Data Quality issues over a long period of time.</p><p>There is help, though, with software frameworks to help you write Data Quality testing:</p><ul><li><p><a href="https://github.com/great-expectations/great_expectations">Great Expectations</a></p></li><li><p><a href="https://docs.getdbt.com/docs/build/tests">dbt tests</a> and <a href="https://github.com/calogica/dbt-expectations">dbt-expectations</a></p></li><li><p><a href="https://www.datafold.com/">Datafold</a></p></li><li><p><a href="https://www.soda.io/">Soda</a></p></li><li><p><a href="https://www.montecarlodata.com/">Monte Carlo</a></p></li></ul><p>Most of the above profile your data and setup recommended tests for you to use, saving you some time configuring them yourself.</p><p>But in reality, we see a lot of custom-made Data Quality testing, partly because Data Quality isn&#8217;t often given a large amount of investment, so is done when possible in an organic, ad-hoc manner.</p><p>The above products work best in development and staging environments, so you can find issues before they enter production or use them as <a href="https://hackernoon.com/want-to-create-data-circuit-breakers-with-airflow-heres-how">circuit breakers</a>, to stop a Data Pipeline if the incoming or outgoing data is of poor quality.</p><p>It is also worth mentioning that you can use constraints in a <a href="https://www.w3schools.com/sql/sql_constraints.asp">Warehouse</a> or <a href="https://docs.delta.io/latest/delta-constraints.html">Lakehouse</a> schema, which has the benefit of not requiring another software library but not as feature rich (would likely have to setup your own notifications for alerting).</p><p>It is also important to inform your users of any Data Quality issues as soon as possible so they don&#8217;t waste time finding out for themselves or use data that is untrustworthy. This can be done through notifications and alerts, though we&#8217;ve also had a lot of success creating Data Quality dashboards that sit alongside existing reports and can be easily referred to by users.</p><h3>Latest Concepts in Data Quality</h3><p>There is quite a lot of innovation in Data Quality in the last few years, so we present below the concepts to take your Data Quality process to the next level.</p><p>This will require more investment, but it will give you an edge over your competitors to make better informed decisions as you&#8217;ll have more trustworthy data. This investment should also pay back long term with less time wasted fixing Data Quality issues.</p><h4>What is Data Reliability and do I Need it?</h4><p>Data Reliability gives Data Quality more of a support focus, which makes sense as most Data Quality issues in production will be dealt with as a support issue to a Data Platform. </p><p>Data Reliability takes a lot of its thinking from <a href="https://sre.google/">Site Reliability Engineering</a> (SRE), which treats support as more of a engineering problem, where you examine your past and current support tickets and look to decrease them with engineering or better processes.</p><p>With Data Reliability, you would look to get a baseline of Data Quality issues per week or month and then look at ways to reduce them and monitor to see if the changes have reduced the number of issues and/or reduced the amount of time spent on issues. </p><p>The changes to improve Data Reliability can be technology-based:</p><ul><li><p> New or updated tooling</p></li><li><p>Better automation of when a pipeline fails or automated actions to respond to a data issue</p></li></ul><p>Or the changes can be process-oriented: </p><ul><li><p>Writing better documentation to avoid common issues</p></li><li><p><a href="https://www.atlassian.com/incident-management/incident-response/how-to-create-an-incident-response-playbook#incident-response-lifecycle">Incident playbooks</a> so the whole team can more quickly respond to a issue in an consistent way. </p></li></ul><p>You can rather cynically say Data Reliability is just Data Quality with a feedback loop and a time series graph, but it is there to make sure you don&#8217;t think too short term about Data Quality and think about long term improvements that will make a more efficient and trustworthy Data Platform. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!N1FS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F209dae0a-ce7c-4b57-b44c-5fec490f08a7_1329x1299.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!N1FS!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F209dae0a-ce7c-4b57-b44c-5fec490f08a7_1329x1299.png 424w, /__u/substackcdn.com/image/fetch/$s_!N1FS!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F209dae0a-ce7c-4b57-b44c-5fec490f08a7_1329x1299.png 848w, /__u/substackcdn.com/image/fetch/$s_!N1FS!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F209dae0a-ce7c-4b57-b44c-5fec490f08a7_1329x1299.png 1272w, /__u/substackcdn.com/image/fetch/$s_!N1FS!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F209dae0a-ce7c-4b57-b44c-5fec490f08a7_1329x1299.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!N1FS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F209dae0a-ce7c-4b57-b44c-5fec490f08a7_1329x1299.png" width="382" height="373.37697516930024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/209dae0a-ce7c-4b57-b44c-5fec490f08a7_1329x1299.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1299,&quot;width&quot;:1329,&quot;resizeWidth&quot;:382,&quot;bytes&quot;:47407,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!N1FS!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F209dae0a-ce7c-4b57-b44c-5fec490f08a7_1329x1299.png 424w, /__u/substackcdn.com/image/fetch/$s_!N1FS!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F209dae0a-ce7c-4b57-b44c-5fec490f08a7_1329x1299.png 848w, /__u/substackcdn.com/image/fetch/$s_!N1FS!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F209dae0a-ce7c-4b57-b44c-5fec490f08a7_1329x1299.png 1272w, /__u/substackcdn.com/image/fetch/$s_!N1FS!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F209dae0a-ce7c-4b57-b44c-5fec490f08a7_1329x1299.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 Reliability Cycle</figcaption></figure></div><p>You may also set targets such as &#8220;99.9% of data will refresh on time&#8221; or &#8220;A maximum of 33% of engineer time should be spent on support issues&#8220; as well. As mentioned before, it can be impossible to achieve perfect Data Quality, so aiming for a reasonable target instead can avoid engineer burnout.</p><h4>What is Data Observability and do I Need it?</h4><p>Data Observability is about gaining a Data Platform or organisation-wide understanding of your Data Quality. </p><p>It arguably goes beyond Data Quality by adding metadata features normally found in a Data Catalog: cataloguing <a href="https://en.wikipedia.org/wiki/Database_schema">schemas</a> of datasets and data lineage. These features allow you to more quickly find a Data Quality issue by tracing the lineage of the issue and also you gain the ability to see how much Data Quality is impacting your organisation.</p><p>Data Observability software <a href="https://docs.getmontecarlo.com/docs/monitors-overview">can often also come with Machine Learning (ML) algorithms to detect anomalies in data</a>, so you can be warned about issues you haven&#8217;t even thought of yet.</p><p>We&#8217;ve seen products either extend a Data Quality framework with Data Catalog features such as <a href="https://www.montecarlodata.com/">Monte Carlo</a> and <a href="https://www.bigeye.com/">Big Eye</a>. Or existing Data Catalogs add Data Quality functionality, such as <a href="https://datahubproject.io/">Datahub</a>, which imports Data Quality tests created by Great Expectations and dbt tests. Both <a href="https://docs.soda.io/soda/integrate-alation.html">Soda</a> and <a href="https://docs.getmontecarlo.com/docs/alation">Monte Carlo</a> have integration with the Data Catalog <a href="https://www.alation.com/product/data-quality/">Alation</a>.</p><h4>What are Data Contracts and do I Need Them?</h4><p>Data Contracts are well, making a contract between a data producer and a data consumer, so the consumer knows what data to expect from the producer. </p><p>While you can replicate some of Data Contract&#8217;s benefits by tracking the schema of the data produced, Data Contract is meant to go beyond that by giving you a full suite of metadata about the data:</p><ul><li><p>The data&#8217;s schema.</p></li><li><p>How the data is calculated.</p></li><li><p>Who owns the data?</p></li><li><p>What is the data lineage?</p></li><li><p>How to access the data.</p></li><li><p>What is the data&#8217;s expected quality, availability, etc.</p></li><li><p>Plus anything else that is relevant to the data.</p></li></ul><p>You may think Data Contracts are redundant if you have a well-maintained Data Catalog, as they capture similar information, but Data Contracts are designed to be checked during every run of a Data Pipeline and have some action in the pipeline if the Data Contract is broken: </p><ul><li><p>Stop the pipeline with a circuit breaker. </p></li><li><p>Alerting.</p></li><li><p>Moving data that doesn&#8217;t meet the contract to a manual checking table.</p></li></ul><p>For an example, Paypal has open-sourced their <a href="https://github.com/paypal/data-contract-template">Data Contract template</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!7AcD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0bc6938-252d-4448-a08e-4185c76379ae_4970x2245.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!7AcD!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0bc6938-252d-4448-a08e-4185c76379ae_4970x2245.png 424w, /__u/substackcdn.com/image/fetch/$s_!7AcD!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0bc6938-252d-4448-a08e-4185c76379ae_4970x2245.png 848w, /__u/substackcdn.com/image/fetch/$s_!7AcD!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0bc6938-252d-4448-a08e-4185c76379ae_4970x2245.png 1272w, /__u/substackcdn.com/image/fetch/$s_!7AcD!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0bc6938-252d-4448-a08e-4185c76379ae_4970x2245.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!7AcD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0bc6938-252d-4448-a08e-4185c76379ae_4970x2245.png" width="1456" height="658" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f0bc6938-252d-4448-a08e-4185c76379ae_4970x2245.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:658,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Data contract 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="Data contract schema" title="Data contract schema" srcset="/__u/substackcdn.com/image/fetch/$s_!7AcD!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0bc6938-252d-4448-a08e-4185c76379ae_4970x2245.png 424w, /__u/substackcdn.com/image/fetch/$s_!7AcD!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0bc6938-252d-4448-a08e-4185c76379ae_4970x2245.png 848w, /__u/substackcdn.com/image/fetch/$s_!7AcD!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0bc6938-252d-4448-a08e-4185c76379ae_4970x2245.png 1272w, /__u/substackcdn.com/image/fetch/$s_!7AcD!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0bc6938-252d-4448-a08e-4185c76379ae_4970x2245.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">https://github.com/paypal/data-contract-template</figcaption></figure></div><p>This should create more positive collaboration between data producers and consumers because they have a collective agreement of what the data should look like. It is not uncommon to have a poor working relationship where a producer makes changes without telling consumers or consumers accessing data in way not recommended by the producer, so good use of contracts</p><p>One issue with Data Contracts is that they are a new concept, so require more work to implement at present, though that will likely change in the near future as more companies adopt them. </p><p>Most of the examples of Data Contracts we&#8217;ve seen so far <a href="/__u/dataproducts.substack.com/p/an-engineers-guide-to-data-contracts">use Apache Flink and the Kafka Schema Registry</a>, so assume you are using streaming, though there are some <a href="https://www.linkedin.com/posts/pietheinstrengholt_data-contracts-ugcPost-7067845937074712576-E4MB">examples that use batch processing</a>.</p><h3>Data Governance and Data Quality</h3><p>Good Data Governance can also improve the quality of data. It is important to know where data is coming from, who owns it, for what purpose data is being transformed, and finally, what is the impact of poor availability and data quality: all helped by having Data Governance properly implemented.</p><p>Some of the above concepts (Data Contracts and Data Observability) can also improve Data Governance, so investing in Data Quality can also be an investment in good Governance too.</p><p>We go into Data Governance in more detail in a later section.</p><h3>How Does This All Fit Together?</h3><p>We've covered a lot of concepts, so it might be difficult to picture how all this fits together. So I&#8217;ve drawn a diagram below as one example of how this could all fit together in a high-maturity organisation:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!K5K0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3c1d00b-8218-430a-9060-86b86a975e81_3788x2578.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!K5K0!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3c1d00b-8218-430a-9060-86b86a975e81_3788x2578.png 424w, /__u/substackcdn.com/image/fetch/$s_!K5K0!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3c1d00b-8218-430a-9060-86b86a975e81_3788x2578.png 848w, /__u/substackcdn.com/image/fetch/$s_!K5K0!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3c1d00b-8218-430a-9060-86b86a975e81_3788x2578.png 1272w, /__u/substackcdn.com/image/fetch/$s_!K5K0!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3c1d00b-8218-430a-9060-86b86a975e81_3788x2578.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!K5K0!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3c1d00b-8218-430a-9060-86b86a975e81_3788x2578.png" width="980" height="667.0192307692307" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c3c1d00b-8218-430a-9060-86b86a975e81_3788x2578.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:991,&quot;width&quot;:1456,&quot;resizeWidth&quot;:980,&quot;bytes&quot;:205279,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!K5K0!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3c1d00b-8218-430a-9060-86b86a975e81_3788x2578.png 424w, /__u/substackcdn.com/image/fetch/$s_!K5K0!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3c1d00b-8218-430a-9060-86b86a975e81_3788x2578.png 848w, /__u/substackcdn.com/image/fetch/$s_!K5K0!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3c1d00b-8218-430a-9060-86b86a975e81_3788x2578.png 1272w, /__u/substackcdn.com/image/fetch/$s_!K5K0!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3c1d00b-8218-430a-9060-86b86a975e81_3788x2578.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 Quality Workflow</figcaption></figure></div><ul><li><p>Any code changes are tested in development and/or test environments with Data Quality Tests to check that any changes won&#8217;t have a negative impact on Data Quality.</p></li><li><p>Source Data at the start of the data pipeline is checked to see if the Data Contract is held; if not, a circuit breaker may kick in, stopping the data pipeline early to avoid processing unsuitable data.</p></li><li><p>Data Quality tests are also run in production, which can feel like duplication from testing in development, but there may be changes caused by moving to a production environment (different data, etc.).</p></li><li><p>Data is collected for observability checks by Data Observability software, looking for any anomalous data: a department budget that goes from &#163;10k to &#163;1mil or 10 10x increase in rows for a table, for example. This can replace a lot of tests, but not all of them.</p></li></ul><p><br>You&#8217;ll also be collecting Data Quality metadata to improve your Data Reliability.</p><p>Making all this work together seamlessly is not cheap and will take time, but as mentioned, poor Data Quality will also cost an organisation a lot of money. So I would recommend tackling this in an agile manner by improving Data Quality in small increments, one change at a time, starting where it will have the most impact.</p><h3>Summary</h3><p>Data Quality is a difficult subject to tackle, due to it being a slightly different problem in every organisation and never being able to get it perfectly right. That said, there are lots of options to help improve the quality of your data, so you should be able to get to &#8220;good enough&#8220; if you give Data Quality enough priority and forethought.</p><div><hr></div><p>Sponsored by <a href="https://www.theoaklandgroup.co.uk/">The Oakland Group</a>, a full service data consultancy. Download our <a href="https://weare.theoaklandgroup.co.uk/data-platform-guide">guide</a> or <a href="https://www.theoaklandgroup.co.uk/get-in-touch/">contact us</a> if you want to find out more about how we build Data Platforms!</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thedataplatform.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 The Data Platform Journal! 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[Issue #25: Interview with Justin Borgman, CEO of Data Lake Analytics Platform, Starburst!]]></title><description><![CDATA[Plus: Terraform License Change, Data Quality Resolution Process Guide, Securing Data in Azure and Building Your Own Fivetran]]></description><link>https://thedataplatform.substack.com/p/issue-25-interview-with-justin-borgman</link><guid isPermaLink="false">https://thedataplatform.substack.com/p/issue-25-interview-with-justin-borgman</guid><dc:creator><![CDATA[Jake Watson]]></dc:creator><pubDate>Tue, 22 Aug 2023 11:52:13 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/fe5a166c-99f2-4761-9473-31dc46b0c9a4_1467x823.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi all, I interviewed <a href="https://www.linkedin.com/in/justinborgman/">Justin</a> on several data topics, including startups vs. enterprises, LLMs, Data Mesh vs. Data Fabric (or a combination of both of them!), and balancing internal vs. external responsibilities as a data leader. Video and transcript below!</p><p>Also, we have the usual selection of great articles to share:</p><ul><li><p>Hashicorp Makes Terraform Licence Less Open: What is the Impact?</p></li><li><p>Massive 70-Page Guide to the data quality resolution process</p></li><li><p>How to Create a Secure Azure Data Platform</p></li><li><p>After the Modern Data Stack: Welcome back, Data Platforms</p></li><li><p>The Art of Building Your Own ELT</p></li><li><p>The Complexities of Entity Resolution Implementation</p></li><li><p>Mind the Gap: Seamless data and ML pipelines with Airflow and Metaflow</p></li></ul><div><hr></div><h3>Justin Borgman Interview</h3><p>First, the video, but for those who prefer to read, I&#8217;ve edited the video transcript below:</p><div id="youtube2-ncEi5e9hWNM" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;ncEi5e9hWNM&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/ncEi5e9hWNM?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><strong>Jake: Hi Justin, would you like to briefly introduce yourself?</strong></p><p><strong>Justin:</strong> I'm Justin Borgman, co-founder and CEO of <a href="https://www.starburst.io/">Starburst</a>. Starburst is the company behind an open-source project called <a href="https://trino.io/">Trino</a>. Essentially, we provide a Data Lake analytics platform that allows you to query data that lives both in the lake and outside of the lake, so we can really query data that lives anywhere. And that's part of what sets us apart from other platforms in the industry.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!vb5Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe051b03e-f703-4926-86e5-7e034d2be5d4_1856x1058.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!vb5Y!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe051b03e-f703-4926-86e5-7e034d2be5d4_1856x1058.png 424w, /__u/substackcdn.com/image/fetch/$s_!vb5Y!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe051b03e-f703-4926-86e5-7e034d2be5d4_1856x1058.png 848w, /__u/substackcdn.com/image/fetch/$s_!vb5Y!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe051b03e-f703-4926-86e5-7e034d2be5d4_1856x1058.png 1272w, /__u/substackcdn.com/image/fetch/$s_!vb5Y!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe051b03e-f703-4926-86e5-7e034d2be5d4_1856x1058.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!vb5Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe051b03e-f703-4926-86e5-7e034d2be5d4_1856x1058.png" width="506" height="288.4478021978022" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e051b03e-f703-4926-86e5-7e034d2be5d4_1856x1058.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:830,&quot;width&quot;:1456,&quot;resizeWidth&quot;:506,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!vb5Y!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe051b03e-f703-4926-86e5-7e034d2be5d4_1856x1058.png 424w, /__u/substackcdn.com/image/fetch/$s_!vb5Y!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe051b03e-f703-4926-86e5-7e034d2be5d4_1856x1058.png 848w, /__u/substackcdn.com/image/fetch/$s_!vb5Y!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe051b03e-f703-4926-86e5-7e034d2be5d4_1856x1058.png 1272w, /__u/substackcdn.com/image/fetch/$s_!vb5Y!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe051b03e-f703-4926-86e5-7e034d2be5d4_1856x1058.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">Source: https://www.starburst.io/platform/features/</figcaption></figure></div><p><strong>Jake: You were once the founder of <a href="https://hadoop.apache.org/">Hadoop</a> startup <a href="https://datafloq.com/read/big-data-startup-review-hadapt/">Hadapt</a>. So considering you were very involved in the Hadoop ecosystem, what do you think are the key lessons from the Hadoop era that can be applied today? Because I feel like it's file-based structure is something that has come back around again with Data lakes.</strong></p><p><strong>Justin:</strong> Yeah, I think you're absolutely right. I think that is the lasting legacy of Hadoop. I mean, really, the notion of a data lake was created during that period. I mean, the first data lakes were absolutely Hadoop data lakes, and that's where that term came to be.</p><p>I think the concept of a data lake is going to potentially live on forever because there are so many natural benefits, like the notion of leveraging open data formats, something that was pioneered by Hadoop with the creation of <a href="https://parquet.apache.org/">Parquet</a> files and <a href="https://avro.apache.org/">Avro</a> files, and all these different ways of storing data in a columnar fashion to still get good performance. But laid out in this really inexpensive commodity storage system.</p><p>I think that's another key: the legacy of Hadoop is this notion of let's store as much data as we possibly can in the cheapest possible place, where we can store it, and that's either going to be, classically, the Hadoop file system or, more often, object storage, S3 on Amazon, Azure Data Lake Storage, or Google Cloud Storage. All of them represent inexpensive storage.</p><p>Lastly, I would say this notion of open architectures was really pioneered back then, at least as it pertains to data warehousing analytics, with the notion that not only are your data formats open and your file storage, you know, inexpensive and open, but also that the means for how you process that data should perhaps also be open.</p><p>And so you have the rise of technologies like <a href="https://prestodb.io/">Presto</a> and Trino, which we&#8217;re the creators of, or <a href="https://spark.apache.org/">Spark</a>, you know, as another example, and the idea that these engines can all query the same open data formats, I think, is a really important aspect of the architecture that, again, lives on today.</p><p>Now, while Hadoop itself may be waning in popularity, you know, again, a lot of these concepts live on and have simply moved to the cloud and cloud object storage.</p><p><strong>Jake: Then you moved into <a href="https://www.teradata.com/">Teradata,</a> which looks from the outside in like a very different kind of company than a startup.</strong></p><p><strong>Did working for Teradata alter your thinking about how to approach future startups when you came back to founding Starburst?</strong></p><p><strong>Justin:</strong> Yeah, I think I&#8217;ve got two great observations from my time at Teradata: first and foremost, that enterprise customers, where Teradata really is very strong, have particular needs and requirements that internet companies don't have; they need more robust access controls, they need better governance, they need metadata management and catalogue support, and, just Kerberos integration, LDAP integration, so many different sorts of features and capabilities that frankly, somebody like Facebook just doesn't really care about. But mainstream enterprise customers very much do. And so that left an impression on sort of what it means to be &#8220;enterprise grade&#8221;. </p><p>The other observation was maybe a little bit more specific to Teradata, which is that they were really the pioneers of this idea of an enterprise data warehouse, which was always about centralising all of your data into one central data warehouse. And yet, when I got there, I realised that not one of their customers actually did that. Not one of them actually had everything in the enterprise data warehouse; they all have these different data silos, Data Mart's different applications, device data, and multiple clouds on-premise.</p><p>There is so much heterogeneity inherent to the operation of their business that this enterprise data warehouse model seemed like it was actually impossible. And that was pretty interesting to see from the Teradata vantage point because, of course, at least at the time when my company was acquired, they had $2.7 billion in revenue and were the industry leader. So this was like the best-in-class, you know, version of the enterprise data warehouse.</p><p>And yet, even their customers didn't truly centralise everything. So that was really what started to get me thinking: we need to design an architecture that actually accommodates data living outside of this central data warehouse.</p><p><strong>Jake:</strong> Yeah, I probably agree from my experience of seeing large companies try their best to centralise everything, but finding out that getting people to even use one cloud platform can be just too much work, let alone trying to get everyone to use one technology,</p><p><strong>I would say there are two major opinions of Data Architectures out there right now: Data Fabric and Data Mesh. I'm wondering what your opinions are on them.</strong></p><p><strong>Justin:</strong> So I think, you know, first of all, I'll start with the commonality, which is that I think both of them recognise that you need to be able to account for decentralised data. And I think the differences lie in sort of how you actually put that into practise, how you govern that, and how you manage that.</p><p>And at least the way that we think about it with our customers is that there are certain elements that you certainly want to centralise, and those are the things around security and access controls, management, and administration of the data platform. Those aspects likely need to be centralised.</p><p>And then I think it really depends on your organisational maturity in a way: your data maturity and data literacy. Perhaps in terms of who produces data products and who's responsible for data quality, and that perhaps influences just how much further you decentralise those processes or not. And that's more of a people-process challenge than a technology one.</p><p>And that's sort of the advice that I give customers, like, you need a technology that can handle your decentralised data, whether you choose to centralise the management, the administration, the governance, and even the data quality or not. It comes down to sort of the maturity of your decentralised teams, in the greatest embrace of a Data Mesh philosophy, you would have those domain owners being the ones who curate and create those data products, and they are responsible for that data quality. And I think there are a lot of benefits to that approach.</p><p>But I think you have to ask yourself, are we ready for that today? Do we have the people in place to facilitate that level of decentralisation? Or does it make more sense to sort of still have a centralised team that can simply reach out and access the decentralised data?</p><p><strong>Jake: I have also seen some people talk about sort of merging them both together. So you get like a best of both worlds approach, almost like a Goldilocks solution, where you use the knowledge graph of the</strong> <strong>Data Dabric with decentralisation: I don't know if you've ever seen it or have thoughts on that?</strong></p><p><strong>Justin:</strong> Yeah, that's interesting. I certainly haven't heard it expressed that way before. Yeah, no, it's an interesting idea. I mean, I think it makes sense conceptually.</p><p><strong>Jake:</strong> So moving on to data products, I'd say Starburst has been leading the charge in terms of Data Products, and is now becoming the de-facto way we look at breaking up our data in an organisation. So now that we're starting to see an adoption of Data Products in a lot of companies, <strong>have you seen any unexpected benefits or issues with Data Products, now that we're starting to see them come into production?</strong></p><p><strong>Justin:</strong> I think one unexpected, or maybe it shouldn't be expected, benefit that we see, or maybe it's more of a benefit than people expect, I guess, is that people are talking more and there's greater collaboration between consumer and producer than I think historically there has been because, you know, in the more traditional model, the data producer is sort of an anonymous, faceless, you know, human that we don't know as a data consumer. Right? And so if there are areas to be improved in that data product, whether it's adding additional fields or, or what have you, you know, I don't really even know how to begin to send that feedback back to the to the user, or even to ask questions of the data. Sometimes it's simply trying to understand the data that exists better.</p><p> But what data products were really facilitating that, that consumer producer interchange, if you will, an interaction and I think that's where people really start to see some of the unexpected benefits to your question of a data products model, data product centric model.</p><p><strong>Jake:</strong> Yeah, I seen many struggle with the relationship between data producer and consumer, but there has been a lot of talk to improve that with data contracts. I&#8217;ve also been thinking, <strong>will we start seeing a blurring of the boundary between operational and analytical planes where they work closer together? Or will it stay as two distinct planes, as it might be better to keep them separate?</strong></p><p><strong>Justin:</strong> Yeah, no, that's a good question. I think that hopefully, we will see more collaboration between those two planes in terms of, you know, I guess the the interaction around like, what the schema should, should contain, right? Like the operational side very often is not necessarily aware of what the analytical side finds valuable in terms of that data capture. And so hopefully, there is greater collaboration between the two. </p><p>I don't think the actual underlying database systems will necessarily converge. I mean, every now and then, people talk about that. Well, we have an OLAP and OLTP database that does both. I think that's a little bit more of a challenge around the physics of just being read optimised versus write optimised. </p><p>But I think, hopefully greater collaboration between the humans involved on those two sides, because I do think there's a lot of value.</p><p><strong>Jake:</strong> <strong>Moving on to Data Catalogs. With <a href="https://www.starburst.io/platform/features/gravity/">Starburst Gravity</a> recently being released, what I've also started to notice is Data Catalog are being introduced into Data Processing products like <a href="https://www.databricks.com/">Databricks</a> and Unity Catalog, or even into Data Orchestration with <a href="https://dagster.io/">Dagster</a>. Do you think this is going to be an increasing trend where we see products lean more into data governance?</strong></p><p><strong>Justin:</strong> Yes, I think in conjunction with some of the points you brought up earlier around data being decentralised, the role of the catalogue becomes more important and more essential, almost like table stakes for the whole thing to work. Because you now need to account for data that lives outside of one single database. And so yes, I think this is a theme and is becoming increasingly a required capability for customers.</p><p><strong>Jake: To be a bit sneaky, are you going to start to expand out Gravity as you go on over the years, or is that something behind a NDA?</strong></p><p><strong>Justin:</strong> Yeah, no, we do intend to expand it. I think our mission is to make distributed architectures as easy and seamless as possible for our customers. And that means that anything that we can do to make that a more streamlined experience is within scope from our standpoint, and that's everything from metadata management to access controls, which, of course, we now provide in <a href="https://www.starburst.io/platform/starburst-galaxy/">Galaxy</a>, our SaaS product, we provide attribute-based access control, role-based access control, and very fine-grained access control.</p><p>We think these are sort of table stakes. And being able to centrally define those and enforce them across all the different data sources you connect to has a lot of value for customers. So yes, I think all of those things are within scope.</p><p><strong>Jake:</strong> <strong>There have been a few people in data saying that big data is dead. I don't know if you've seen the famous <a href="https://motherduck.com/blog/big-data-is-dead/">MotherDuck article</a> claiming that? As someone who's from the original days of big data, you might know some people who say big data never actually happened. So good to have your take on whether it happen? Is it still happening? </strong></p><p><strong>Justin:</strong> Yeah, sure. I mean, I  disagree with the idea that big data is dead. I mean, I think that it makes sense for MotherDuck to say that, and, look, I think DuckDB is a great database system. There will always be point solutions and specific use-case solutions for specific problems.</p><p>You know, one of my greatest influences from a database perspective is <a href="https://en.wikipedia.org/wiki/Michael_Stonebraker">Mike Stonebreaker</a>, who's a professor at MIT here in Boston, where I'm based. He is the creator of Ingress, <a href="https://www.postgresql.org/">Postgres</a>, <a href="https://www.vertica.com/">Vertica</a>, and so many other different database systems; you won the Turing Award; he's probably one of the leading computer scientists of our time, certainly as it pertains to databases; and one of his most famous statements was that there's no one-size-fits-all database and that you're always going to have purpose built database systems. And I think that's absolutely true. And I think <a href="https://duckdb.org/">Duck DB</a> is just an example of that.</p><p>But the idea that big data is dead, that we don't need to analyse all of our data, or something to that effect, I think is certainly not true. And I think with the increasing attention towards LLM and Generative AI, if anything, I would say big data is more alive than ever before, because your models are only as good as the data that you train them on. And very often, at least as it pertains to LLMs, more data is usually better to have an even more accurate model. So, I think understanding your business holistically is really important. So, you know, while we don't think you'll centralise all your data in one data warehouse, we think that having access to as much data as possible is really, really important.</p><p><strong>Jake:</strong> Thanks, and that brings us nicely to my next question: <strong>I'm wondering what&#8217;s going to be Starburst's future with Large Language Models (LLMs)? Say, can you start integrating them into your products or finding other ways of communicating with them?</strong></p><p><strong>Justin:</strong> Yeah, I think so in a couple of ways. First of all, within the product itself, we've already actively prototyped. And something that we'll be introducing soon is the notion of natural language to SQL translation, and I think that's low hanging fruit for the industry. I don't think that we'll be alone in offering that; I think many, many, many vendors will likely offer that it's actually fairly straightforward to just be able to take natural language and turn those into SQL queries.</p><p>I think the harder stuff that is maybe even slightly more interesting because it's hard, is the automatic curation and creation of data products, back to your earlier question (on Data Catalog), you know, can we help facilitate and present data products that consumers are going to find valuable in their analysis. That's a little bit longer lead time, but it's also an area that we think is really interesting.</p><p>And then I'll say, broadly, that by virtue of us being able to provide access to all of the data in your enterprise, we want to be the access layer to help you, as the customer, build and train your own LLMs that are really specific to your business and derive a proprietary competitive advantage for you. Right? I think Chat GPT is a great technology to experiment with and have some fun with. But I think where the real value is going to come from enterprise customers is when they're training themselves using their own proprietary enterprise data.</p><p>And that won't be Chat GPT, most likely, right? You certainly don't want GPT training on your data. So I think those are the types of things that are very interesting from our perspective.</p><p><strong>Jake:</strong> Yeah. I'm constantly interested to see how it's going to turn out, for example, where we are going to end up with like open source models, like we had with the previous ML cycles, or everyone's going to end up using the <a href="https://openai.com/">Open AI</a>, which has some concerns with one company dominating.</p><p><strong>Justin:</strong> And I will say, and obviously, we're big believers in open source in general, that I do think the open source LLM world is just getting going. And I think that'll be a really big force. I think, to your point, people aren't going to want to trust a vendor with their data. And I think these open-source models are getting really good.</p><p><strong>Jake:</strong> Yeah, agree. Moving on to data leadership, <strong>how do you balance running a large business while still keeping an understanding of your customers needs and delivering the technology they need to run their businesses?</strong></p><p><strong>Justin:</strong> I think the key is, you have to find the right balance between time spent internally and externally. And what I mean by that is that spending time with customers, to me, is almost like oxygen; I need it, and it helps inform our product roadmap. </p><p>And, you know, it goes back to that old saying: if you ask somebody 120 years ago, what they wanted in terms of personal transportation, they would say I wanted a faster horse. You know, you have to really spend time with customers to understand they actually don't want a faster horse; they just want to get from point A to point B faster. And that maybe a car would actually be the better way to do that.</p><p>And so, you know, if you want to make revolutionary change, you know, disruptive change, and not just incremental change, you really have to spend a lot of time with your customers, empathising with and understanding their challenges at a very root level, because otherwise, you just listen to what they say. </p><p>And an average product manager can do that, you know, okay, faster horse, we'll go see if we can work on the horse&#8217;s diet or something and get 5% more speed out of a horse, but the person that really lives with that customer and spends a lot of time with them realises, you know, the real underlying requirements and can come up with creative solutions that might actually be more transformative to their lives.</p><p>So, to me, that's huge. And something that I don't think any leader should ever lose sight of. But at the same time, you also need to spend time internally; otherwise, you know, things don't get done. So it's about finding the right balance.</p><p><strong>Jake:</strong> To me, there&#8217;s like a three-way thing where there are your internal customers, your current (external) customers, and the wider ecosystem where your prospective customers are, as well as keeping up with the latest trends coming around the corner.</p><p><strong>Justin:</strong> I totally agree. It's a dynamic ecosystem that's always changing and evolving. And you need to be consciously aware that nothing in our space is ever static.</p><p><strong>Jake:</strong> And finally, to finish: the future. So we&#8217;re already halfway through 2023, so I can't tell you what trends are going to emerge in 2023! <strong>So what trends do you think will emerge in the mainstream in 2024?</strong></p><p><strong>Justin:</strong> Well, I have to say, You're the first one to ask me for 2024 predictions. So I guess this will be my first 2024 prediction here in the summer. But I will say, you know, I think that, you know, going back to some of your questions around Generative AI, I think vector databases will be an interesting thing to watch.</p><p>I think open file formats, or, I'll say, modern open file formats or next generation open file formats like <a href="https://iceberg.apache.org/">Iceberg</a>, will gain a lot of momentum. We're seeing that already. I think that will continue.</p><p>I think Iceberg, you know, will win the table format war, maybe that's the most provocative thing I'll say today, and it will just become the dominant table format.</p><p>And then, you know, broadly, I'll just say I think increased focus on collaboration and data products, like, how do we create that? That collaboration, and that two-way dialogue between, you know, the data domain owner and the data consumer. So I think data products will be big next year as well.</p><div><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thedataplatform.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/thedataplatform.substack.com/subscribe"><span>Subscribe now</span></a></p><div><hr></div><h3><strong><a href="https://www.theregister.com/2023/08/11/hashicorp_bsl_licence/">HashiCorp's new license is still open source-ish</a></strong></h3><p>Most modern Data Platforms use <a href="https://www.redhat.com/en/topics/automation/what-is-infrastructure-as-code-iac">Infrastructure as Code</a> (IaC), which allows you to define your infrastructure as code in development and then run the same code in production, so you cut out errors from making manual changes in production.</p><p><a href="https://www.hashicorp.com/">Hashicorp</a>&#8217;s <a href="https://www.hashicorp.com/products/terraform">Terraform</a> is arguably the most common IaC solution, but they have changed their licence from allowing anyone to run their software for free in production to now only allowing companies who do not compete with Hashicorp&#8217;s products.</p><p>Now, 99% of companies will still be able to use open-source Terraform with this licence change, but it will impact one of the biggest strengths of Terraform: it&#8217;s community of tooling around it, which allows you to extend Terraform in a number of useful ways (integrations, security scanning, etc.). With this licence change, some of those tools may no longer be able to use open source Terraform, potentially killing off some of the community overnight.</p><p>In response, some of the Terraform community has started <a href="https://opentf.org/">OpenTF</a>, which is threatening an open source fork of Terraform that will split Terraform usage in the same way <a href="https://logit.io/blog/post/aws-elasticsearch-vs-opensearch/#aws-elasticsearch-vs-opensearch-vs-open-distro-for-elasticsearch-odfe">ElasticSearch and OpenSearch</a> did, which is not great news long term.</p><p>I can also see lawyers for large enterprises vetoing Terraform, as it can be difficult to work out what exactly is &#8220;competing&#8220; with Hashicorp products.</p><p>On the plus side, maybe I&#8217;ll get to use <a href="https://www.pulumi.com/">Pulumi</a> more, which is fully open source and I suspect works better at scale than Terraform modules, with it being able to be written in a existing programming language.</p><div><hr></div><h3><a href="https://www.linkedin.com/posts/mafreeman2_the-data-quality-resolution-process-activity-7097960537015128064-BcdM?utm_source=share&amp;utm_medium=member_desktop">Guide to Data Quality Resolution Process</a></h3><p>Considering Data Engineers can <a href="https://www.montecarlodata.com/blog-data-quality-survey">spend on average, up to 50%</a> of their time fixing Data Quality issues, Mark&#8217;s in-depth 70-page guide on how to best respond to these issues could be the most impactful guide you read! (Aside from <a href="/__u/thedataplatform.substack.com/p/how-to-build-a-data-platform">mine</a> &#128521;).</p><p>Please note that this is not a guide to preventing Data Quality issues; <a href="https://www.oreilly.com/library/view/data-quality-fundamentals/9781098112035/">that&#8217;s a separate book in itself</a>.</p><div><hr></div><h3><strong><a href="https://www.theoaklandgroup.co.uk/blog/how-to-create-a-secure-azure-data-platform/">How to Create a Secure Azure Data Platform (Sponsored Article)</a></strong></h3><p>My employer, Oakland, has a lot of experience building secure Data Platforms in critical sectors like Telecoms and UK Government organisations, where only Data Platforms with the highest security get approved for production.</p><p>Oakland Senior Data Engineer <a href="https://www.linkedin.com/in/abigail-brown-8b4380131/">Abigail Brown</a> shares some of this experience on how to build a secure Azure Data Platform so you too can build a solution that has &#8220;Defence in Depth&#8221;.</p><p>I&#8217;ll also have a similar article that is platform neutral for my guide coming out soon!</p><div><hr></div><h3><a href="https://substack.timodechau.com/p/after-the-modern-data-stack-welcome">After the Modern Data Stack: Welcome back, Data Platforms</a></h3><p>There are quite a few &#8220;<a href="https://www.thoughtspot.com/data-trends/best-practices/modern-data-stack">Modern Data Stack</a> (MDS) is Dead!&#8220; articles out there, but they're usually written by vendors trying to kill off MDS to increase their profits and therefore usually miss why MDS exists in the first place.</p><p>This is written by Timo Dechau, Founder of <a href="https://www.deepskydata.com/">Deepskydata</a>, a training platform for marketing data collection, who offers a refreshingly more vendor-neutral take by explaining why the Modern Data Stack took off and is very popular: but also why you wanted to adopt a more closed Data Platform.</p><p>I will say these &#8220;Post-Modern Data Stacks&#8221; likely suit small to medium teams who have a decent budget (you are putting an expensive layer on an already expensive data stack), but I can see the point of them if you fit this audience.</p><div><hr></div><h3><strong><a href="https://medium.com/@hugolu87/the-art-of-building-your-own-elt-72a76d9df0f9">The Art of Building Your Own ELT</a></strong></h3><p>Ever wanted to build your own ELT / Integration / data movement software like <a href="https://www.fivetran.com/">Fivetran</a>? Hugo Lu, Founder of <a href="https://getorchestra.io/">Orchestra</a>, show you how to build the basics of one.</p><div><hr></div><h3><strong><a href="https://towardsdatascience.com/the-complexities-of-entity-resolution-implementation-a2284e54171">The Complexities of Entity Resolution Implementation</a></strong></h3><p>Entity Resolution or Master Data Management (MDM) software is expensive, so how difficult would it be to build your own solution to match and deduplicate data?</p><p>Stefan Berkner, CTO of Entity Resolution software <a href="https://tilores.io/">Tilores</a>, points out that it can get very difficult indeed.</p><div><hr></div><h3><strong><a href="https://medium.com/apache-airflow/mind-the-gap-seamless-data-and-ml-pipelines-with-airflow-and-metaflow-7e40213dd719">Mind the Gap: Seamless data and ML pipelines with Airflow and Metaflow</a></strong></h3><p>I&#8217;ve heard some complain that <a href="https://airflow.apache.org/">Airflow</a> is not the best place to run for Machine Learning (ML) or Artificial Intelligence (AI) pipelines, as there are dedicated tools like <a href="https://metaflow.org/">Metaflow</a> designed around that, giving you better integration with ML and AI software and models.<br><br>But Metaflow is not designed for Data Engineering pipelines, so you may end up doubling the maintenance of both by running them side by side.</p><p>But Michael Gregory and Valay Dave, Engineers at <a href="https://www.astronomer.io/">Astronomer</a> and <a href="https://outerbounds.com/">Outerbounds</a> respectively, offer a better way(?) by running Metaflow inside of Airflow.</p><div><hr></div><p>Sponsored by <a href="https://www.theoaklandgroup.co.uk/">The Oakland Group</a>, a full service data consultancy. Download our <a href="https://weare.theoaklandgroup.co.uk/data-platform-guide">guide</a> or <a href="https://www.theoaklandgroup.co.uk/get-in-touch/">contact us</a> if you want to find out more about how we build Data Platforms!</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thedataplatform.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 The Data Platform Journal! 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[Issue #24: Book Review of Data Management at Scale]]></title><description><![CDATA[Plus: Cloud Cost Management, DuckDB ADBC - 38x Better Performance Than ODBC, How to Check Two SQL Tables Are the Same and Comparing Open Source Soda with Great Expectations.]]></description><link>https://thedataplatform.substack.com/p/issue-24-book-review-of-data-management</link><guid isPermaLink="false">https://thedataplatform.substack.com/p/issue-24-book-review-of-data-management</guid><dc:creator><![CDATA[Jake Watson]]></dc:creator><pubDate>Tue, 08 Aug 2023 10:18:27 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/1be475d9-c951-4c03-88c5-1dec35f103e1_678x543.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hello all, this week we have:</p><ul><li><p>Short Book Review: Data Management at Scale, 2nd Edition</p></li><li><p>Cloud Cost Management: How to Optimize and Control Cloud Expenses</p></li><li><p>Reviewing &#8220;Data Modeling with Snowflake&#8221;</p></li><li><p>Platform Engineering is Just DevOps with a Product Mindset</p></li><li><p>How to Check Two SQL Tables Are the Same</p></li><li><p>A Comparative Analysis of Open Source Data Quality Libraries: Great Expectations and Soda Core</p></li><li><p>DuckDB ADBC - 38x Better Performance Than ODBC</p></li></ul><p>Now some bad news: I&#8217;m going to change my newsletter schedule to twice a week, so I can balance finishing off the <a href="/__u/thedataplatform.substack.com/p/how-to-build-a-data-platform">guide</a> and working on exciting new projects. I may still post weekly if there is a big news event and if my bandwidth increases.  </p><div><hr></div><h3><a href="https://www.oreilly.com/library/view/data-management-at/9781098138851/">Short Book Review: Data Management at Scale, 2nd Edition</a></h3><p>I&#8217;ll start with a summary for busy readers: I highly recommend this book if you architect large Data Platforms or are just looking to get started in this area. It will give you a wealth of ideas and examples to use in practise while also mentioning their tradeoffs. </p><p>It is written by Piethein Strengholt, who is the Chief Data Officer of Microsoft Netherlands and a former Principal Architect at Dutch ban, <a href="https://www.abnamro.com/en/home">ABN AMRO</a>. He also has a <a href="https://piethein.medium.com/">great blog</a> that I&#8217;d recommend reading if you&#8217;re interested in Data Mesh architectures and Azure.</p><p>While the book subtitle is &#8220;Modern Data Architecture with Data Mesh and Data Fabric&#8220; and the book delivers that, by giving detail on both approaches and also spends a lot of time devoted to Data Products, so if you don&#8217;t believe in them, this probably isn&#8217;t the book for you.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!b1jA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd31ef566-30ae-49a2-9914-da078663ef17_875x709.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!b1jA!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd31ef566-30ae-49a2-9914-da078663ef17_875x709.png 424w, /__u/substackcdn.com/image/fetch/$s_!b1jA!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd31ef566-30ae-49a2-9914-da078663ef17_875x709.png 848w, /__u/substackcdn.com/image/fetch/$s_!b1jA!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd31ef566-30ae-49a2-9914-da078663ef17_875x709.png 1272w, /__u/substackcdn.com/image/fetch/$s_!b1jA!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd31ef566-30ae-49a2-9914-da078663ef17_875x709.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!b1jA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd31ef566-30ae-49a2-9914-da078663ef17_875x709.png" width="614" height="497.5154285714286" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d31ef566-30ae-49a2-9914-da078663ef17_875x709.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:709,&quot;width&quot;:875,&quot;resizeWidth&quot;:614,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!b1jA!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd31ef566-30ae-49a2-9914-da078663ef17_875x709.png 424w, /__u/substackcdn.com/image/fetch/$s_!b1jA!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd31ef566-30ae-49a2-9914-da078663ef17_875x709.png 848w, /__u/substackcdn.com/image/fetch/$s_!b1jA!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd31ef566-30ae-49a2-9914-da078663ef17_875x709.png 1272w, /__u/substackcdn.com/image/fetch/$s_!b1jA!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd31ef566-30ae-49a2-9914-da078663ef17_875x709.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">Source: https://piethein.medium.com/data-management-at-scale-91118a1a7d83</figcaption></figure></div><p>The book does stray for a chapter or two outside analytical data: there is a chapter focusing on how data is created in the <a href="https://www.arkatechture.com/blog/the-difference-between-operational-and-analytical-data-systems">operational data plane</a> and having a strong look at the pros and cons of <a href="https://aws.amazon.com/event-driven-architecture/">Event Driven Architectures</a> (EDA) which is an increasingly common architecture in large organisations and often has a large impact on how you analyse your data.</p><p>While some might think focusing on the operational data plane is a distraction and skip those sections, it does give you more insight into how data is created at scale. </p><p>Another aspect of the book I liked that it was not purely a technical architecture guide, it also covered constructing teams, processes, platform services, <a href="https://en.wikipedia.org/wiki/Master_data_management">Master Data Management</a> (MDM) and data governance which helps give a 360 view of Data Management.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!oSWM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F592eb6af-1891-4192-8f1d-898d3952092f_875x628.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!oSWM!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F592eb6af-1891-4192-8f1d-898d3952092f_875x628.png 424w, /__u/substackcdn.com/image/fetch/$s_!oSWM!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F592eb6af-1891-4192-8f1d-898d3952092f_875x628.png 848w, /__u/substackcdn.com/image/fetch/$s_!oSWM!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F592eb6af-1891-4192-8f1d-898d3952092f_875x628.png 1272w, /__u/substackcdn.com/image/fetch/$s_!oSWM!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F592eb6af-1891-4192-8f1d-898d3952092f_875x628.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!oSWM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F592eb6af-1891-4192-8f1d-898d3952092f_875x628.png" width="560" height="401.92" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/592eb6af-1891-4192-8f1d-898d3952092f_875x628.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:628,&quot;width&quot;:875,&quot;resizeWidth&quot;:560,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!oSWM!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F592eb6af-1891-4192-8f1d-898d3952092f_875x628.png 424w, /__u/substackcdn.com/image/fetch/$s_!oSWM!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F592eb6af-1891-4192-8f1d-898d3952092f_875x628.png 848w, /__u/substackcdn.com/image/fetch/$s_!oSWM!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F592eb6af-1891-4192-8f1d-898d3952092f_875x628.png 1272w, /__u/substackcdn.com/image/fetch/$s_!oSWM!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F592eb6af-1891-4192-8f1d-898d3952092f_875x628.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">Source: https://piethein.medium.com/data-management-at-scale-91118a1a7d83</figcaption></figure></div><p>The only minor negative is all the architecture diagrams are drawn using Azure, Microsoft and Databricks components, though Piethein keeps his description of architectures fairly vendor neutral, so I feel confident AWS and GCP users can still get a lot of insight from this book.</p><p>I wouldn&#8217;t recommend making this your first book in data: I&#8217;d look instead at Joe Reis and Matt Housley&#8217;s excellent <a href="https://www.oreilly.com/library/view/fundamentals-of-data/9781098108298/?_gl=1*r5t4ur*_ga*MTgyMzA2MjM2MS4xNjg4ODExNDQ3*_ga_092EL089CH*MTY5MTA3OTcwMi45LjEuMTY5MTA3OTgyOS41OC4wLjA.">Fundamentals of Data Engineering</a> and possibly read Zhamak Dehghani&#8217;s <a href="https://www.oreilly.com/library/view/data-mesh/9781492092384/">Data Mesh</a> book, as Piethein doesn&#8217;t go into the details on why you&#8217;d might build a Data Mesh as much as Zhamark does.</p><p>Also, this is less useful if you run a small data team (3 to 6 people), as you&#8217;ll have little need to adapt to the scalable Data Platform patterns mentioned in this book, as Piethein says in one of his blogs:</p><blockquote><p>&#8220;If your company has a lower level of data management maturity, a centralized approach in the beginning is more appropriate.&#8221; </p></blockquote><p>Which I&#8217;d absolutely agree with.</p><div><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thedataplatform.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/thedataplatform.substack.com/subscribe"><span>Subscribe now</span></a></p><div><hr></div><h3><a href="https://www.thoughtspot.com/data-trends/cloud/cloud-cost-management">Cloud Cost Management: How to Optimize and Control Cloud Expenses</a></h3><p>Managing cloud costs is often a constant battle, especially during a period of high inflation, as costs are usually going up for running the same services while budgets stay flat.</p><p>Sonny Rivera, Senior Analytics Evangelist at ThoughtSpot, goes through some valuable tips to reduce cloud costs and also adds his thoughts on why managing cloud costs can be difficult. </p><p>I will also use this opportunity to shamelessly post that my colleague Jack Evans wrote a <a href="https://www.theoaklandgroup.co.uk/how-to-manage-spiraling-cloud-costs/">blog on managing cloud costs</a> based on our many years of experience on this topic. </p><div><hr></div><h3><strong><a href="https://medium.com/snowflake/reviewing-data-modeling-with-snowflake-by-serge-gershkovich-f81a7b3e9665">Reviewing &#8220;Data Modeling with Snowflake&#8221; by Serge Gershkovich</a></strong></h3><p>It&#8217;s been awhile since I&#8217;ve used Snowflake, so while I&#8217;ve seen this book get rave reviews, I haven&#8217;t had much time to read it myself. But here is one of those glowing reviews from Daan Bakboord, Managing Director Data &amp; AI of <a href="https://www.pong.nl/">Pong</a>.</p><p>I&#8217;m also glad to see a modelling book focused on modern cloud data warehouses, which sometimes require thinking beyond just implementing another <a href="https://www.kimballgroup.com/data-warehouse-business-intelligence-resources/kimball-techniques/dimensional-modeling-techniques/">Kimball data model</a> as warehouses like Snowflake operate very differently from regular database and <a href="https://www.fivetran.com/blog/star-schema-vs-obt">can have different performance characteristics</a>. </p><div><hr></div><h3><strong><a href="https://stackoverflow.blog/2023/07/26/platform-engineering-is-just-devops-with-a-product-mindset/">Platform engineering is just DevOps with a product mindset</a></strong></h3><p>A lot of the problems in data can come back to infrastructure and DevOps, as data can only move as fast and just important, change as fast, as the infrastructure it&#8217;s built on. </p><p>Luca Galante, Product at Platform Engineering company <a href="https://humanitec.com/">Humanitec</a>, talks about the common issues in DevOps and infrastructure and how Platform Engineering could solve them.</p><p>Want more background on how to automate your data infrastructure? I wrote  a <a href="/__u/thedataplatform.substack.com/p/how-to-build-a-data-platform-dataops">section</a> on it as part of my &#8220;<a href="/__u/thedataplatform.substack.com/p/how-to-build-a-data-platform">How to Build a Data Platform</a>&#8220; guide a few weeks back.</p><div><hr></div><h3><a href="https://remy.wang/blog/sql-eq.html">How to Check Two SQL Tables Are the Same</a></h3><p>Database PHD Student Remy Wang investigates how to compare two tables in a database, which isn&#8217;t quite as straight-forward as you might think it is. </p><p><a href="https://news.ycombinator.com/item?id=36889656">Hacker News</a> also has a great discussion on this, talking about what tooling you can use as well to compare tables.</p><p>I&#8217;ll also add my thoughts on this: where possible, compare numbers, not text, if you can, as text data is more likely to differ even though the content is the same due to different <a href="https://en.wikipedia.org/wiki/Character_encoding">character encodings</a> being used to create the data. It&#8217;s also often much slower to compare text than numbers.</p><div><hr></div><h3><a href="/__u/dataqualityguru.substack.com/p/open-source-data-quality-tools-comparison">A Comparative Analysis of Open Source Data Quality Libraries: Great Expectations and Soda Core</a></h3><p>For fans of data quality content, Bruno Gonzalez<strong>&nbsp;</strong>has just started a newsletter dedicated to it, with one of their first posts doing a in-depth comparison of two of the most popular open-source data quality libraries.</p><p>My personal thoughts on this are: open-source <a href="https://greatexpectations.io/">Great Expectations</a> has more features but is arguably harder to use than <a href="https://docs.soda.io/soda-cl/soda-cl-overview.html">Soda CL</a> and <a href="https://www.soda.io/">Soda</a> has a more mature managed cloud version than Great Expectations (which is still in beta).</p><div><hr></div><h3><a href="https://duckdb.org/2023/08/04/adbc.html">DuckDB ADBC - 38x Better Performance Than ODBC</a></h3><p>This post is about how DuckDB, a analytical variant of <a href="https://www.sqlite.org/index.html">SQLite</a> (so a file-based analytical database) has now adopted a new type of connection driver, <a href="https://arrow.apache.org/blog/2023/01/05/introducing-arrow-adbc/">Arrow Database Connectivity (ADBC)</a>. </p><p>What is most interesting is the performance benchmark than blows ODBC out of the water:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!V2nx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3333b11e-ac22-4e32-971d-2ed9c9b771c1_930x142.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!V2nx!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3333b11e-ac22-4e32-971d-2ed9c9b771c1_930x142.png 424w, /__u/substackcdn.com/image/fetch/$s_!V2nx!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3333b11e-ac22-4e32-971d-2ed9c9b771c1_930x142.png 848w, /__u/substackcdn.com/image/fetch/$s_!V2nx!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3333b11e-ac22-4e32-971d-2ed9c9b771c1_930x142.png 1272w, /__u/substackcdn.com/image/fetch/$s_!V2nx!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3333b11e-ac22-4e32-971d-2ed9c9b771c1_930x142.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!V2nx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3333b11e-ac22-4e32-971d-2ed9c9b771c1_930x142.png" width="930" height="142" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3333b11e-ac22-4e32-971d-2ed9c9b771c1_930x142.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:142,&quot;width&quot;:930,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5228,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!V2nx!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3333b11e-ac22-4e32-971d-2ed9c9b771c1_930x142.png 424w, /__u/substackcdn.com/image/fetch/$s_!V2nx!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3333b11e-ac22-4e32-971d-2ed9c9b771c1_930x142.png 848w, /__u/substackcdn.com/image/fetch/$s_!V2nx!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3333b11e-ac22-4e32-971d-2ed9c9b771c1_930x142.png 1272w, /__u/substackcdn.com/image/fetch/$s_!V2nx!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3333b11e-ac22-4e32-971d-2ed9c9b771c1_930x142.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Source: https://duckdb.org/2023/08/04/adbc.html</figcaption></figure></div><p>Why does this matter? Most database connections with clients use ODBC/JDBC and I&#8217;ve configured connections using these drivers dozens of times in the past. Even if you don&#8217;t use ODBC/JDBC directly, it&#8217;s very likely you are using some kind of paid managed integration solution like <a href="https://www.fivetran.com/">Fivetran</a> that uses the same drivers in a preconfigured connection. </p><p>So adopting ADBC may give you massive performance improvements when used with columnar database (DuckDB, Snowflake, &#8230;).</p><div><hr></div><p>Sponsored by <a href="https://www.theoaklandgroup.co.uk/">The Oakland Group</a>, a full service data consultancy. Download our <a href="https://weare.theoaklandgroup.co.uk/data-platform-guide">guide</a> or <a href="https://www.theoaklandgroup.co.uk/get-in-touch/">contact us</a> if you want to find out more about how we build Data Platforms!</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thedataplatform.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 The Data Platform Journal! 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[Issue #23: Interview with Tom Baeyens, CTO of Data Quality Platform, Soda! ]]></title><description><![CDATA[Plus: Using Query Metadata to Improve Performance, Building a Real-Time Analytics Database, What Is Query Driven Data Modeling?, Reverse ETL 101 and AWS S3 Internals Deep Dive.]]></description><link>https://thedataplatform.substack.com/p/issue-23-interview-with-tom-baeyens</link><guid isPermaLink="false">https://thedataplatform.substack.com/p/issue-23-interview-with-tom-baeyens</guid><dc:creator><![CDATA[Jake Watson]]></dc:creator><pubDate>Tue, 01 Aug 2023 11:23:14 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c26c3640-e017-4203-bcc5-7b6473c16da4_1232x765.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi all, something new this week by leading our newsletter with a interview with <a href="https://www.linkedin.com/in/tombaeyens/">Tom Baeyens</a> CTO of <a href="https://www.soda.io/">Soda</a>. We discuss the Soda platform, common Data Quality issues and the future of Soda and Data Quality.</p><p>Plus, we have usual excellent set of videos and articles to share:</p><ul><li><p>Starbursts Smart Indexing and Databricks Liquid Clustering - Using Query Metadata to Improve Performance</p></li><li><p>Building a Real-Time Analytics Database</p></li><li><p>What Is Query Driven Data Modeling?</p></li><li><p>What Are &#8220;Data Clean&nbsp;Rooms&#8221;?</p></li><li><p>Reverse ETL 101</p></li><li><p>Building and operating a pretty big storage system called S3</p></li></ul><div><hr></div><h3>Tom Baeyens Interview </h3><p><strong>Jake: Hi Tom, would you like to introduce yourself?</strong></p><p><strong>Tom: </strong>I'm co-founder and CTO at <a href="https://www.soda.io/">Soda</a>. I'm passionate about data. My common theme has been to build <a href="https://en.wikipedia.org/wiki/Domain-specific_language">Domain-Specific Languages</a> (DSL) that allow more people to automate their work. I've done this first on workflows and now in data quality. </p><p>I&#8217;ve also contributed heavily to open source: building software that is open source is not only good for business, it also helps the world become a better place.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!VJ-f!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1886fc5b-43e3-4a20-a6de-417831730139_3840x4219.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!VJ-f!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1886fc5b-43e3-4a20-a6de-417831730139_3840x4219.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!VJ-f!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1886fc5b-43e3-4a20-a6de-417831730139_3840x4219.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!VJ-f!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1886fc5b-43e3-4a20-a6de-417831730139_3840x4219.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!VJ-f!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1886fc5b-43e3-4a20-a6de-417831730139_3840x4219.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!VJ-f!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1886fc5b-43e3-4a20-a6de-417831730139_3840x4219.jpeg" width="264" height="290.1098901098901" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1886fc5b-43e3-4a20-a6de-417831730139_3840x4219.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1600,&quot;width&quot;:1456,&quot;resizeWidth&quot;:264,&quot;bytes&quot;:3170404,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!VJ-f!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1886fc5b-43e3-4a20-a6de-417831730139_3840x4219.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!VJ-f!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1886fc5b-43e3-4a20-a6de-417831730139_3840x4219.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!VJ-f!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1886fc5b-43e3-4a20-a6de-417831730139_3840x4219.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!VJ-f!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1886fc5b-43e3-4a20-a6de-417831730139_3840x4219.jpeg 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">Source: Tom Beayens</figcaption></figure></div><p><strong>Jake:</strong> <strong>How did the idea of building a Data Quality Platform come about?</strong></p><p><strong>Tom:</strong> We were working in the data management space. As more data became available, we realised that data quality was becoming the main bottleneck. New cloud -native data technologies also required new approaches to data quality.</p><h4>Soda Platform</h4><p><strong>Jake: Could you give an overview of Soda and the challenges it solves?</strong></p><p><strong>Tom:</strong> Businesses increasingly thrive on analytical data. Soda helps companies prevent bad data from killing good business. Imagine the confusion in a board room when a report indicates business is going down and that there is doubt if the data is correct or not. </p><p>Another example is a recommendation engine that is trained on bad data and starts to recommend the wrong products. For large retail shops, recommendations can drive up to 35% of the revenue. It's easy to see that this has a major impact and large potential damages.</p><p>The way we help is by checking new data each time it is produced. Engineers as well as analysts can configure what must be checked in a declarative checks language. There is the ability for both automated and very explicit checks.</p><p><strong>Jake:</strong> <strong>What makes Soda stand out from the competition?</strong></p><p><strong>Tom:</strong> The declarative language in which both engineers and analysts can express data quality checks. Many people in the organisation know and work with data, but often only a fraction of them know how to code in, say, Python. The <a href="https://docs.soda.io/soda-cl/soda-cl-overview.html">SodaCL</a> language is created so that all those people can contribute checks and keep the data in great shape. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!FgZM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F079dd5df-6adf-49a5-a5ff-8126d01823e2_517x451.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!FgZM!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F079dd5df-6adf-49a5-a5ff-8126d01823e2_517x451.png 424w, /__u/substackcdn.com/image/fetch/$s_!FgZM!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F079dd5df-6adf-49a5-a5ff-8126d01823e2_517x451.png 848w, /__u/substackcdn.com/image/fetch/$s_!FgZM!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F079dd5df-6adf-49a5-a5ff-8126d01823e2_517x451.png 1272w, /__u/substackcdn.com/image/fetch/$s_!FgZM!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F079dd5df-6adf-49a5-a5ff-8126d01823e2_517x451.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!FgZM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F079dd5df-6adf-49a5-a5ff-8126d01823e2_517x451.png" width="517" height="451" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/079dd5df-6adf-49a5-a5ff-8126d01823e2_517x451.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:451,&quot;width&quot;:517,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:22274,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!FgZM!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F079dd5df-6adf-49a5-a5ff-8126d01823e2_517x451.png 424w, /__u/substackcdn.com/image/fetch/$s_!FgZM!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F079dd5df-6adf-49a5-a5ff-8126d01823e2_517x451.png 848w, /__u/substackcdn.com/image/fetch/$s_!FgZM!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F079dd5df-6adf-49a5-a5ff-8126d01823e2_517x451.png 1272w, /__u/substackcdn.com/image/fetch/$s_!FgZM!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F079dd5df-6adf-49a5-a5ff-8126d01823e2_517x451.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">Example Soda CL configuration. Source: https://docs.soda.io/soda-cl/soda-cl-overview.html</figcaption></figure></div><p>Our tooling helps data teams take ownership and accept contributions from anyone in the organisation. A second unique aspect is that we have a built-in <a href="https://www.soda.io/resources/cloud-metrics-store">metric store</a> that enables <a href="https://docs.soda.io/soda-cl/anomaly-score.html">anomaly detection</a> and other change over time thresholds for checks.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!DyhX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F758d0b75-66d7-4711-bba2-a49ab7231271_2208x1260.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!DyhX!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F758d0b75-66d7-4711-bba2-a49ab7231271_2208x1260.png 424w, /__u/substackcdn.com/image/fetch/$s_!DyhX!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F758d0b75-66d7-4711-bba2-a49ab7231271_2208x1260.png 848w, /__u/substackcdn.com/image/fetch/$s_!DyhX!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F758d0b75-66d7-4711-bba2-a49ab7231271_2208x1260.png 1272w, /__u/substackcdn.com/image/fetch/$s_!DyhX!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F758d0b75-66d7-4711-bba2-a49ab7231271_2208x1260.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!DyhX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F758d0b75-66d7-4711-bba2-a49ab7231271_2208x1260.png" width="648" height="369.84065934065933" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/758d0b75-66d7-4711-bba2-a49ab7231271_2208x1260.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:831,&quot;width&quot;:1456,&quot;resizeWidth&quot;:648,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Monitor History Orders Row Count Anomaly Detection&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="Monitor History Orders Row Count Anomaly Detection" title="Monitor History Orders Row Count Anomaly Detection" srcset="/__u/substackcdn.com/image/fetch/$s_!DyhX!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F758d0b75-66d7-4711-bba2-a49ab7231271_2208x1260.png 424w, /__u/substackcdn.com/image/fetch/$s_!DyhX!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F758d0b75-66d7-4711-bba2-a49ab7231271_2208x1260.png 848w, /__u/substackcdn.com/image/fetch/$s_!DyhX!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F758d0b75-66d7-4711-bba2-a49ab7231271_2208x1260.png 1272w, /__u/substackcdn.com/image/fetch/$s_!DyhX!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F758d0b75-66d7-4711-bba2-a49ab7231271_2208x1260.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">Source: https://www.soda.io/resources/time-series-anomaly-detection-with-soda</figcaption></figure></div><p><strong>Jake: What is an ideal high-level workflow for using Soda in a Data Platform?</strong></p><p>Engineers embed a Soda scan into the data producing workflow. The check files can be added to the existing git repository file structure. Engineers can add checks for all the assumptions they make for the correct operation of their pipelines, for example, schema, uniqueness or null checks. After that, analysts can propose checks to be added. If they can write SodaCL, they can do it self serve. &nbsp;</p><p>Analysts without software engineering skills can&nbsp;contribute data domain knowledge by&nbsp;asking engineers to add a SodaCL check for example: "In shops where the volume is greater than 10 million, all critical customers must have field technical contact filled in with a valid email address". Soda excels at bringing the producers and consumers together and allowing them to build out a decent suite of checks that prevents bad data.</p><p><strong>Jake: The <a href="https://docs.soda.io/soda/quick-start-prod.html">Soda documentation</a> mentions you can integrate Soda throughout the Data Pipeline; could you give a high-level overview of how you use Soda at data ingestion, transformation, and serving?</strong></p><p><strong>Tom:</strong> The most common way to integrate Soda is by adding scans as steps to your orchestration job. A scan is a single execution of all checks related to the data produced in that pipeline. Right after ingestion is a very good place to run a first scan. And right before data is passed to consumers is another good point in the pipeline where a scan is appropriate. These two places provide a very good basis for proactively finding and later debugging data issues. If you want, you can go more fine grained, but we only see that in very data-mature organisations.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!eVKB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca8214f8-03bf-4cc2-9854-506661d292b2_1504x602.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!eVKB!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca8214f8-03bf-4cc2-9854-506661d292b2_1504x602.png 424w, /__u/substackcdn.com/image/fetch/$s_!eVKB!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca8214f8-03bf-4cc2-9854-506661d292b2_1504x602.png 848w, /__u/substackcdn.com/image/fetch/$s_!eVKB!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca8214f8-03bf-4cc2-9854-506661d292b2_1504x602.png 1272w, /__u/substackcdn.com/image/fetch/$s_!eVKB!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca8214f8-03bf-4cc2-9854-506661d292b2_1504x602.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!eVKB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca8214f8-03bf-4cc2-9854-506661d292b2_1504x602.png" width="1456" height="583" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ca8214f8-03bf-4cc2-9854-506661d292b2_1504x602.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:583,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;data-pipeline&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="data-pipeline" title="data-pipeline" srcset="/__u/substackcdn.com/image/fetch/$s_!eVKB!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca8214f8-03bf-4cc2-9854-506661d292b2_1504x602.png 424w, /__u/substackcdn.com/image/fetch/$s_!eVKB!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca8214f8-03bf-4cc2-9854-506661d292b2_1504x602.png 848w, /__u/substackcdn.com/image/fetch/$s_!eVKB!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca8214f8-03bf-4cc2-9854-506661d292b2_1504x602.png 1272w, /__u/substackcdn.com/image/fetch/$s_!eVKB!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca8214f8-03bf-4cc2-9854-506661d292b2_1504x602.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">Source: https://docs.soda.io/soda/quick-start-prod.html</figcaption></figure></div><p><strong>Jake: Soda now supports high-code with Python and low-code Data Quality checks with YAML. What are the use cases for both?</strong></p><p><strong>Tom:</strong> All checks are authored in SodaCL, which is a YAML based language. The execution of a scan can be coded in Python. That makes it very easy to embed scans anywhere in the pipeline and enables advanced features like setting custom variables.</p><p><strong>Jake: What have been the most interesting and/or exciting use cases of Soda you've come across?</strong></p><p>We've seen often that SodaCL is exposed to data consumers like analysts. They don't all have the skills to put code in production. But by deploying SodaCL checks, they can manage self-service. This removes a large part of the bottleneck for engineers that otherwise get constant requests to create or update checks programmatically.</p><h4><strong>Common Data Quality Implementation Issues</strong></h4><p><strong>Jake: From personal experience, it can be hard to get investment in Data Quality until something goes badly wrong in the organisation. Do you have any advice to give on getting investment in proactive Data Quality efforts?</strong></p><p><strong>Tom:</strong> I think those times have changed. A few years back, we called this 'a compelling event': an data issue that got management exposure, leading to more awareness that data quality is important. Today, we see that almost all companies experience data issues regularly, and there is already much more awareness that data quality needs to be addressed as part of their day-to-day operations.<br><br><strong>Jake: I've found in the past that extensive Quality checks can be expensive to run; how does Soda do anything to reduce this impact and/or have any thoughts to reduce the economic impact of DQ tests?&nbsp;</strong></p><p><strong>Tom:</strong> Great question, as I love to talk about this part. We spent a lot of effort optimising the load on warehouses to run data quality checks. It starts by leveraging the data inside the existing SQL engines, which prevents any unnecessary moving or copying data. But the crux is that Soda can process a large set of checks in a single scan. That allows for optimisations. Many checks are based on the same metrics. We ensure that those are only computed once. And the biggest cost reduction comes from merging many metrics into a single query. </p><p>By grouping metrics in the same query, we drastically reduce the number of passes that the warehouse has to make on the data. It's not the first part when explaining data quality and Soda, but a very important topic when adopting data quality at scale.<br><br><em>Note:</em> <em>Tom also mentioned he&#8217;s working on a article on this subject. I&#8217;ll add the link later when it&#8217;s uploaded.</em></p><p><strong>Jake: Another issue I've come across is that I've seen organisations take a techno-centric approach to improving Data Quality, which can lead to poor adoption of Data Quality standards. Do you have any advice on this?</strong></p><p><strong>Tom:</strong> SodaCL has been designed exactly to cope with this. It's a compact DSL for engineers. That means that engineers can write advanced data quality checks in a few lines of SodaCL making them very productive. But at the same time, SodaCL is very readable and enables the more tech-savvy analysts to become self service.&nbsp;Self-serve authoring of checks with Soda Cloud goes beyond the engineering-only approach and opens up the data quality to more people, but all on the same foundation.</p><h4><strong>Future</strong></h4><p><strong>Jake: What can we expect in the future from Soda in terms of features?</strong></p><p><strong>Tom:</strong> We are looking into applying data quality checks on streaming systems so that we can detect issues earlier in the pipelines.</p><p><strong>Jake:</strong> <strong>Do you think this wave of generative AI technology will change how people approach Data Quality? If so, how?</strong></p><p><strong>Tom:</strong> Absolutely. Chatbots have been added in more and more applicable use cases. For data quality and SodaCL in particular, generative AI has proven a tremendous help for the many non-tech people that know the data domain. They can just use natural language to describe the check they want to build and our <a href="https://www.soda.io/sodagpt">SodaGPT</a> feature translates that into SodaCL checks. This expands checks authoring even further to include more people who have intimate knowledge about the data.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!XK-1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41c3cfbd-08ff-4519-a3df-ec75ee9715b7_722x542.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!XK-1!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41c3cfbd-08ff-4519-a3df-ec75ee9715b7_722x542.png 424w, /__u/substackcdn.com/image/fetch/$s_!XK-1!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41c3cfbd-08ff-4519-a3df-ec75ee9715b7_722x542.png 848w, /__u/substackcdn.com/image/fetch/$s_!XK-1!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41c3cfbd-08ff-4519-a3df-ec75ee9715b7_722x542.png 1272w, /__u/substackcdn.com/image/fetch/$s_!XK-1!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41c3cfbd-08ff-4519-a3df-ec75ee9715b7_722x542.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!XK-1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41c3cfbd-08ff-4519-a3df-ec75ee9715b7_722x542.png" width="574" height="430.8975069252078" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/41c3cfbd-08ff-4519-a3df-ec75ee9715b7_722x542.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:542,&quot;width&quot;:722,&quot;resizeWidth&quot;:574,&quot;bytes&quot;:104227,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!XK-1!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41c3cfbd-08ff-4519-a3df-ec75ee9715b7_722x542.png 424w, /__u/substackcdn.com/image/fetch/$s_!XK-1!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41c3cfbd-08ff-4519-a3df-ec75ee9715b7_722x542.png 848w, /__u/substackcdn.com/image/fetch/$s_!XK-1!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41c3cfbd-08ff-4519-a3df-ec75ee9715b7_722x542.png 1272w, /__u/substackcdn.com/image/fetch/$s_!XK-1!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41c3cfbd-08ff-4519-a3df-ec75ee9715b7_722x542.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">Source: https://www.soda.io/sodagpt</figcaption></figure></div><p><strong>Jake: Finally, any trends do you think will emerge in data and/or Data Quality in the next one to two years?</strong></p><p><strong>Tom:</strong> Embedding data quality checks will become the most normal thing to do when building or changing data pipelines. The abnormal thing will be to skip that part.</p><p>We also believe that there will be a big change in how data ownership is handled. At the moment, it's really hard for engineers to take full ownership of the data they produce because they don't know all the details and guarantees of the data that they use as input to their pipelines. If producers upstream provide formal <a href="/__u/dataproducts.substack.com/p/the-rise-of-data-contracts">data contracts</a>, then engineers can also take ownership of the full datasets they produce in their own pipelines. That's definitely a trend to watch out for.</p><div><hr></div><h3>Starbursts Smart Indexing and Databricks Liquid Clustering: Using Query Metadata to Improve Performance</h3><p>Partitioning is a very popular technique to use on large datasets to save time and money on compute. It works by splitting up your datasets into files by columns that get filtered (WHERE clauses, etc.) most often by queries, so compute only has to read a subset of the data (say, the last 7 days of data, if partitioned by day) rather than scan all data.</p><p>Though they can be tricky to configure, as your query patterns on a dataset might change as the data and your business evolve. This is especially problematic as <a href="https://dzone.com/articles/performance-implications-of-partitioning-in-apache">partitioning on columns that don&#8217;t get filtered often in queries can increase costs</a>.</p><p>As a solution to this, Starburst has brought out &#8220;<a href="https://www.starburst.io/blog/partitioning-data-lake-analytics/">Smart Indexing</a>&#8221; and Databricks &#8220;<a href="https://docs.databricks.com/delta/clustering.html">Liquid Clustering</a>&#8221; within weeks of each other. They have different names but have the same rough idea: review the history of recent queries run on the dataset and build a partitioning/clustering strategy from that, so your partitioning strategy never goes out of date.</p><p>I suspect not everyone will need it, but pretty cool tech.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!MWsr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4648c9a-2d6b-48e7-9356-74c7eabacea6_1999x984.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!MWsr!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4648c9a-2d6b-48e7-9356-74c7eabacea6_1999x984.png 424w, /__u/substackcdn.com/image/fetch/$s_!MWsr!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4648c9a-2d6b-48e7-9356-74c7eabacea6_1999x984.png 848w, /__u/substackcdn.com/image/fetch/$s_!MWsr!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4648c9a-2d6b-48e7-9356-74c7eabacea6_1999x984.png 1272w, /__u/substackcdn.com/image/fetch/$s_!MWsr!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4648c9a-2d6b-48e7-9356-74c7eabacea6_1999x984.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!MWsr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4648c9a-2d6b-48e7-9356-74c7eabacea6_1999x984.png" width="1456" height="717" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a4648c9a-2d6b-48e7-9356-74c7eabacea6_1999x984.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:717,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;dl.3&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="dl.3" title="dl.3" srcset="/__u/substackcdn.com/image/fetch/$s_!MWsr!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4648c9a-2d6b-48e7-9356-74c7eabacea6_1999x984.png 424w, /__u/substackcdn.com/image/fetch/$s_!MWsr!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4648c9a-2d6b-48e7-9356-74c7eabacea6_1999x984.png 848w, /__u/substackcdn.com/image/fetch/$s_!MWsr!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4648c9a-2d6b-48e7-9356-74c7eabacea6_1999x984.png 1272w, /__u/substackcdn.com/image/fetch/$s_!MWsr!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4648c9a-2d6b-48e7-9356-74c7eabacea6_1999x984.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">Source: https://www.databricks.com/blog/announcing-delta-lake-30-new-universal-format-and-liquid-clustering</figcaption></figure></div><div><hr></div><h3><strong>Building a Real-Time Analytics Database</strong></h3><div id="youtube2-Xa2tb743QPE" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;Xa2tb743QPE&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/Xa2tb743QPE?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>This talk is another banger from the <a href="https://www.youtube.com/@GOTO-">GOTO Conferences Youtube channel</a>, albeit also a cleverly worked advert for <a href="https://startree.ai/">StarTree</a> by Vice President of Developer Relations, Tim Berglund: it takes the viewer through the decision making process of building a Real-Time Analytics Database in a Choose Your Own Adventure style, which made the video a fun and informative watch for anyone intrested in data, not just people interested in building or using Real-Time Analytics Database.</p><div><hr></div><h3><a href="/__u/seattledataguy.substack.com/p/what-is-query-driven-data-modeling">What Is Query Driven Data Modeling?</a></h3><p>Another insightful article from Data Consultant SeattleDataGuy/Ben Rogojan again showing why he&#8217;s one of the more popular voices in Data Engineering.</p><p>Here, he has a balanced take on the relatively new practise of just coming up with a new data model, pipeline and dashboard when it is asked for by data consumers:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!rYS1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F696719c1-c6d3-4317-a1ea-fcb92968a4a9_1254x1330.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!rYS1!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F696719c1-c6d3-4317-a1ea-fcb92968a4a9_1254x1330.png 424w, /__u/substackcdn.com/image/fetch/$s_!rYS1!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F696719c1-c6d3-4317-a1ea-fcb92968a4a9_1254x1330.png 848w, /__u/substackcdn.com/image/fetch/$s_!rYS1!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F696719c1-c6d3-4317-a1ea-fcb92968a4a9_1254x1330.png 1272w, /__u/substackcdn.com/image/fetch/$s_!rYS1!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F696719c1-c6d3-4317-a1ea-fcb92968a4a9_1254x1330.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!rYS1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F696719c1-c6d3-4317-a1ea-fcb92968a4a9_1254x1330.png" width="416" height="441.2121212121212" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/696719c1-c6d3-4317-a1ea-fcb92968a4a9_1254x1330.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1330,&quot;width&quot;:1254,&quot;resizeWidth&quot;:416,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!rYS1!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F696719c1-c6d3-4317-a1ea-fcb92968a4a9_1254x1330.png 424w, /__u/substackcdn.com/image/fetch/$s_!rYS1!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F696719c1-c6d3-4317-a1ea-fcb92968a4a9_1254x1330.png 848w, /__u/substackcdn.com/image/fetch/$s_!rYS1!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F696719c1-c6d3-4317-a1ea-fcb92968a4a9_1254x1330.png 1272w, /__u/substackcdn.com/image/fetch/$s_!rYS1!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F696719c1-c6d3-4317-a1ea-fcb92968a4a9_1254x1330.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">Source: <a href="/__u/seattledataguy.substack.com/p/what-is-query-driven-data-modeling">https://seattledataguy.substack.com/p/what-is-query-driven-data-modeling</a></figcaption></figure></div><p>Now I&#8217;ve seen a lot of angry responses to this lack of Data Modelling, especially from Data Architects, as frankly, it outs them out of a job somewhat. Also, this style of modelling likely doesn&#8217;t work in regulated industries, especially banking, <a href="https://datacrossroads.nl/2019/03/17/data-lineage-103/">where it&#8217;s recommended to show the data lineage of your financial reports</a>.   </p><p>Can you imagine performing data lineage on thousands of pipelines, most of which were created to answer one question? Even if you use technology that can easily capture data lineage, it&#8217;s still likely to be expensive to perform and difficult to look through it all.</p><p>And that&#8217;s before mentioning how more expensive this all could be, as Ben calls out in his article.</p><p>However, there is something very agile, lean and &#8220;<a href="https://babington.co.uk/insights/help-guidance/just-in-time-jit-advantages-and-disadvantages/">just in time</a>&#8221; about this method: you&#8217;re doing just enough work to complete the task and no more. It will also be very appealing to industries like retail and advertising that need analytics in minutes or hours and not want to wait months or even years for a team of Data Architects to work out what data model they should have.</p><p>That said, if you do take this methodology, I&#8217;d recommend viewing it like a support function, where you hold frequent retrospectives to look at how you can improve the &#8220;<a href="https://www.adservio.fr/post/time-to-value-and-time-to-insights-kpis#el2">time to insights</a>&#8221; by pre building some tables or making analytical data more consistent, which requires, of course, Data Modelling.</p><div><hr></div><h3><strong><a href="https://themarkup.org/hello-world/2023/07/01/what-are-data-clean-rooms">What Are &#8220;Data Clean&nbsp;Rooms&#8221;?</a></strong></h3><p>While this article by Investigative Data Journalist Jon Keegan, is aimed at a more general audience, I felt it was still worth sharing as Data Clean Rooms solutions are everywhere (<a href="https://aws.amazon.com/clean-rooms/">AWS</a>, <a href="https://cloud.google.com/blog/products/data-analytics/introducing-bigquery-data-clean-rooms">GCP</a>, <a href="https://www.snowflake.com/blog/distributed-data-clean-rooms-powered-by-snowflake/">Snowflake</a>, <a href="https://www.databricks.com/blog/2022/06/28/introducing-data-cleanrooms-for-the-lakehouse.html">Databricks</a>) these days and don&#8217;t think are well understood.</p><p>This article also asks &#8220;Why Are These Becoming More&nbsp;Popular?&#8220; (legal requirements), &#8220;Are Clean Rooms a Silver&nbsp;Bullet?&#8220; (no) and the numerous privacy concerns associated with using them.</p><div><hr></div><h3><a href="/__u/learnanalyticsengineering.substack.com/p/reverse-etl-101">Reverse ETL 101</a> </h3><p><a href="/__u/thedataplatform.substack.com/i/122706893/what-on-earth-is-reverse-etl-and-why-might-i-need-it">I&#8217;ve written about Reverse ETL before</a>, where you send data <strong>back</strong> to the applications / operational plane rather than out, but Madison Schott, author of The ABCs of Analytics Engineering, does a much deeper dive into the topic, especially focusing on how to use it with <a href="https://www.getdbt.com/">dbt</a>.</p><div><hr></div><h3><a href="https://www.allthingsdistributed.com/2023/07/building-and-operating-a-pretty-big-storage-system.html">Building and operating a pretty big storage system called S3</a></h3><p>A monster 6k article from Andrew Warfield who is a Distinguished Engineer at Amazon, give insight into how S3 operates. Lots of great technical information here, but the most interesting points for me was how to manage people and yourself when working on such a large and complicated service. </p><div><hr></div><p>Sponsored by <a href="https://www.theoaklandgroup.co.uk/">The Oakland Group</a>, a full service data consultancy. Download our <a href="https://weare.theoaklandgroup.co.uk/data-platform-guide">guide</a> or <a href="https://www.theoaklandgroup.co.uk/get-in-touch/">contact us</a> if you want to find out more about how we build Data Platforms!</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thedataplatform.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 The Data Platform Journal! Subscribe for free to receive weekly 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[How to Build a Data Platform: DataOps]]></title><description><![CDATA[What is DevOps and DataOps?, Why Do I Need them?, DataOps Metrics, Developer Environments and Speed vs. Reliability vs. Budget Trade-offs]]></description><link>https://thedataplatform.substack.com/p/how-to-build-a-data-platform-dataops</link><guid isPermaLink="false">https://thedataplatform.substack.com/p/how-to-build-a-data-platform-dataops</guid><dc:creator><![CDATA[Jake Watson]]></dc:creator><pubDate>Thu, 27 Jul 2023 11:42:05 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/36ab4fc7-8e57-47e8-8029-f255ee3b5a2e_827x546.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2><strong>Why Should I Automate My Data Platform?</strong></h2><p>First, let&#8217;s talk about what aspects of a Data Platform often get automated:</p><ul><li><p>Updates to the Data Platform code: data transformations, pipelines and infrastructure</p></li><li><p>Schema migrations</p></li><li><p>Security Scanning (scanning for vulnerabilities in internal and external code libraries and platform configuration)</p></li><li><p><a href="https://www.freecodecamp.org/news/what-is-linting-and-how-can-it-save-you-time/">Code Linting</a> for code consistency and complete documentation</p></li><li><p>Testing</p></li></ul><p>All of the above can be done manually, but it requires a developer to actively do it. So if you automate the above tasks, you potentially free up more of your developer&#8217;s time, though we should remember that sometimes a task is more effort to automate than to do manually:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!XFAy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df8c3b5-824a-4c1f-a773-b7d40f119d09_571x464.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!XFAy!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df8c3b5-824a-4c1f-a773-b7d40f119d09_571x464.png 424w, /__u/substackcdn.com/image/fetch/$s_!XFAy!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df8c3b5-824a-4c1f-a773-b7d40f119d09_571x464.png 848w, /__u/substackcdn.com/image/fetch/$s_!XFAy!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df8c3b5-824a-4c1f-a773-b7d40f119d09_571x464.png 1272w, /__u/substackcdn.com/image/fetch/$s_!XFAy!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df8c3b5-824a-4c1f-a773-b7d40f119d09_571x464.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!XFAy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df8c3b5-824a-4c1f-a773-b7d40f119d09_571x464.png" width="523" height="424.99474605954464" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6df8c3b5-824a-4c1f-a773-b7d40f119d09_571x464.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:464,&quot;width&quot;:571,&quot;resizeWidth&quot;:523,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Is It Worth the Time?&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Is It Worth the Time?" title="Is It Worth the Time?" srcset="/__u/substackcdn.com/image/fetch/$s_!XFAy!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df8c3b5-824a-4c1f-a773-b7d40f119d09_571x464.png 424w, /__u/substackcdn.com/image/fetch/$s_!XFAy!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df8c3b5-824a-4c1f-a773-b7d40f119d09_571x464.png 848w, /__u/substackcdn.com/image/fetch/$s_!XFAy!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df8c3b5-824a-4c1f-a773-b7d40f119d09_571x464.png 1272w, /__u/substackcdn.com/image/fetch/$s_!XFAy!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df8c3b5-824a-4c1f-a773-b7d40f119d09_571x464.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">https://xkcd.com/1205/</figcaption></figure></div><p>But time isn&#8217;t the only benefit, traceability is another major benefit, as manual tasks are hard to audit. For example it may be difficult to trace when and who made the change that caused issues with the Data Platform, but with automation, you can add monitoring of updates.</p><p>There can be a security benefit too to automation: the more you automate, the fewer changes need to be made directly to production, so it can be possible to remove developers direct access to Data Platforms making your platform more secure as you reduce the attack surface. </p><p>It is often recommended for any production software system that access is limited as much as possible; only the automation server has access and <a href="https://aws.amazon.com/blogs/security/managing-temporary-elevated-access-to-your-aws-environment/">time-limited access</a> for developers in emergencies.</p><h2><strong>What is DataOps and why might I need it?</strong></h2><p>DataOps translates to <strong>Data</strong> <strong>Op</strong>eration<strong>s</strong>, which is the act of doing automated data operations on a Data Platform so the changes are done faster, more securely and more reliably than doing the same operations manually.</p><p>It also sets out an agile culture of shipping early to get customer feedback as early as possible and a process for making and tracking changes in small iterations, so you can adapt quickly to business and technology changes while maintaining quality software.</p><p>It is based on <a href="https://en.wikipedia.org/wiki/DevOps">DevOps</a>, which is <strong>Dev</strong>eloper <strong>Op</strong>eration<strong>s</strong>, and to be honest, the differences between DevOps and DataOps are not massive.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!COaZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5296587e-2c57-4211-ae50-ccd23962e6e0_630x418.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!COaZ!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5296587e-2c57-4211-ae50-ccd23962e6e0_630x418.png 424w, /__u/substackcdn.com/image/fetch/$s_!COaZ!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5296587e-2c57-4211-ae50-ccd23962e6e0_630x418.png 848w, /__u/substackcdn.com/image/fetch/$s_!COaZ!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5296587e-2c57-4211-ae50-ccd23962e6e0_630x418.png 1272w, /__u/substackcdn.com/image/fetch/$s_!COaZ!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5296587e-2c57-4211-ae50-ccd23962e6e0_630x418.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!COaZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5296587e-2c57-4211-ae50-ccd23962e6e0_630x418.png" width="526" height="348.9968253968254" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5296587e-2c57-4211-ae50-ccd23962e6e0_630x418.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:418,&quot;width&quot;:630,&quot;resizeWidth&quot;:526,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;data-ops&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="data-ops" title="data-ops" srcset="/__u/substackcdn.com/image/fetch/$s_!COaZ!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5296587e-2c57-4211-ae50-ccd23962e6e0_630x418.png 424w, /__u/substackcdn.com/image/fetch/$s_!COaZ!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5296587e-2c57-4211-ae50-ccd23962e6e0_630x418.png 848w, /__u/substackcdn.com/image/fetch/$s_!COaZ!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5296587e-2c57-4211-ae50-ccd23962e6e0_630x418.png 1272w, /__u/substackcdn.com/image/fetch/$s_!COaZ!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5296587e-2c57-4211-ae50-ccd23962e6e0_630x418.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">Source: https://www.montecarlodata.com/blog-what-is-dataops/</figcaption></figure></div><p>We prefer to have data teams implement their own DataOps processes, with the Platform Engineering team providing common services such as user admin, firewalls or logging across the organisation (though in small to medium organisations, data teams may manage the platform as well). </p><p>Having a separate team for building DataOps processes can create a slower, more waterfall process where the data has to wait for the DevOps team to make their changes for any changes in infrastructure or automation.</p><h2><strong>DataOps Manifesto</strong></h2><p>While every organisation will implement DataOps differently, there is a <a href="https://dataopsmanifesto.org/en/">DataOps manifesto</a> that can be an excellent starting point for most teams.</p><p>Though at its core the DataOps philosophy to me is these 5 main points:</p><ol><li><p>Always design, build and support while thinking about the customer and business requirements.</p></li><li><p>Get feedback as often as you can from all stakeholders to continually improve.</p></li><li><p>Data teams need the power to build, run and test as much of their solutions themselves as possible: waiting for IT, Security, Business Domain etc. will slow them down, reduce innovation and fail to keep up with business and technology changes.</p></li><li><p>Embrace changes as technology, data and the business will never stop changing.</p></li><li><p>It&#8217;s a team effort - balance sufficient communication while allowing time for people to get work done.</p></li></ol><p>Achieving the above can be difficult in certain organizations, especially in highly regulated environments, so adapt as needed, but we think this should be your ultimate aim. </p><p>In our experience, the hardest change is culture and process, as we&#8217;ve seen many DataOps or DevOps initiatives fail as they were shoehorned into a Waterfall process.  </p><p>The other thing to note is that the faster you develop, the happier your developers and data consumers will be:</p><ul><li><p>Developers want to build cool features they can deploy quickly, not be stuck doing monotonous manual tasks</p></li><li><p>Data consumers want the platform to stay up-to-date as possible so they have most up-to-date data to make decisions. </p></li></ul><p><a href="https://warwick.ac.uk/newsandevents/pressreleases/new_study_shows/">Happier employees are more productive</a>, creating a positive feedback loop.</p><h2><strong>DataOps Metrics</strong></h2><p>One of the core tenants of DevOps and DataOps is to continually improve developer practices and metrics can help keep track of whether your team is continually improving or not.</p><p>You do have to be careful with productivity metrics, as sometimes there can be mitigating circumstances that reduce developer productivity, like illness or especially difficult requirements. </p><p>But without hard data, it is hard to know whether any changes to developer practices and process are working.  </p><p>But what sort of metrics could you use to track? Well, we can take some inspiration from <a href="https://www.atlassian.com/devops/frameworks/devops-metrics">DevOps metrics</a> and adapt them to data:</p><ul><li><p><strong>Number of changes per developer that cause issues over a time period:</strong> ideally, you&#8217;ll want this to be stable at a low level; if you see this rise then you may want to prioritize reliability over new features until this number comes down.</p></li><li><p><strong>Deployment frequency per developer over a time period:</strong> or the number of changes or improvements pushed to the Data Platform. There can be number of reasons for this to drop, so view with caution, such as an issue with the DataOps process, the Data Platform technology or requirements, among others</p></li><li><p><strong>Lead time for changes:</strong> how long does a requirement go from being accepted to being deployed into production? Very important, as the quicker you can react to changes made in the business, the more valuable your Data Platform is.</p></li><li><p><strong>Time to restore service:</strong> how quickly can you recover from failure? It can be important if the analytical data you hold is of critical importance to the business, though it&#8217;s often expensive to have backup servers and databases to recover from failure quickly.</p></li><li><p><strong>Number of Data Quality issues per developer over a time period:</strong> how trustworthy is your data? Again, if you see this rising, then you may want to prioritise data reliability over new features until it comes down.</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_!fb7N!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f895bb7-2db5-4153-9796-0c3b8243b3cf_900x506.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!fb7N!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f895bb7-2db5-4153-9796-0c3b8243b3cf_900x506.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!fb7N!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f895bb7-2db5-4153-9796-0c3b8243b3cf_900x506.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!fb7N!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f895bb7-2db5-4153-9796-0c3b8243b3cf_900x506.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!fb7N!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f895bb7-2db5-4153-9796-0c3b8243b3cf_900x506.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!fb7N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f895bb7-2db5-4153-9796-0c3b8243b3cf_900x506.jpeg" width="900" height="506" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0f895bb7-2db5-4153-9796-0c3b8243b3cf_900x506.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:506,&quot;width&quot;:900,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;https://storage.googleapis.com/gweb-cloudblog-publish/images/1_breaking_down_devops_perf.max-900x900.jpg&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="https://storage.googleapis.com/gweb-cloudblog-publish/images/1_breaking_down_devops_perf.max-900x900.jpg" title="https://storage.googleapis.com/gweb-cloudblog-publish/images/1_breaking_down_devops_perf.max-900x900.jpg" srcset="/__u/substackcdn.com/image/fetch/$s_!fb7N!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f895bb7-2db5-4153-9796-0c3b8243b3cf_900x506.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!fb7N!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f895bb7-2db5-4153-9796-0c3b8243b3cf_900x506.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!fb7N!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f895bb7-2db5-4153-9796-0c3b8243b3cf_900x506.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!fb7N!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f895bb7-2db5-4153-9796-0c3b8243b3cf_900x506.jpeg 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">https://cloud.google.com/blog/products/devops-sre/another-way-to-gauge-your-devops-performance-according-to-dora</figcaption></figure></div><p>Note that it costs money and time to track these measures, so we&#8217;ve come across many Data Platforms (usually small, older platforms) that do not track the above fully or at all and therefore use the &#8220;gut feel&#8221; of the Engineers and Managers to decide when to prioritise reliability over new features.</p><p>Though large, complex Data Platforms will be more in need of the above because one person or team cannot truly grasp what is happening until they start measuring the above, it also gives you hard evidence when building a business case for Data Platform improvement and investment.</p><h2><strong>How do you Automate Updates to Your Data Platform?</strong></h2><p>First, start with building a pipeline to put all your deployment tasks in: <a href="https://katalon.com/resources-center/blog/ci-cd-introduction">Continuous Integration/Continuous Development (CI/CD)</a> pipelines automatically deploy infrastructure, code, database schema and data loading in one pipeline.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!9gIp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff413b682-bf57-4f2e-8d9f-d3b21c1a4b02_1600x488.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!9gIp!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff413b682-bf57-4f2e-8d9f-d3b21c1a4b02_1600x488.png 424w, /__u/substackcdn.com/image/fetch/$s_!9gIp!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff413b682-bf57-4f2e-8d9f-d3b21c1a4b02_1600x488.png 848w, /__u/substackcdn.com/image/fetch/$s_!9gIp!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff413b682-bf57-4f2e-8d9f-d3b21c1a4b02_1600x488.png 1272w, /__u/substackcdn.com/image/fetch/$s_!9gIp!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff413b682-bf57-4f2e-8d9f-d3b21c1a4b02_1600x488.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!9gIp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff413b682-bf57-4f2e-8d9f-d3b21c1a4b02_1600x488.png" width="1456" height="444" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f413b682-bf57-4f2e-8d9f-d3b21c1a4b02_1600x488.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:444,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;banner-6.png&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="banner-6.png" title="banner-6.png" srcset="/__u/substackcdn.com/image/fetch/$s_!9gIp!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff413b682-bf57-4f2e-8d9f-d3b21c1a4b02_1600x488.png 424w, /__u/substackcdn.com/image/fetch/$s_!9gIp!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff413b682-bf57-4f2e-8d9f-d3b21c1a4b02_1600x488.png 848w, /__u/substackcdn.com/image/fetch/$s_!9gIp!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff413b682-bf57-4f2e-8d9f-d3b21c1a4b02_1600x488.png 1272w, /__u/substackcdn.com/image/fetch/$s_!9gIp!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff413b682-bf57-4f2e-8d9f-d3b21c1a4b02_1600x488.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">Source: https://katalon.com/resources-center/blog/ci-cd-introduction</figcaption></figure></div><p>The pipeline can be kicked off automatically by a code change (<a href="https://careerfoundry.com/en/blog/web-development/git-commit-command/">commit</a>) or manually. </p><p>You&#8217;ll build the infrastructure for your Data Platform first and the most automated and reliable way to build infrastructure such as compute (servers), data storage, databases and networking between them is with <a href="https://en.wikipedia.org/wiki/Infrastructure_as_code">Infrastructure as Code</a> (IaC).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!Hvu3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4b479b2-a7e0-45b3-911e-70f3f5160622_1160x680.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!Hvu3!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4b479b2-a7e0-45b3-911e-70f3f5160622_1160x680.png 424w, /__u/substackcdn.com/image/fetch/$s_!Hvu3!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4b479b2-a7e0-45b3-911e-70f3f5160622_1160x680.png 848w, /__u/substackcdn.com/image/fetch/$s_!Hvu3!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4b479b2-a7e0-45b3-911e-70f3f5160622_1160x680.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Hvu3!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4b479b2-a7e0-45b3-911e-70f3f5160622_1160x680.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!Hvu3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4b479b2-a7e0-45b3-911e-70f3f5160622_1160x680.png" width="1160" height="680" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a4b479b2-a7e0-45b3-911e-70f3f5160622_1160x680.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:680,&quot;width&quot;:1160,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Infrastructure as Code Vs Configuration Management&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="Infrastructure as Code Vs Configuration Management" title="Infrastructure as Code Vs Configuration Management" srcset="/__u/substackcdn.com/image/fetch/$s_!Hvu3!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4b479b2-a7e0-45b3-911e-70f3f5160622_1160x680.png 424w, /__u/substackcdn.com/image/fetch/$s_!Hvu3!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4b479b2-a7e0-45b3-911e-70f3f5160622_1160x680.png 848w, /__u/substackcdn.com/image/fetch/$s_!Hvu3!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4b479b2-a7e0-45b3-911e-70f3f5160622_1160x680.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Hvu3!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4b479b2-a7e0-45b3-911e-70f3f5160622_1160x680.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">Source: https://devopscube.com/infrastructure-as-code-configuration-management/</figcaption></figure></div><p>Then you can deploy your software (Data Pipelines and calculations) on top of the infrastructure.</p><p>It is also common to run a battery of tests after the infrastructure and software are deployed to a test environment: this will ensure your Data Platform works as expected and meets its requirements.</p><p>Once the tests pass, there is likely one or more manual review processes before deploying to a staging, User Assessment Testing (UAT) or production environment.</p><h3>One Way and Two Way Decisions</h3><p>You&#8217;ll likely want to have more checks for certain kinds of changes that are hard to reverse, such as large data migrations, which Amazon Engineering calls <a href="https://shit.management/one-way-and-two-way-door-decisions/">&#8216;one-way decisions&#8217;</a>. They also call changes that can be reversed &#8216;two way decisions&#8216; and these changes should be more automated with less checks as they can be reverted. </p><p>It&#8217;s goes without saying you should always be looking to turn one way decisions into two-way decisions wherever possible.</p><h2><strong>How many environments do you build? The balance between infrastructure cost and developer productivity</strong></h2><p>This is a bit of a digression, but a important one, as one of my biggest pet peeves is not having the budget for enough environments for a Data Platform, slowing down developers who cost 10x to 100x more per hour.</p><p>If you build just one environment for your Data Platform, you have to be very careful that any changes you make will not break the Data Platform, especially any changes that are irreversible (for example, deleting data) though try to keep any irreversible changes to a minimum as well!</p><p>So you may build a test and/or staging environment so any changes can be tested before going live; however, this doesn&#8217;t scale on it&#8217;s own as you&#8217;ll likely want to develop as well as allow for testing and you don&#8217;t want your development to affect testing, so you build a development environment as well.</p><p>Now you have two or three environments, but more may be required with a large team of developers as one developer could make a change that affects other developers, blocking work all other developers or worse, confusing developers if they have a issue (is it my change or someone else&#8217;s change that caused this?).</p><p>So ultimately you may have two to three environments plus one for each developer. This starts to cost a lot, not to mention the maintenance overhead. But there are lots of ways to save money here:</p><ul><li><p>Automated IaC builds often only take minutes or hours to build: because you only maybe need production up 24 hours a day, 7 days a week, you can build the environments when you need them, dramatically saving infrastructure costs.</p></li><li><p>Developing and testing on a subset of data to reduce processing costs (or a subset of synthetic or anonymised data for security reasons). The downside to this is could miss some critical issues that are caused by a part of the data you did not test.</p></li><li><p>You may only build just two Stream Processing, Data Warehouses or Lakehouses - one for production and another to be shared across testing and development with different schemas. Maybe even just one: though it does make infrastructure changes more risky, trading off the increased risk for lower costs.</p></li><li><p>Some data vendors make switching environments fast and cheaper by offering &#8220;Shallow&#8220; clones of your data: <a href="https://www.snowflake.com/blog/saving-time-space-simplifying-devops-fast-cloning/">Snowflake Zero Copy Cloning</a> or <a href="https://www.databricks.com/blog/2020/09/15/easily-clone-your-delta-lake-for-testing-sharing-and-ml-reproducibility.html">Delta Lake Shallow Cloning</a> are two examples.</p></li></ul><h2><strong>Speed vs. Reliability vs. Budget Trade-offs</strong></h2><p>Getting this balance right is difficult, as attaining 100% reliability in a complex platform probably means you are pushing virtually no changes and improvements to the platform - this can make a Data Platform out of date quickly and irrelevant to the business.</p><p>However, having high reliability is important for people to trust your platform and is critical when data is used in safety systems where quality of the data is a life or death issue. </p><p>Investing more in your DataOps processes can allow you to move fast but in a reliable manner. However, it can be expensive and may take a while to show value as your engineers adjust to any new processes or technology.</p><p>It finding the right balance isn&#8217;t easy, though can easier with metrics as discussed above.</p><h3>Summary</h3><p>This was a big post, as DataOps will be implemented differently in every organisation, and even every engineering team in a organisation and I wanted to cover all the major tradeoffs and decisions you make.</p><p>I hope this was useful and inspired you to build more efficient and reliable Data Platforms! Feel free to comment if you think I missed anything or have any extra advice on how to implement DataOps.</p><div><hr></div><p>Sponsored by <a href="https://www.theoaklandgroup.co.uk/">The Oakland Group</a>, a full service data consultancy. Download our <a href="https://weare.theoaklandgroup.co.uk/data-platform-guide">guide</a> or <a href="https://www.theoaklandgroup.co.uk/get-in-touch/">contact us</a> if you want to find out more about how we build Data Platforms!</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thedataplatform.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 The Data Platform Journal! 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></p>]]></content:encoded></item><item><title><![CDATA[Issue #22: What makes the Medallion Architecture Different?]]></title><description><![CDATA[Plus: Is Kimball Still Relevant?, Data Product Metadata Model Examples, World of CDC, You Can&#8217;t Master Data in a Database and Deep Dive into Distributed Architectures]]></description><link>https://thedataplatform.substack.com/p/issue-22-what-makes-the-medallion</link><guid isPermaLink="false">https://thedataplatform.substack.com/p/issue-22-what-makes-the-medallion</guid><dc:creator><![CDATA[Jake Watson]]></dc:creator><pubDate>Tue, 25 Jul 2023 12:11:52 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/ddd877ea-1628-4ebc-b0a0-031a35d5a6a8_822x477.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This week has been a great week for high quality articles on data, I had to stop looking for more articles earlier than normal as I have a <a href="/__u/thedataplatform.substack.com/p/how-to-build-a-data-platform">guide</a> to finish. This week we have:</p><ul><li><p>A short rant about the Medallion Architecture</p></li><li><p>Is Kimball Still Relevant?</p></li><li><p>Hello, World of CDC!</p></li><li><p>Grai: Open Source Data Lineage</p></li><li><p>You Can&#8217;t Master Data in a Database</p></li><li><p>Data Parallel, Task Parallel, and Agent Actor Architectures</p></li><li><p>Standardized Data Product Metadata Examples Based on Real-World Published Data Products</p></li></ul><div><hr></div><h3>What makes the Medallion Architecture Different?</h3><p>I&#8217;ve seen a few comments on social media about Medallion Architecture, saying it looks no different from the classic three-tier structure of Raw, Conformed and Enriched found in batch Data Warehouses and it&#8217;s just meaningless buzzwords created by <a href="https://www.databricks.com/">Databricks</a> to get more sweet Venture Capitalist money.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!-vWd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95c9ee3c-d6b7-4182-b972-c7c890e705f2_1024x382.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!-vWd!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95c9ee3c-d6b7-4182-b972-c7c890e705f2_1024x382.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!-vWd!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95c9ee3c-d6b7-4182-b972-c7c890e705f2_1024x382.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!-vWd!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95c9ee3c-d6b7-4182-b972-c7c890e705f2_1024x382.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!-vWd!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95c9ee3c-d6b7-4182-b972-c7c890e705f2_1024x382.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!-vWd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95c9ee3c-d6b7-4182-b972-c7c890e705f2_1024x382.jpeg" width="1024" height="382" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/95c9ee3c-d6b7-4182-b972-c7c890e705f2_1024x382.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:382,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Medallion Architecture - Data Engineering Wiki&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Medallion Architecture - Data Engineering Wiki" title="Medallion Architecture - Data Engineering Wiki" srcset="/__u/substackcdn.com/image/fetch/$s_!-vWd!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95c9ee3c-d6b7-4182-b972-c7c890e705f2_1024x382.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!-vWd!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95c9ee3c-d6b7-4182-b972-c7c890e705f2_1024x382.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!-vWd!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95c9ee3c-d6b7-4182-b972-c7c890e705f2_1024x382.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!-vWd!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95c9ee3c-d6b7-4182-b972-c7c890e705f2_1024x382.jpeg 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">Source: https://www.databricks.com/glossary/medallion-architecture</figcaption></figure></div><p>Could Databricks come up with less vague layer names than Gold, Silver and Bronze? Maybe, I suspect they wanted a set of names that doesn&#8217;t tie themselves to one modelling style, to show how flexible Medallion Architecture is (and sell more Databricks). </p><p>But it doesn&#8217;t change the fact Medallion Architecture does differ from other architectures.</p><p>What makes the architecture different is that Databricks supports both batch and streaming using the same technology across all three layers, whereas classic Batch, <a href="https://en.wikipedia.org/wiki/Lambda_architecture">Lambda</a> and <a href="https://learn.microsoft.com/en-us/azure/architecture/data-guide/big-data/#kappa-architecture">Kappa</a> Architectures have separate batch and real-time processing technologies. </p><p>This arguably makes it better than all of the above as it&#8217;s flexible in supporting streaming and batch while having lower maintenance than Lambda and Kappa as you only need one data processing product, not two (though you&#8217;d still keep the streaming and batch pipelines separate).</p><p>And just so it doesn&#8217;t look like I&#8217;m just shilling Databricks, this architecture can also be applied in <a href="https://flink.apache.org/">Apache Flink</a> and maybe <a href="https://docs.snowflake.com/en/user-guide/data-pipelines-intro">Snowflake</a>?, if Lakehouses are not your thing.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!jtOO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73eefb6b-eab4-4548-a55d-19ccc2e04042_3212x1054.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!jtOO!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73eefb6b-eab4-4548-a55d-19ccc2e04042_3212x1054.png 424w, /__u/substackcdn.com/image/fetch/$s_!jtOO!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73eefb6b-eab4-4548-a55d-19ccc2e04042_3212x1054.png 848w, /__u/substackcdn.com/image/fetch/$s_!jtOO!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73eefb6b-eab4-4548-a55d-19ccc2e04042_3212x1054.png 1272w, /__u/substackcdn.com/image/fetch/$s_!jtOO!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_webp, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73eefb6b-eab4-4548-a55d-19ccc2e04042_3212x1054.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!jtOO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73eefb6b-eab4-4548-a55d-19ccc2e04042_3212x1054.png" width="1456" height="478" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/73eefb6b-eab4-4548-a55d-19ccc2e04042_3212x1054.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:478,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!jtOO!, /__u/thedataplatform.substack.com/w_424, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73eefb6b-eab4-4548-a55d-19ccc2e04042_3212x1054.png 424w, /__u/substackcdn.com/image/fetch/$s_!jtOO!, /__u/thedataplatform.substack.com/w_848, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73eefb6b-eab4-4548-a55d-19ccc2e04042_3212x1054.png 848w, /__u/substackcdn.com/image/fetch/$s_!jtOO!, /__u/thedataplatform.substack.com/w_1272, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73eefb6b-eab4-4548-a55d-19ccc2e04042_3212x1054.png 1272w, /__u/substackcdn.com/image/fetch/$s_!jtOO!, /__u/thedataplatform.substack.com/w_1456, /__u/thedataplatform.substack.com/c_limit, /__u/thedataplatform.substack.com/f_auto, /__u/thedataplatform.substack.com/q_auto:good, /__u/thedataplatform.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73eefb6b-eab4-4548-a55d-19ccc2e04042_3212x1054.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">Batch and Real Time data processing in Flink. Source: https://flink.apache.org</figcaption></figure></div><p>Though I will say if you&#8217;re doing no streaming processing, then yeah, it&#8217;s just classic batch processing.</p><div><hr></div><h3><a href="/__u/joereis.substack.com/p/is-kimball-still-relevant">Is Kimball Still Relevant?</a></h3><p>Joe Reis, co-author of the excellent <a href="https://www.oreilly.com/library/view/fundamentals-of-data/9781098108298/">Fundamentals of Data Engineering</a> book, woke up in a fiery mood on Friday:</p><blockquote><p>Here&#8217;s the deal. If you&#8217;re aware of the various data modeling approaches and can pick the right approach for your particular situation, terrific. You&#8217;re a competent and thoughtful professional. To completely ignore data modeling is professionally negligent, and I&#8217;ll argue you&#8217;re unfit for your job. We can do better as an industry. Don&#8217;t burn down data modeling just yet&#8230;</p></blockquote><p>I&#8217;m tempted to frame the above paragraph. The rest of the post is just as good.</p><p>I will add this though: while the world of Data Engineering (DE) may feel a bit lukewarm on Kimball models as there are some arguments it doesn't scale as well as Data Vault, Activity Schema or One Big Table, I feel Kimball is more in use than any other point in time due to being the default way to model data in Self-Service Business Intelligence applications (BI): Power BI and Tableau.</p><p>And BI is 10 times bigger in usage than DE, I say that as a DE myself.</p><p>Though if you hate the idea of Kimball models in your BI apps, I&#8217;d check out <a href="https://www.narratordata.com/">Narrator</a>, which uses Activity Schema.</p><p>I think an argument can be made that we're living in an era where it is common in a large organisation to use multiple types of data models, whereas 15 to 30 years ago you could only use Kimball and you'd be called crazy to question it (though I could be wrong, I was still in school then!).</p><div><hr></div><h3><strong><a href="https://tabular.medium.com/hello-world-of-cdc-e6f06ddbfcc0">Hello, World of CDC!</a></strong></h3><p>I&#8217;ve covered Change Data Capture (CDC) in previous issues, but this three part series (so far) by Ryan Blue, former Senior Engineer at <a href="https://www.netflix.com/gb/">Netflix</a> and now CEO of <a href="https://tabular.io/">Tabular</a>, goes arguably into more depth about implementing CDC, what issues you might run into and how to solve them. </p><div><hr></div><h3><a href="https://www.grai.io/">Grai: Open Source Data Lineage</a></h3><p>Grai is a new start-up offering Open Source <a href="https://en.wikipedia.org/wiki/Data_lineage">Data Lineage</a> with a cloud option. It also has features to show the downstream impact of failing Data Quality tests.</p><div><hr></div><h3><strong><a href="https://blog.metamirror.io/you-cant-master-data-in-a-database-9a2976ae99a0">You Can&#8217;t Master Data in a Database</a></strong></h3><p>This is a great article on something that I&#8217;ve been thinking about for awhile: <a href="https://en.wikipedia.org/wiki/Master_data_management">Master Data Management</a> (MDM) / Customer 360 / Single View of the Customer should be done as close to the operational data processing as possible rather than implemented post import of data into an Analytical Storage. </p><p>You want to master data at the source, or as close as possible to the source so data duplicates have less impact than if data is exported to the analytical plane to be mastered. Steve Jones of <a href="https://www.capgemini.com/gb-en/">Capgemini</a> lists the above and many other reasons why MDM is the solution to a business operations problem and not an analytical data problem. </p><p>Though, I will argue that it can be hard to get this view across in a large organisation, so MDM ends up closer the analytical data because because that is where the most pain is felt of having no mastered data.</p><p>This <a href="https://www.agilelab.it/knowledge-base/customer-360-and-data-mesh-friends-or-enemies">article</a> is also great and on a very similar theme, talking about putting MDM in the close to operational data in a Data Mesh context.</p><div><hr></div><h3><strong><a href="https://bytewax.io/blog/data-parallel-task-parallel-and-agent-actor-architectures">Data Parallel, Task Parallel, and Agent Actor Architectures</a></strong></h3><p>If you&#8217;re a big nerd like me and want to know how distributed data processing solutions like <a href="https://spark.apache.org/">Spark</a>, <a href="https://flink.apache.org/">Flink</a> and <a href="https://www.ray.io/">Ray</a> work under the hood, this is the perfect article for you.</p><p>Zander Matheson, Konrad Sienkowski and Oli Makhasoeva of the Streaming Processing product, <a href="https://bytewax.io/">Bytewax</a>, go through three common types of distributed compute, each of their pros &amp; cons and what their use cases are.</p><div><hr></div><h3><strong><a href="https://medium.com/@kyyberi/standardized-data-product-metadata-examples-based-on-real-world-published-data-products-209877893517">Standardized Data Product Metadata Examples Based on Real-World Published Data Products</a></strong></h3><p>While there is a lot of talk about how <a href="https://towardsdatascience.com/the-metadata-foundation-that-your-data-mesh-needs-9a1be28c5da6">Data Products in Data Mesh should have consistent metadata model across the organisation</a>, we haven&#8217;t seen many examples shared in public, likely because organisations that adopted Data Products don&#8217;t want to share their meta-model for fear it would give away company secrets or increase security risks.</p><p>To help organisations figure out what metamodel their data products should contain, Jarkko Moilanen of <a href="https://medium.com/api-economy-hacklab">API Economy Hacklab</a>, has co-authored an <a href="https://open-data-product-initiative.github.io/open-data-product-spec-dev/#open-data-product-specification-rc-2-1">open source specification</a> with a <a href="https://github.com/Open-Data-Product-Initiative/odps-examples">few examples</a>.</p><p>While the specification looks like a great starting point, I will say I don&#8217;t think this is the final say on the matter, as I would like more detail on the <a href="https://open-data-product-initiative.github.io/open-data-product-spec-dev/#data-quality">Data Quality</a> section, including what tests are run. </p><div><hr></div><p>Sponsored by <a href="https://www.theoaklandgroup.co.uk/">The Oakland Group</a>, a full service data consultancy. Download our <a href="https://weare.theoaklandgroup.co.uk/data-platform-guide">guide</a> or <a href="https://www.theoaklandgroup.co.uk/get-in-touch/">contact us</a> if you want to find out more about how we build Data Platforms.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thedataplatform.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 The Data Platform Journal! 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></channel></rss>