Cloud & Infrastructuur ← Alle artikelen

Een simpele data pipeline bouwen met Python en SQL zonder developer team

"Data pipeline" klinkt als iets voor techbedrijven met teams van data engineers. Maar de realiteit is dat elke KMO data heeft die van A naar B moet stromen en dat het automatiseren daarvan eenvoudiger is dan je denkt.

In dit artikel leg ik uit wat een data pipeline is, wanneer je er een nodig hebt, en hoe je er zelf een bouwt met Python en SQL.


Wat is een data pipeline?

Een data pipeline is niets meer dan een geautomatiseerd proces dat data ophaalt uit één of meerdere bronnen, het transformeert (opschoont, combineert, berekent), en het op de juiste bestemming aflevert.

In mensentaal: Het is de automatische versie van wat je nu handmatig doet met kopiëren, plakken en Excel-formules.

Voorbeeld

Elke maandagochtend wil je een rapport met: - Omzet per klant (uit je facturatietool) - Openstaande deals (uit je CRM) - Websitebezoeken (uit Google Analytics)

Nu doe je dat handmatig. Met een data pipeline gebeurt het automatisch: data wordt opgehaald, gecombineerd, en als rapport afgeleverd in je mailbox of dashboard.


Wanneer heb je een data pipeline nodig?

  • Je combineert regelmatig data uit meerdere bronnen
  • Je maakt dezelfde rapportage vaker dan één keer per maand
  • Je data moet opgeschoond worden voordat je het kan gebruiken (duplicaten, ontbrekende waarden, inconsistente formaten)
  • Je wilt een dashboard voeden met actuele data
  • Je hebt een proces dat elke dag/week/maand hetzelfde doet

Als je je hierin herkent, heb je eigenlijk al een data pipeline nodig je doet het alleen handmatig.


Waarom Python en SQL?

SQL

SQL is dé taal om data op te vragen en te bewerken. Elke database spreekt het. Elke CRM, ERP en boekhoudsysteem slaat data op in een database die je met SQL kan bevragen.

Python

Python is de meest populaire programmeertaal voor data. Het is leesbaar, heeft duizenden libraries, en is krachtig genoeg voor complexe transformaties maar eenvoudig genoeg om te leren.

Samen

Python haalt de data op (via API's of database-connecties), SQL bevraagt en transformeert het, en Python levert het resultaat af (in een Excel, database of dashboard).


Een data pipeline in 5 stappen

Stap 1: Definieer het doel

Wat moet de pipeline opleveren? Een rapport? Een opgeschoonde dataset? Een gevuld dashboard?

Voorbeeld: "Elke maandag een Excel met omzet per klant, gebaseerd op data uit Teamleader en Exact."

Stap 2: Identificeer je bronnen

Waar komt de data vandaan?

  • Database → Direct bevragen met SQL
  • API → Ophalen met Python (requests-library)
  • Excel/CSV → Inlezen met Python (pandas-library)
  • Google Sheets → Ophalen via Google Sheets API

Stap 3: Haal de data op (Extract)

import pandas as pd
import requests

# Data ophalen uit een API
response = requests.get(
    "https://api.teamleader.eu/contacts.list",
    headers={"Authorization": "Bearer YOUR_TOKEN"}
)
contacts = pd.DataFrame(response.json()["data"])

# Data ophalen uit een Excel
invoices = pd.read_excel("facturen_2025.xlsx")

Stap 4: Transformeer de data (Transform)

# Combineer klantdata met facturatiedata
merged = contacts.merge(invoices, on="customer_id")

# Bereken omzet per klant
revenue_per_client = merged.groupby("company_name")["amount"].sum()

# Filter op dit jaar
revenue_per_client = revenue_per_client[merged["date"] >= "2025-01-01"]

Of met SQL als je rechtstreeks op een database werkt:

SELECT
    c.company_name,
    SUM(i.amount) as total_revenue,
    COUNT(i.id) as invoice_count
FROM customers c
JOIN invoices i ON c.id = i.customer_id
WHERE i.date >= '2025-01-01'
GROUP BY c.company_name
ORDER BY total_revenue DESC;

Stap 5: Lever het resultaat af (Load)

# Naar Excel
revenue_per_client.to_excel("rapport_maandag.xlsx")

# Naar een database
from sqlalchemy import create_engine
engine = create_engine("postgresql://user:pass@host/db")
revenue_per_client.to_sql("weekly_report", engine, if_exists="replace")

# Naar Google Sheets
# (via gspread library)

Automatisch laten draaien

Een pipeline die je handmatig moet starten is maar half automatisch. Opties om het volledig te automatiseren:

  • Windows Task Scheduler Gratis, draait op je eigen PC (maar alleen als die aanstaat)
  • Cron job (Linux/Mac) Zelfde principe, andere omgeving
  • Azure Functions / AWS Lambda Draait in de cloud, altijd beschikbaar, betaal per gebruik
  • Make / Zapier Voor simpelere pipelines zonder code

Mijn advies: start lokaal (Task Scheduler), en verplaats naar de cloud zodra het stabiel draait en je PC niet altijd aan hoeft te staan.


Moet ik Python leren?

Niet per se. Er zijn drie routes:

  1. No-code (Make/Zapier) Voor simpele pipelines: data ophalen uit een API en doorsturen. Geen programmeerkennis nodig.

  2. Low-code (Python basics) Een basiskennis Python is genoeg voor 80% van de pipelines. Er zijn uitstekende gratis cursussen online.

  3. Uitbesteden Laat iemand de pipeline bouwen en documenteren, zodat je het zelf kan onderhouden en bijsturen.

De meeste KMO's kiezen optie 1 of 3. Optie 2 is ideaal als je een technisch onderlegde collega hebt die dit wil oppakken.


Veelgemaakte fouten

  • Geen error handling Wat als de API even niet werkt? Bouw altijd een vangnet in
  • Geen logging Hou bij wanneer de pipeline draaide en of het gelukt is
  • Te complex beginnen Start met één bron en één rapport. Breid uit als het werkt
  • Data niet valideren Check altijd of de opgehaalde data klopt voordat je er iets mee doet
  • Geen documentatie Schrijf op wat de pipeline doet, zodat iemand anders het kan onderhouden

Hulp nodig?

Ik bouw data pipelines voor KMO's van simpele Excel-automatiseringen tot complexe dataflows met meerdere bronnen. Altijd met als doel: betrouwbare data, automatisch bijgewerkt, klaar voor analyse.

Bekijk mijn diensten rondom Data Pipelines of neem contact op.


Tim Coolens is integration & operations consultant bij iTechie. Hij helpt KMO's met data pipelines, automatisering en business intelligence.

Contact

Benieuwd wat ik voor jou kan betekenen?

Vertel me in het kort waar je tegenaan loopt. Ik neem vrijblijvend contact op.