Jasper Alblas
Jasper Alblas
Data Engineering • Analytics • Business Intelligence
You have now completed the Data Fundamentals section of the series. Great job everyone!
You will now hopefully understand the following:
Until now, we have mostly been learning concepts.
That’s about to change.
Welcome to QuakeFlow.
QuakeFlow is a hands-on Data Engineering project that we’ll build step by step throughout this series.
Instead of learning Python, SQL, Git, data modeling, APIs, and other technologies as isolated tutorials, we’re going to use them to build one complete data platform.
By the end of the project, you’ll have built a pipeline that takes earthquake data from a real-world source and turns it into something that can be analyzed in Power BI.
But we’re not starting with APIs. We’re not starting with databases. We’re not starting with cloud platforms.
We’re starting with something much simpler:
Setting up a professional development environment.
QuakeFlow is a fictional data platform designed around earthquake data. Why Quakeflow? Well, I didn’t really want to start yet another project about some kind of online store tracking sales. There are plenty of other projects if you are interested in that. I am an educated geographer, so yes, we are going to work with earthquake data!
The project will eventually collect information about earthquakes, process it, store it, model it, and make it available for analytics.
You don’t need to understand every component yet. That’s what the rest of the series is for.
By the end of QuakeFlow, we’ll have a system capable of answering questions such as:
The final project will contain several different layers.
I really want to keep this project from overwhelming people. That’s why we are taking this in steps. Sure, there is a nice API to fetch data from, but I really want to focus on building a simple pipeline first, before introducing APIs. We will get there though. Anway, we start with a simple CSV file, but later we will use the USGS Earthquake API.
Python will collect the data.
We’ll store the raw data before transforming it. We will start with a simple PostgreSQL database.
We’ll use SQL to prepare the data.
We’ll create an analytical data model.
We’ll add checks to make sure the data is trustworthy.
We’ll eventually connect the final model to Power BI.
But before any of that, we need somewhere to build it.
For the first part of QuakeFlow, we only need a few tools.
We’ll introduce other technologies when we actually need them.
This is intentional.
You don’t need to install:
today.
Installing ten technologies before understanding why you need them is one of the easiest ways to make learning Data Engineering unnecessarily complicated.
We’ll introduce each tool when QuakeFlow needs it.
Python will be one of the main programming languages we use throughout QuakeFlow.
We’ll use it for things such as:
If Python is already installed on your computer, you can check the version from a terminal.
python --versionOn some systems you may need:
python3 --versionYou should see something similar to:
Python 3.x.xFor this series, use a currently supported Python 3 version.
If you don’t have Python installed, download it from the official Python website, which you can find here:
https://www.python.org/downloads
When installing Python on Windows, make sure the option to add Python to your PATH is enabled.
Afterwards, you can run the python3 –version command again.
We’ll use Visual Studio Code, usually called VS Code, as our code editor.
You could use another editor.
That’s completely fine.
The important thing is that you have an environment where you can:
VS Code is particularly useful for beginners because it combines these capabilities in one application.
After downloading VS Code from https://code.visualstudio.com/, install and open it.
VS Code supports Python through an extension.
Open the Extensions panel and search for:
Python
Install the official Python extension from Microsoft.
This gives VS Code features such as:
We’ll use these features later.
Git is a version control system, which you learned about version control earlier in the Fundamentals section.
Now we’re going to actually use it.
Git allows you to track changes to your project, makes collaboration easier, and acts like a backup for your code. For all these reasons, Git is an essential professional skill for Data Engineers.
You will encounter Git constantly in real Data Engineering teams.
Open a terminal and run:
git --versionYou should see something similar to:
git version 2.x.xIf you don’t have Git installed, install it before continuing.
Now we’re going to create the actual project.
Create a folder somewhere convenient. You can do this through your OS’ GUI, or you can use a terminal and run:
mkdir QuakeFlowOpen that folder in VS Code.
Your project currently contains nothing. That’s totally normal. We’re starting from scratch.
Before writing code, let’s create a basic structure.
Our first version will look like this:
QuakeFlow/
data/
src/
tests/
README.md
.gitignoreIt might look unnecessarily simple right now.
That’s intentional.
We’ll add more structure as the project grows.
This is where we’ll keep datasets used by the project.
Later we’ll have different types of data here.
For example:
data/
raw/
processed/We aren’t creating those folders yet unless we need them.
This is where our Python code will live.
Eventually we’ll have things like:
src/
ingestion/
transformation/
validation/Again, we’ll build this gradually.
This is where we’ll eventually put automated tests.
We’ll introduce testing later in the project.
For now, it’s simply part of our professional project structure.
The README explains the project.
It should eventually contain:
A good README is part of a professional project.
The .gitignore file tells Git which files it should not track.
For example, Python creates temporary files and virtual environments that generally shouldn’t be committed to Git.
We’ll configure this shortly.
This is an important Python concept.
A virtual environment creates an isolated Python environment for your project.
Why do we need one?
Imagine you have two projects.
Project A requires:
pandas 2.xProject B requires a different version.
Installing everything globally can eventually create conflicts.
A virtual environment keeps each project independent.
From the QuakeFlow project directory, run:
python -m venv .venvThis creates:
QuakeFlow/
.venv/
data/
src/
tests/
README.md
.gitignoreThe .venv directory contains the isolated Python environment.
On Windows PowerShell:
.venv\Scripts\Activate.ps1On Windows Command Prompt:
.venv\Scripts\activateOn macOS or Linux:
source .venv/bin/activateOnce activated, your terminal should indicate that the virtual environment is active.
You might see something like:
(.venv)before your command prompt.
.venv Not Going Into Git?This is where .gitignore becomes important.
We don’t want to commit the entire virtual environment to Git.
Add:
.venv/to .gitignore.
Our project now looks like:
QuakeFlow/
.venv/
data/
src/
tests/
README.md
.gitignoreBut Git will ignore .venv.
Eventually, QuakeFlow will use Python packages.
For example:
Instead of expecting another developer to guess which packages are required, we can record them in a dependency file.
Create:
requirements.txtWe don’t need to add anything yet.
We’ll add packages when we actually use them.
This is another example of something we’re deliberately not over-engineering at the beginning.
We’re finally going to write some code.
Create:
src/main.py
Add:
print("Welcome to QuakeFlow!")Save the file.
Now run:
python src/main.py
You should see:
Welcome to QuakeFlow!
Congratulations.
You’ve just run the first piece of the QuakeFlow project.
It isn’t a data pipeline yet, but that’s ok! The purpose of this exercise is to confirm that your development environment works.
Now we’ll turn the project into a Git repository.
From the root of the QuakeFlow folder:
git initGit will now track changes to the project.
You can check the status:
git statusYou should see files that Git has detected.
The .venv directory should not appear as something to commit if your .gitignore is configured correctly.
Before committing anything, add the files:
git add .Then check the status again:
git statusNow create your first commit:
git commit -m"Initial QuakeFlow project setup"You have now created the first version of the project.
A commit is essentially a saved point in the history of your project.
Think of it like:
Version 1
↓
Version 2
↓
Version 3Each commit records changes. And it is possible to go back to these other version when the need arrives. This could be for example when you pushed code into production that actually had a major bug in it. Go back a commit and push to production, and you are fine.
Any future developers will able be able to look back and understand how your project evolved.
Git and GitHub are related, but they are not the same thing.
Git is the version control system.
GitHub is a platform where Git repositories can be hosted and shared.
For your portfolio, GitHub is useful because employers can see your project.
Create a new repository called:
QuakeFlowThen connect your local project to GitHub.
The exact commands depend on the repository URL GitHub gives you.
For example:
git remote add origin <your-repository-url>Then:
git branch -M main
git push -u origin mainYour QuakeFlow project is now available in your GitHub repository.
At this point, you should have something similar to:
QuakeFlow/
.venv/
data/
src/│
└── main.py
tests/
.gitignore
README.md
equirements.txtAnd your Git history should contain your first commit.
That’s a solid starting point.
Notice what we haven’t installed.
We haven’t installed:
And that’s completely intentional. At this stage, we don’t need them.
Data Engineering involves a huge ecosystem of technologies. A common mistake is trying to learn all of them simultaneously. Instead, QuakeFlow will introduce technologies when they solve an actual problem.
Our environment is ready.
But we still don’t have any data.
That’s the next step.
And we’re not going to start with an API.
Our first data source will be a simple CSV file.
This might seem almost too easy.
That’s exactly why we’re doing it.
Before we introduce HTTP requests, APIs, JSON, authentication, databases, and other concepts, we want you to understand the fundamental process of moving data through a pipeline.
The next article will introduce the first QuakeFlow dataset.
You’ll download a small CSV file, inspect it, load it with Python, and start working with real data.
The pipeline will begin simply:
CSV File
↓
Python
↓
Inspect DataThen we’ll build on it.
You’ve now:
More importantly, you’ve created the foundation for the rest of the project.
From here, every article will add another piece.
QuakeFlow 1.2 — Your First Data Source: Working With a CSV
We’ll introduce the first QuakeFlow dataset.
You’ll learn how to:
For the first time, we’ll be working with actual data.