An Exploration Of The Impediments To Reusable Data Pipelines
DEC 8, 202451 MIN
An Exploration Of The Impediments To Reusable Data Pipelines
DEC 8, 202451 MIN
Description
Summary<br />In this episode of the Data Engineering Podcast the inimitable Max Beauchemin talks about reusability in data pipelines. The conversation explores the "write everything twice" problem, where similar pipelines are built without code reuse, and discusses the challenges of managing different SQL dialects and relational databases. Max also touches on the evolving role of data engineers, drawing parallels with front-end engineering, and suggests that generative AI could facilitate knowledge capture and distribution in data engineering. He encourages the community to share reference implementations and templates to foster collaboration and innovation, and expresses hopes for a future where code reuse becomes more prevalent.<br /><br /><br />Announcements<br /><ul><li>Hello and welcome to the Data Engineering Podcast, the show about modern data management</li><li>Data migrations are brutal. They drag on for months—sometimes years—burning through resources and crushing team morale. Datafold's AI-powered Migration Agent changes all that. Their unique combination of AI code translation and automated data validation has helped companies complete migrations up to 10 times faster than manual approaches. And they're so confident in their solution, they'll actually guarantee your timeline in writing. Ready to turn your year-long migration into weeks? Visit <a href="https://www.dataengineeringpodcast.com/datafold" target="_blank">dataengineeringpodcast.com/datafold</a> today for the details.</li><li>Your host is Tobias Macey and today I'm joined again by Max Beauchemin to talk about the challenges of reusability in data pipelines</li></ul>Interview<br /><ul><li>Introduction</li><li>How did you get involved in the area of data management?</li><li>Can you start by sharing your current thesis on the opportunities and shortcomings of code and component reusability in the data context?<ul><li>What are some ways that you think about what constitutes a "component" in this context?</li></ul></li><li>The data ecosystem has arguably grown more varied and nuanced in recent years. At the same time, the number and maturity of tools has grown. What is your view on the current trend in productivity for data teams and practitioners?</li><li>What do you see as the core impediments to building more reusable and general-purpose solutions in data engineering?<ul><li>How can we balance the actual needs of data consumers against their requests (whether well- or un-informed) to help increase our ability to better design our workflows for reuse?</li></ul></li><li>In data engineering there are two broad approaches; code-focused or SQL-focused pipelines. In principle one would think that code-focused environments would have better composability. What are you seeing as the realities in your personal experience and what you hear from other teams?</li><li>When it comes to SQL dialects, dbt offers the option of Jinja macros, whereas SDF and SQLMesh offer automatic translation. There are also tools like PRQL and Malloy that aim to abstract away the underlying SQL. What are the tradeoffs across those options that help or hinder the portability of transformation logic?</li><li>Which layers of the data stack/steps in the data journey do you see the greatest opportunity for improving the creation of more broadly usable abstractions/reusable elements?</li><li>low/no code systems for code reuse</li><li>impact of LLMs on reusability/composition</li><li>impact of background on industry practices (e.g. DBAs, sysadmins, analysts vs. SWE, etc.)</li><li>polymorphic data models (e.g. activity schema)</li><li>What are the most interesting, innovative, or unexpected ways that you have seen teams address composability and reusability of data components?</li><li>What are the most interesting, unexpected, or challenging lessons that you have learned while working on data-oriented tools and utilities?</li><li>What are your hopes and predictions for sharing of code and logic in the future of data engineering?</li></ul>Contact Info<br /><ul><li><a href="https://www.linkedin.com/in/maximebeauchemin/" target="_blank">LinkedIn</a></li></ul>Parting Question<br /><ul><li>From your perspective, what is the biggest gap in the tooling or technology for data management today?</li></ul>Closing Announcements<br /><ul><li>Thank you for listening! Don't forget to check out our other shows. <a href="https://www.pythonpodcast.com" target="_blank">Podcast.__init__</a> covers the Python language, its community, and the innovative ways it is being used. The <a href="https://www.aiengineeringpodcast.com" target="_blank">AI Engineering Podcast</a> is your guide to the fast-moving world of building AI systems.</li><li>Visit the <a href="https://www.dataengineeringpodcast.com" target="_blank">site</a> to subscribe to the show, sign up for the mailing list, and read the show notes.</li><li>If you've learned something or tried out a project from the show then tell us about it! Email [email protected] with your story.</li></ul>Links<br /><ul><li><a href="https://preset.io/blog/why-data-teams-keep-reinventing-the-wheel/" target="_blank">Max's Blog Post</a></li><li><a href="https://airflow.apache.org/" target="_blank">Airflow</a></li><li><a href="https://superset.apache.org/" target="_blank">Superset</a></li><li><a href="https://www.tableau.com/" target="_blank">Tableau</a></li><li><a href="https://cloud.google.com/looker/?hl=en" target="_blank">Looker</a></li><li><a href="https://www.microsoft.com/en-us/power-platform/products/power-bi" target="_blank">PowerBI</a></li><li><a href="https://en.wikipedia.org/wiki/Cohort_analysis" target="_blank">Cohort Analysis</a></li><li><a href="https://nextjs.org/" target="_blank">NextJS</a></li><li><a href="https://airbyte.com/" target="_blank">Airbyte</a><ul><li><a href="https://www.dataengineeringpodcast.com/airbyte-stable-release-episode-439" target="_blank">Podcast Episode</a></li></ul></li><li><a href="https://www.fivetran.com/" target="_blank">Fivetran</a><ul><li><a href="https://www.dataengineeringpodcast.com/fivetran-data-replication-episode-93/" target="_blank">Podcast Episode</a></li></ul></li><li><a href="https://segment.com/" target="_blank">Segment</a></li><li><a href="https://www.getdbt.com/" target="_blank">dbt</a></li><li><a href="https://sqlmesh.readthedocs.io/en/stable/" target="_blank">SQLMesh</a><ul><li><a href="https://www.dataengineeringpodcast.com/sqlmesh-open-source-dataops-episode-380" target="_blank">Podcast Episode</a></li></ul></li><li><a href="https://spark.apache.org/" target="_blank">Spark</a></li><li><a href="https://aws.amazon.com/what-is/lamp-stack/" target="_blank">LAMP Stack</a></li><li><a href="https://www.php.net/" target="_blank">PHP</a></li><li><a href="https://en.wikipedia.org/wiki/Relational_algebra" target="_blank">Relational Algebra</a></li><li><a href="https://en.wikipedia.org/wiki/Knowledge_graph" target="_blank">Knowledge Graph</a></li><li><a href="https://marshmallow.readthedocs.io/en/stable/" target="_blank">Python Marshmallow</a></li><li><a href="https://amzn.to/4f99suH" target="_blank">Data Warehouse Lifecycle Toolkit</a> (affiliate link)</li><li><a href="https://preset.io/blog/introducing-entity-centric-data-modeling-for-analytics/" target="_blank">Entity Centric Data Modeling</a> Blog Post</li><li><a href="https://amplitude.com/" target="_blank">Amplitude</a></li><li><a href="https://osacon.io/sessions/2024/ai-reality-checkpoint-the-good-the-bad-and-the-overhyped/" target="_blank">OSACon</a> presentation</li><li><a href="https://github.com/mitodl/ol-data-platform" target="_blank">ol-data-platform</a> Tobias' team's data platform code</li></ul>The intro and outro music is from <a href="http://freemusicarchive.org/music/The_Freak_Fandango_Orchestra/Love_death_and_a_drunken_monkey/04_-_The_Hug" target="_blank">The Hug</a> by <a href="http://freemusicarchive.org/music/The_Freak_Fandango_Orchestra/" target="_blank">The Freak Fandango Orchestra</a> / <a href="http://creativecommons.org/licenses/by-sa/3.0/" target="_blank">CC BY-SA</a>