Tutorial dlt: Pipeline Ingestion Data Berbasis Python

# Membangun Pipeline EL Berbasis Python dengan dlt (data load tool) Sebagian besar tim data menghabiskan waktu yang tidak sedikit pada bagian pipeline yang kurang menarik: menarik data dari sebuah AP...

By Ruby Abdullah · · tutorial
dltData IngestionELTData PipelineData EngineeringPython

Membangun Pipeline EL Berbasis Python dengan dlt (data load tool)

Sebagian besar tim data menghabiskan waktu yang tidak sedikit pada bagian pipeline yang kurang menarik: menarik data dari sebuah API dan menempatkannya di warehouse dengan skema yang rapi. dlt (singkatan dari data load tool, dari dltHub) adalah pustaka Python ringan yang dibuat khusus untuk pekerjaan itu. Tutorial ini membahas cara kerjanya dan bagaimana ia melengkapi perkakas dbt serta Dagster yang mungkin sudah Anda gunakan.

Satu catatan soal penamaan, karena singkatannya rancu: dlt yang dibahas di sini adalah pustaka ingesti Python open-source dari dltHub. Ini bukan Delta Lake (format penyimpanan) dan bukan DLT milik PyTorch. Ketika kita menyebut dlt, yang dimaksud adalah pip install dlt.

Posisi dlt dalam Modern Data Stack

Modern analytics stack umumnya digambarkan sebagai EL + T: Extract dan Load data mentah dulu, lalu Transform di warehouse.

  • Extract + Load adalah ranah dlt. Ia membaca dari sumber (REST API, database, file, generator) dan menulis data ke warehouse tujuan, menangani inferensi skema, normalisasi, serta state inkremental untuk Anda.
  • Transform adalah tempat dbt bekerja. Setelah tabel mentah masuk ke warehouse, model dbt membentuknya menjadi mart yang bersih, teruji, dan terdokumentasi.
  • Orkestrasi adalah tempat Dagster (atau Airflow, cron, GitHub Actions) bekerja. Ia menentukan kapan extract-load dlt berjalan dan kapan transform dbt berjalan, serta menyambungkan dependensi di antaranya.

Jadi dlt tidak menggantikan dbt atau Dagster. Ia mengisi celah yang sengaja dibiarkan keduanya: memasukkan data mentah ke warehouse dengan andal, dalam Python murni, tanpa harus menyiapkan platform ingesti yang berat. Berbeda dari platform konektor seperti Fivetran atau Airbyte — bagus saat konektornya ada, canggung saat tidak ada — dlt membiarkan Anda menulis fungsi Python biasa yang menghasilkan (yield) record, mendekorasinya, lalu mendapat pipeline yang tangguh, sadar skema, dan inkremental. Jika Anda bisa memanggil sebuah API di Python, Anda bisa memuatnya dengan dlt.

Instalasi dan Penyiapan Proyek

dlt berjalan di mana saja Python 3.8+ berjalan. Pasang paket inti beserta extras untuk destinasi Anda.

# Pustaka inti

pip install dlt

Dengan dependensi destinasi tertentu

pip install "dlt[duckdb]" # analitik lokal, sangat baik untuk pengembangan

pip install "dlt[bigquery]" # Google BigQuery

pip install "dlt[postgres]" # PostgreSQL

pip install "dlt[snowflake]" # Snowflake

Disarankan bekerja di dalam virtual environment.

python -m venv .venv

source .venv/bin/activate # Windows: .venv\Scripts\activate

pip install "dlt[duckdb]"

Scaffolding dengan dlt init

dlt init menghasilkan pipeline awal yang sudah terhubung ke sumber dan destinasi. Bentuk umumnya adalah dlt init .
# Memulai pipeline yang memuat ke DuckDB

dlt init github duckdb

Perintah ini membuat struktur proyek seperti berikut:

.

├── .dlt/

│ ├── config.toml # konfigurasi non-rahasia (nama dataset, opsi)

│ └── secrets.toml # kredensial (di-gitignore)

├── githubpipeline.py # skrip pipeline Anda

└── requirements.txt

Berkas .dlt/secrets.toml otomatis ditambahkan ke .gitignore. Jangan pernah meng-commit-nya.

Konsep Inti: Resource, Source, Pipeline

dlt memiliki tiga blok bangunan yang perlu dipahami sebelum menulis kode.

  • Resource (@dlt.resource): fungsi yang menghasilkan data — biasanya baris atau halaman (page) record. Setiap resource dipetakan ke satu tabel di destinasi.
  • Source (@dlt.source): fungsi yang mengelompokkan beberapa resource terkait (misalnya semua endpoint dari satu API). Ia mengembalikan resource yang dikelolanya.
  • Pipeline (dlt.pipeline(...)): objek yang menghubungkan source ke destinasi, menjalankan pemuatan, dan melacak state (skema, cursor inkremental, riwayat run).

Artikel Terkait

Tutorial Dagster: Orkestrasi Data dengan Software-Defined Assets

Dagster: Orkestrasi Data Modern dengan Software-Defined Assets Dagster adalah orkestrator data yang menyusun pipeline be...

Tutorial Pandera: Validasi Data Statistik untuk DataFrame

Pandera: Validasi Data Statistik untuk DataFrame pandas dan Polars Pipeline data sering gagal tanpa suara. Sebuah kolom ...

Crawl4AI: Web Crawling yang Dioptimalkan untuk Pipeline AI

Crawl4AI: Web Crawling yang Dioptimalkan untuk Pipeline AI Dalam membangun aplikasi AI modern, terutama yang berbasis Re...

Tutorial Apache Kafka untuk Real-Time ML: Streaming Data Pipeline

Tutorial 13: Apache Kafka untuk Pipeline ML Real-Time Daftar Isi Pendahuluan Prasyarat Memahami Apache Kafka [Menyiapkan...