Building reliable data pipelines
My current focus is Data Engineering: ingesting raw data, transforming it with SQL and Python, and delivering clean datasets that products and teams can trust. Here's how I work — with real samples.
Ingest
Pull data from APIs, files, and databases into a warehouse — incrementally and reliably.
Transform
Turn raw, messy data into clean, modeled fact & dimension tables with SQL and Python.
Deliver
Serve analysis-ready datasets for dashboards, reporting, and product features.
Data Stack
Languages
Transformation
Orchestration
Storage
Transforming with SQL
Deduplicating raw orders and aggregating daily revenue per customer using window functions.
-- Daily revenue per customer, deduplicated and cleaned
WITH ranked_orders AS (
SELECT
customer_id,
order_id,
order_date::date AS order_day,
amount,
ROW_NUMBER() OVER (
PARTITION BY order_id
ORDER BY updated_at DESC
) AS rn -- keep the latest version of each order
FROM raw.orders
WHERE status = 'paid'
AND amount > 0
)
SELECT
customer_id,
order_day,
COUNT(*) AS orders,
SUM(amount) AS revenue,
ROUND(AVG(amount),2) AS avg_order_value
FROM ranked_orders
WHERE rn = 1 -- drop duplicate order rows
GROUP BY customer_id, order_day
ORDER BY order_day DESC, revenue DESC;ETL with Python
A small, readable extract → transform → load job with cleaning, deduplication, and feature derivation.
import pandas as pd
from sqlalchemy import create_engine
def transform_orders(raw_path: str) -> pd.DataFrame:
"""Extract raw orders, clean them, return analysis-ready rows."""
df = pd.read_csv(raw_path)
# 1. Standardize & clean
df.columns = [c.strip().lower() for c in df.columns]
df["order_date"] = pd.to_datetime(df["order_date"], errors="coerce")
df = df.dropna(subset=["order_id", "customer_id", "order_date"])
# 2. Keep only valid, paid orders and drop duplicates
df = df[(df["status"] == "paid") & (df["amount"] > 0)]
df = df.sort_values("updated_at").drop_duplicates("order_id", keep="last")
# 3. Derive features
df["order_day"] = df["order_date"].dt.date
df["revenue"] = df["amount"].round(2)
return df[["customer_id", "order_day", "order_id", "revenue"]]
def load(df: pd.DataFrame, table: str, dsn: str) -> int:
engine = create_engine(dsn)
df.to_sql(table, engine, schema="marts", if_exists="replace", index=False)
return len(df)
if __name__ == "__main__":
clean = transform_orders("data/raw/orders.csv")
rows = load(clean, "fct_orders", "postgresql://localhost/warehouse")
print(f"Loaded {rows} clean rows into marts.fct_orders")Pipeline Architecture
A typical ELT flow I build — from sources to analytics-ready marts, with data-quality checks along the way.
Transform in Action
Raw data is rarely clean. Here's a before/after of a typical transform step.
| customer | date | amount |
|---|---|---|
| Andi | 12/03/26 | "150.000" |
| andi | 2026-03-12 | 150000 |
| Budi | null | -5 |
| customer_id | order_day | revenue |
|---|---|---|
| andi | 2026-03-12 | 150000 |
| budi | — | invalid |
Duplicates merged, dates normalized, invalid rows dropped.
Looking for a Data Engineer?
I love turning messy data into clean, reliable pipelines. Let's talk about your data challenges.