pygrametl: A Powerful Programming Framework for Easy Creation and Testing of ETL Flows

Søren Kejser Jensen*, Christian Thomsen, Torben Bach Pedersen, Ove Andersen

*Corresponding author for this work

Research output: Contribution to book/anthology/report/conference proceedingBook chapterResearchpeer-review

3 Citations (Scopus)
400 Downloads (Pure)

Abstract

Extract-Transform-Load (ETL) flows are used to extract data, transform it, and load it into data warehouses (DWs). The dominating ETL tools use graphical user interfaces (GUIs) where users must manually place steps/components on a canvas and manually connect them using lines. This provides an easy to understand overview of the ETL flow but can also be rather tedious and require much trivial work for simple things. We, therefore, challenge this approach and propose to develop ETL flows by writing code. To make the programming easy, we proposed the Python-based ETL framework pygrametl in 2009. We have extended pygrametl significantly since the original release, and in this paper, we present an up-to-date overview of the framework. pygrametl offers commonly used functionality for programmatic ETL development and enables the user to efficiently create effective ETL flows with the full power of programming. Each dimension is represented by a dimension object that manages the underlying table or tables in the case of a snowflaked dimension. Thus, filling a slowly changing or snowflaked dimension only requires a single method call per row as pygrametl performs all of the required lookups, insertions, and assignment of surrogate keys. Similarly to dimensions, fact tables are each represented by a fact table object. Our latest addition to pygrametl, Drawn Table Testing (DTT), simplifies testing ETL flows by making it easy to define both preconditions (i.e., the state of the database before the ETL flow is run) and postconditions (i.e., the expected state after the ETL flow has run) into a test. DTT can also be used to test ETL flows created in other ETL tools. pygrametl also provides a set of commonly used functions for transforming rows, classes that help users parallelize their ETL flows using simple abstractions, and editor support for working with DTT. We present an evaluation that shows that pygrametl provides high programmer productivity and that the created ETL flows have good run-time performance. Last, we present a case study from a company using pygrametl in production and consider some of the lessons we learned during the development of pygrametl as an open source framework.
Original languageEnglish
Title of host publicationTransactions on Large-Scale Data- and Knowledge-Centered Systems XLVIII : Special Issue In Memory of Univ. Prof. Dr. Roland Wagner
Number of pages40
VolumeXLVIII
PublisherSpringer
Publication date18 May 2021
Pages45-84
ISBN (Print)978-3-662-63518-6
ISBN (Electronic)978-3-662-63519-3
DOIs
Publication statusPublished - 18 May 2021
SeriesLecture Notes in Computer Science
Volume12670
ISSN0302-9743

Fingerprint

Dive into the research topics of 'pygrametl: A Powerful Programming Framework for Easy Creation and Testing of ETL Flows'. Together they form a unique fingerprint.

Cite this