Topik ini menyiapkan lingkungan kerja yang dipakai di sepanjang jalur, yaitu Python, DuckDB, Docker, dan Visual Studio Code, lalu menyusun kerangka proyek tempat kode pipeline ditulis. Setiap komponen diperiksa keberadaannya satu per satu, disertai perintah pemeriksaan yang dapat dijalankan ulang. Setelah selesai, struktur folder proyek sudah terbentuk dan pustaka intinya sudah teruji.
Komponen inti lingkungan#
Empat komponen membentuk lingkungan kerja jalur ini, dan masing-masing mengisi peran yang tidak saling menggantikan. Python menjadi bahasa utama untuk skrip pipeline dan ekstraksi, DuckDB menjadi warehouse lokal untuk latihan SQL dan transformasi, Docker mengemas pipeline agar eksekusinya konsisten, sedangkan Visual Studio Code menjadi editor tempat seluruh kode ditulis. PostgreSQL muncul sebagai latihan tambahan lewat Docker ketika sebuah topik membutuhkan basis data transaksional.
| Komponen | Peran di jalur ini |
|---|---|
| Python 3.12 | bahasa utama skrip pipeline dan ekstraksi |
| DuckDB 2.0 | warehouse lokal untuk SQL, transformasi, dan latihan query |
| Docker | mengemas pipeline beserta dependensinya menjadi container |
| Visual Studio Code | editor teks dengan dukungan ekstensi Python dan Docker |
Versi yang dirujuk bukan pilihan acak. Python 3.12 dan DuckDB 2.0 adalah versi yang dipakai pada seluruh contoh jalur ini, sehingga keluaran yang muncul di setiap topik dapat direproduksi apa adanya. Apabila versi di komputer berbeda, sebagian besar contoh tetap berjalan, tetapi keluarannya perlu dibandingkan ulang.
Memeriksa Python dan pustaka inti#
Pemeriksaan dimulai dari versi Python dan ketersediaan pustaka inti, yaitu duckdb, pandas, dan pyarrow. Jalankan perintah berikut di terminal, kemudian bandingkan keluarannya dengan yang tertera pada blok keluaran. Apabila pemeriksaan kedua gagal, pustaka inti belum terpasang dan pemasangannya dibahas segera setelah ini. Panggil python3 secara eksplisit, karena pada sebagian sistem perintah python menunjuk ke versi Python yang berbeda atau tidak ada sama sekali.
# memeriksa versi Python yang terpasang
python3 --version
# memastikan pustaka inti tersedia
python3 -c "import duckdb, pandas, pyarrow; print('pustaka inti siap')"Python 3.12.16
pustaka inti siapPada komputer sendiri, pustaka tersebut dipasang melalui pip, yaitu pengelola paket bawaan Python. Bentuk python3 -m pip dipilih daripada perintah pip langsung karena menjamin paket terpasang pada Python yang sama dengan yang menjalankannya. Sebelum memasang apa pun, buat lingkungan virtual (virtual environment), yakni folder terisolasi yang menyimpan paket milik satu proyek tanpa mengganggu proyek lain. Lingkungan virtual dibuat sekali, diaktifkan setiap kali bekerja pada proyek, lalu paket dipasang di dalamnya.
# tidak-dijalankan
# membuat lingkungan virtual bernama .venv di folder proyek
python3 -m venv .venv
# mengaktifkan lingkungan virtual pada Linux dan macOS
source .venv/bin/activate
# memasang pustaka inti di dalam lingkungan virtual
python3 -m pip install duckdb pandas pyarrowUji pertama DuckDB#
DuckDB adalah basis data analitik yang berjalan in-process, yakni di dalam proses Python itu sendiri tanpa server terpisah, sehingga cukup dipasang lewat pip dan langsung dipakai. Sifat ini membedakannya dari PostgreSQL yang memisahkan servernya, dan perbedaan itu kembali dibahas pada bagian Docker di bawah. Basis data dapat dijalankan di memori untuk latihan, atau disimpan sebagai satu berkas apabila data perlu dipertahankan. Skrip berikut membuat tabel, mengisinya, lalu menampilkan isinya melalui query SQL.
import duckdb
con = duckdb.connect()
# membuat tabel dengan data contoh
con.execute("""
CREATE TABLE suhu_harian AS
SELECT hari, CAST(suhu_c AS DOUBLE) AS suhu_c
FROM (VALUES (1, 24.5), (2, 25.1), (3, 23.8), (4, 26.0))
AS t(hari, suhu_c)
""")
# menampilkan isi tabel
con.sql("SELECT * FROM suhu_harian ORDER BY hari").show()┌───────┬────────┐
│ hari │ suhu_c │
│ int32 │ double │
├───────┼────────┤
│ 1 │ 24.5 │
│ 2 │ 25.1 │
│ 3 │ 23.8 │
│ 4 │ 26.0 │
└───────┴────────┘Skrip di atas memperkenalkan dua pola yang terus dipakai di sepanjang jalur. Metode execute menjalankan SQL yang mengubah keadaan, seperti membuat tabel, sedangkan con.sql mengembalikan hasil query yang siap ditampilkan. Pernyataan CREATE TABLE dengan AS SELECT membuat tabel baru langsung dari hasil query, dan pola ini dipakai ulang pada transformasi yang lebih besar. Tipe double pada kolom suhu_c berasal dari CAST yang dinyatakan eksplisit, bukan dari perkiraan DuckDB sendiri. Blok keluarannya menampilkan tabel bergaya warehouse, lengkap dengan tipe data tiap kolom, dan gaya tampilan ini muncul berulang di sepanjang jalur.
Docker untuk lingkungan yang konsisten#
Python yang berjalan di mesin berbeda cenderung memiliki versi dan paket yang berbeda. Docker menyeragamkan lingkungan eksekusi pipeline. Image adalah cetakan berisi sistem operasi ringkas, kode, dan seluruh dependensi, sedangkan container adalah instans yang berjalan dari cetakan itu. Pipeline yang dikemas sebagai container berperilaku sama di komputer mana pun, asalkan daftar dependensinya tertulis jelas.
Daftar dependensi dinyatakan dalam berkas bernama Dockerfile, dan setiap barisnya adalah satu instruksi yang dijalankan berurutan saat image dibangun. Berkas berikut menjadi contoh awal yang dipakai ketika pipeline mulai dikemas. Struktur folder src yang dirujuknya disiapkan pada bagian kerangka proyek di bawah.
FROM python:3.12-slim
WORKDIR /app
RUN pip install --no-cache-dir duckdb==2.0.0 pandas==2.2.3 pyarrow==26.0.0
COPY src/ src/
CMD ["python", "src/pipeline.py"]FROM memilih image dasar Python 3.12 yang ramping, WORKDIR menetapkan folder kerja di dalam container, dan RUN memasang pustaka pada saat image dibangun. COPY menyalin folder src dari proyek ke dalam image, sedangkan CMD menyatakan perintah yang dijalankan ketika container dimulai. Berkas src/pipeline.py adalah titik masuk proyek, dan kerangka folder di bagian akhir topik ini sudah menyiapkan posisinya.
Perintah Docker berikut memeriksa pemasangan dan mengunduh image PostgreSQL 16 untuk latihan basis data transaksional. Jalankan hanya apabila Docker sudah terpasang dan layanannya berjalan. Pada lingkungan latihan tanpa Docker, kedua perintah ini dilewati dan tidak menghalangi topik mana pun.
# tidak-dijalankan
# memeriksa versi Docker yang terpasang
docker --version
# mengunduh image PostgreSQL 16 untuk latihan basis data transaksional
docker pull postgres:16Kerangka proyek#
Seluruh topik pada jalur ini menaruh kode pada kerangka proyek yang sama, sehingga struktur foldernya dibuat sekali sekarang. Kerangka ini terdiri atas tiga folder, yaitu data untuk berkas data mentah dan hasil ekstraksi, sql untuk skrip transformasi, dan src untuk kode Python pipeline. Jalankan perintah berikut dari folder tempat proyek diletakkan.
# membuat kerangka direktori proyek
mkdir -p de-proyek/data de-proyek/src de-proyek/sql
# memeriksa struktur yang terbentuk
find de-proyek -type d | sortde-proyek
de-proyek/data
de-proyek/sql
de-proyek/srcStruktur yang muncul pada blok keluaran menjadi bentuk baku jalur ini. Folder data menampung berkas yang masuk dan keluar dari pipeline, folder sql menyimpan transformasi yang berdiri sendiri, sedangkan folder src menampung kode Python yang menggerakkan keduanya. Pemisahan data dari src menjaga berkas data tidak bercampur dengan kode yang memprosesnya. Nama de-proyek boleh diganti sesuai kebutuhan, asalkan seluruh perintah berikutnya mengikuti nama yang dipilih. Folder yang masih kosong terisi ketika latihan pipeline batch dimulai, sehingga kerangka ini sengaja dibuat ramping.
Kesalahan umum#
Tiga kekeliruan berikut paling sering muncul saat lingkungan baru disiapkan. Masing-masing disertai penyebab dan perbaikannya.
- Memakai versi pustaka yang berbeda dari contoh. Keluaran DuckDB atau pandas dapat berubah antarversi, sehingga hasil yang muncul tidak sama dengan blok keluaran pada topik. Periksa versi terpasang dengan
python3 -m pip show duckdblalu samakan apabila keluarannya tidak cocok. - Menjalankan skrip dari folder yang salah. Path relatif seperti
data/mentah.csvdibaca dari working directory, yaitu folder tempat perintah dijalankan, bukan dari lokasi berkas skripnya. Jalankan skrip dari root proyek, atau susun path dengan modulpathlibyang mengacu ke lokasi skripnya. - Memanggil Docker tanpa daemon yang berjalan. Klien
dockermenampilkan error koneksi padahal pemasangannya benar. Jalankan Docker Desktop atau layanan Docker pada sistem terlebih dahulu, kemudian ulangi perintahnya. - Melewatkan pemeriksaan versi sebelum membandingkan keluaran. Perbedaan nomor versi dapat mengubah tampilan tabel dan angka yang dicetak. Samakan versi pustaka atau sesuaikan pembacaan keluarannya sebelum menyimpulkan ada yang salah.
Ringkasan#
- Lingkungan jalur ini terdiri atas Python 3.12, DuckDB 2.0, Docker, dan Visual Studio Code, dengan PostgreSQL sebagai latihan tambahan lewat container.
- Paket Python dipasang di dalam lingkungan virtual per proyek, bukan ke Python global.
- DuckDB berjalan in-process dan menghasilkan tabel bergaya warehouse melalui SQL biasa.
- Kerangka proyek berisi folder
data,sql, dansrc, dan bentuknya dipakai di sepanjang jalur.
Referensi#
- DuckDB documentation — DuckDB — Dokumentasi resmi DuckDB yang mencakup instalasi, SQL, dan klien Python.
- What is Docker? — Docker Docs — Ikhtisar resmi konsep image, container, dan daemon Docker.
- Python 3.12 documentation — Python Software Foundation — Dokumentasi resmi versi Python yang dipakai jalur ini, termasuk modul bawaan dan pengelolaan paket.
- Documentation for Visual Studio Code — Microsoft — Dokumentasi resmi VS Code, termasuk dukungan Python dan container.