Date: Sun, 13 May 2018 06:00:00 -0400
<h3>Summary</h3> <p>Testing is a critical activity in all software projects, but one that is often neglected in data pipelines. The complexities introduced by the inherent statefulness of the problem domain and the interdependencies between systems contribute to make pipeline testing difficult to manage. To make this endeavor more manageable Abe Gong and James Campbell have created Great Expectations. In this episode they discuss how you can use the project to create tests in the exploratory phase of building a pipeline and leverage those to monitor your systems in production. They also discussed how Great Expectations works, the difficulties associated with pipeline testing and managing associated technical debt, and their future plans for the project.</p> <h3>Preface</h3> <ul> <li>Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.</li> <li>When you’re ready to launch your next app you’ll need somewhere to deploy it, so check out Linode. With private networking, shared block storage, node balancers, and a 200Gbit network, all controlled by a brand new API you’ve got everything you need to scale up. Go to <a href="https://www.pythonpodcast.com/linode?utm_source=rss&utm_medium=rss">podcastinit.com/linode</a> to get a $20 credit and launch a new server in under a minute.</li> <li>Finding a bug in production is never a fun experience, especially when your users find it first. Airbrake error monitoring ensures that you will always be the first to know so you can deploy a fix before anyone is impacted. With open source agents for Python 2 and 3 it’s easy to get started, and the automatic aggregations, contextual information, and deployment tracking ensure that you don’t waste time pinpointing what went wrong. Go to <a href="https://www.pythonpodcast.com/airbrake?utm_source=rss&utm_medium=rss">podcastinit.com/airbrake</a> today to sign up and get your first 30 days free, and 50% off 3 months of the Startup plan.</li> <li>To get worry-free releases download GoCD, the open source continous delivery server built by Thoughworks. You can use their pipeline modeling and value stream map to build, control and monitor every step from commit to deployment in one place. And with their new Kubernetes integration it’s even easier to deploy and scale your build agents. Go to <a href="https://www.pythonpodcast.com/gocd?utm_source=rss&utm_medium=rss">podcastinit.com/gocd</a> to learn more about their professional support services and enterprise add-ons.</li> <li>Visit the <a href="https://www.pythonpodcast.com?utm_source=rss&utm_medium=rss">site</a> to subscribe to the show, sign up for the newsletter, and read the show notes. And if you have any questions, comments, or suggestions I would love to hear them. You can reach me on Twitter at <a href="https://twtiter.com/podcastinit?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">@Podcast__init__</a> or email <a href="mailto:hosts@podcastinit.com">hosts@podcastinit.com</a></li> <li>Your host as usual is Tobias Macey and today I’m interviewing James Campbell and Abe Gong about Great Expectations, a tool for testing the data in your analytics pipelines</li> </ul> <h3>Interview</h3> <ul> <li>Introduction</li> <li>How did you first get introduced to Python?</li> <li>What is Great Expectations and what was your motivation for starting it?</li> <li>What are some of the complexities associated with testing analytics pipelines? <ul> <li>What types of tests can be executed to ensure data integrity and accuracy?</li> </ul> </li> <li>What are some examples of the potential impact of pipeline debt?</li> <li>What is Great Expectations and how does it simplify the process of building and executing pipeline tests?</li> <li>What are some examples of the types of tests that can be built with Great Expectations?</li> <li>For someone getting started with Great Expectations what does the workflow look like?</li> <li>What was your reason for using Python for building it? <ul> <li>How does the choice of language benefit or hinder the contexts in which Great Expectations can be used?</li> </ul> </li> <li>What are some cases where Great Expectations would not be usable or useful?</li> <li>What have been some of the most challenging aspects of building and using Great Expectations?</li> <li>What are your hopes for Great Expectations going forward?</li> </ul> <h3>Contact Info</h3> <ul> <li>James <ul> <li><a href="https://github.com/jpcampb2?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">jpcampb2</a> on GitHub</li> </ul> </li> <li>Abe <ul> <li><a href="https://github.com/abegong?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">abegong</a> on GitHub</li> <li><a href="http://www.abegong.com/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Website</a></li> <li><a href="https://twitter.com/AbeGong?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">@AbeGong</a> on Twitter</li> </ul> </li> </ul> <h3>Picks</h3> <ul> <li>Tobias <ul> <li><a href="https://amzn.to/2wxX0Vh?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Fitbit Versa</a></li> </ul> </li> <li>James <ul> <li>Unplug and spend some time away from the computer</li> </ul> </li> <li>Abe <ul> <li><a href="https://superconductivehealth.com/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Superconductive Health</a></li> <li><a href="https://amzn.to/2Kg5bHv?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Slack: Getting Past Burnout, Busy Work, and the Myth of Total Efficiency</a></li> </ul> </li> </ul> <h3>Links</h3> <ul> <li><a href="https://superconductivehealth.com/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Superconductive Health</a></li> <li><a href="https://ncsu-las.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Laboratory for Analytical Sciences</a></li> <li><a href="http://great-expectations.readthedocs.io/en/latest/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Great Expectations</a></li> <li><a href="https://medium.com/@expectgreatdata/down-with-pipeline-debt-introducing-great-expectations-862ddc46782a?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Medium Post</a></li> <li><a href="https://en.wikipedia.org/wiki/Directed_acyclic_graph?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">DAG (Directed Acyclic Graph)</a></li> <li><a href="https://en.wikipedia.org/wiki/Service-level_agreement?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">SLA (Service Level Agreement)</a></li> <li><a href="https://en.wikipedia.org/wiki/Integration_testing?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Integration Testing</a></li> <li><a href="https://www.dataquest.io/blog/what-is-a-data-engineer/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Data Engineering</a></li> <li><a href="https://en.wikipedia.org/wiki/Histogram?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Histogram</a></li> <li><a href="https://pandas.pydata.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Pandas</a></li> <li><a href="http://www.sqlalchemy.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">SQLAlchemy</a></li> <li><a href="http://great-expectations.readthedocs.io/en/latest/intro.html#how-do-i-learn-more?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Tutorial Videos</a></li> <li><a href="http://jupyter.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Jupyter Notebooks</a></li> <li><a href="https://pandas.pydata.org/pandas-docs/stable/dsintro.html#dataframe?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Dataframe</a></li> <li><a href="http://airflow.apache.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Airflow</a></li> <li><a href="http://luigi.readthedocs.io/en/stable/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Luigi</a></li> <li><a href="http://spark.apache.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Spark</a></li> <li><a href="http://oozie.apache.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Oozie</a></li> <li><a href="https://azkaban.github.io/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Azkaban</a></li> <li><a href="http://json.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">JSON</a></li> <li><a href="https://en.wikipedia.org/wiki/XML?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">XML</a></li> </ul> <p>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?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">The Hug</a> by <a href="http://freemusicarchive.org/music/The_Freak_Fandango_Orchestra/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">The Freak Fandango Orchestra</a> / <a href="http://creativecommons.org/licenses/by-sa/3.0/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">CC BY-SA</a><img alt="" height="0" src="https://analytics.boundlessnotions.com/piwik.php?idsite=1&rec=1&url=https%3A%2F%2Fwww.pythonpodcast.com%2Fgreat-expectations-with-abe-gong-and-james-campbell-episode-161%2F&action_name=Great+Expectations+For+Your+Data+Pipelines+with+Abe+Gong+and+James+Campbell+-+Episode+161&urlref=https%3A%2F%2Fwww.pythonpodcast.com%2Ffeed%2F&utm_source=rss&utm_medium=rss" style="border: 0; width: 0; height: 0;" width="0" /></p>