Solusi data

Menjadikan data operasional berguna bagi produk.

Pekerjaan saya menghubungkan pembersihan dan standardisasi data dengan transformasi SQL, API, dan dashboard—agar tim dapat menggunakan informasi yang konsisten dalam produk dan keputusan.

Memahami

Menelusuri data sumber dan aturan bisnis sebelum memutuskan bagaimana produk atau laporan menggunakannya.

Mentransformasi

Membersihkan dan menstandarkan record sumber dengan Python dan SQL sambil menjaga aturan transformasi tetap jelas.

Menyajikan

Menyediakan dataset siap analisis untuk dashboard, pelaporan, dan fitur produk.

Peralatan & metode implementasi

Inti

SQLPythonTypeScript

Pekerjaan data

PembersihanStandardisasiTransformasi

Penyajian

REST APIsDashboardPostgreSQL

Deployment

DockerLinux / VMGit

Project Bersama

Standardisasi untuk analitik

Saya berkontribusi dalam pembersihan dan standardisasi data produk, transformasi SQL, serta penyajian API/dashboard bersama tim Delman–Bersama.

1.7M+

record produk sumber dalam pipeline

6.4M+

baris keluaran analitik

Hingga 50%

peningkatan akurasi forecasting dalam pekerjaan proyek

Transformasi dengan SQL

Menghapus duplikat pesanan mentah dan mengagregasi pendapatan harian per pelanggan menggunakan window function.

daily_revenue.sql
-- 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 dengan Python

Contoh pekerjaan extract → transform → load yang singkat dan mudah dibaca, mencakup pembersihan, deduplikasi, dan turunan fitur.

transform_orders.py
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")

Contoh Alur Data

Ilustrasi alur dari data sumber hingga keluaran siap analisis, disertai pemeriksaan validasi. Ini bukan arsitektur spesifik klien.

Contoh transformasi

Ilustrasi sebelum dan sesudah nilai sumber yang tidak konsisten; tidak ada data klien yang ditampilkan.

Mentah — tidak rapi
customerdateamount
Andi 12/03/26"150.000"
andi2026-03-12150000
Budinull-5
Bersih — dimodelkan
customer_idorder_dayrevenue
andi2026-03-12150000
budi—invalid

Duplikat digabung, tanggal dinormalisasi, baris tidak valid dibuang.

Butuh mitra teknis untuk solusi data?

Saya bekerja di kebutuhan produk, alur data, dan implementasi. Mari berdiskusi tentang proyek Anda.