DuckDB: Database Analitik In-Process untuk Data Science

# DuckDB: Database Analitik In-Process untuk Data Science DuckDB adalah database analitik in-process yang dirancang khusus untuk workload OLAP (Online Analytical Processing). Berbeda dengan database...

By Ruby Abdullah · · tutorial
DuckDBAnalyticsSQLData SciencePython

DuckDB: Database Analitik In-Process untuk Data Science

DuckDB adalah database analitik in-process yang dirancang khusus untuk workload OLAP (Online Analytical Processing). Berbeda dengan database tradisional seperti PostgreSQL atau MySQL yang memerlukan server terpisah, DuckDB berjalan langsung di dalam proses aplikasi Anda, mirip seperti SQLite tetapi dioptimalkan untuk analitik. Dalam tutorial ini, kita akan mempelajari cara menggunakan DuckDB untuk workflow data science yang efisien dan powerful.

Mengapa DuckDB?

Sebelum membahas teknis, mari pahami mengapa DuckDB menjadi pilihan populer di kalangan data scientist:

  • Tanpa server: Tidak perlu instalasi database server, konfigurasi, atau manajemen
  • Columnar storage: Data disimpan per kolom, optimal untuk query analitik
  • Vectorized execution: Memproses data dalam batch untuk performa maksimal
  • Query file langsung: Bisa query CSV, Parquet, dan JSON tanpa import terlebih dahulu
  • Integrasi Python: API Python yang seamless dengan Pandas dan Polars
  • SQL standar: Mendukung SQL yang kaya fitur termasuk window functions dan CTE

Instalasi

Instalasi DuckDB sangat mudah. Cukup gunakan pip:

pip install duckdb

Untuk verifikasi instalasi:

import duckdb

print(duckdb.version)

Jika Anda ingin menggunakan CLI DuckDB, bisa download binary dari website resmi atau gunakan:

pip install duckdb[cli]

Memulai dengan DuckDB

In-Memory Database

Cara paling sederhana untuk memulai adalah dengan in-memory database:

import duckdb

Membuat koneksi in-memory

con = duckdb.connect()

Atau secara eksplisit

con = duckdb.connect(database=':memory:')

Menjalankan query sederhana

result = con.sql("SELECT 42 AS jawaban, 'Halo DuckDB' AS pesan")

print(result.fetchall())

[(42, 'Halo DuckDB')]

Persistent Database

Untuk menyimpan data secara permanen, berikan nama file:

import duckdb

Membuat atau membuka database persisten

con = duckdb.connect('analitik.duckdb')

Membuat tabel

con.sql("""

CREATE TABLE IF NOT EXISTS penjualan (

id INTEGER PRIMARY KEY,

produk VARCHAR,

kategori VARCHAR,

jumlah INTEGER,

harga DECIMAL(10, 2),

tanggal DATE

)

""")

Insert data

con.sql("""

INSERT INTO penjualan VALUES

(1, 'Laptop Pro', 'Elektronik', 5, 15000000, '2026-01-15'),

(2, 'Mouse Wireless', 'Aksesoris', 50, 250000, '2026-01-16'),

(3, 'Keyboard Mekanik', 'Aksesoris', 30, 750000, '2026-01-16'),

(4, 'Monitor 27 inch', 'Elektronik', 10, 4500000, '2026-01-17'),

(5, 'Headset Gaming', 'Aksesoris', 25, 500000, '2026-01-18')

""")

Query data

result = con.sql("SELECT FROM penjualan WHERE kategori = 'Elektronik'")

result.show()

Query File Langsung Tanpa Import

Salah satu fitur paling powerful dari DuckDB adalah kemampuan query file langsung.

Query CSV

import duckdb

Query CSV langsung

result = duckdb.sql("""

SELECT

FROM readcsvauto('data/transaksi.csv')

WHERE total > 1000000

ORDER BY tanggal DESC

LIMIT 10

""")

result.show()

Dengan opsi spesifik

result = duckdb.sql("""

SELECT

FROM readcsv('data/transaksi.csv',

delim=',',

header=true,

dateformat='%Y-%m-%d'

)

""")

Query Parquet

Parquet adalah format file kolumnar yang sangat efisien. DuckDB membacanya secara native:

import duckdb

Query file Parquet

result = duckdb.sql("""

SELECT

kategori,

COUNT() AS jumlahtransaksi,

SUM(total) AS totalpendapatan,

AVG(total) AS ratarata

FROM readparquet('data/transaksi2026.parquet')

GROUP BY kategori

ORDER BY totalpendapatan DESC

""")

result.show()

Query multiple file Parquet dengan glob pattern

result = duckdb.sql("""

SELECT

FROM readparquet('data/transaksi.parquet')

Artikel Terkait

Tutorial PostgreSQL Advanced untuk ML: Analytics dan Feature Engineering

Tutorial 17: PostgreSQL Lanjutan untuk Machine Learning Daftar Isi Pendahuluan Prasyarat Window Functions untuk Rekayasa...

Tutorial Kedro: Pipeline Data Science yang Reproducible dan Terstruktur

Kedro: Pipeline Data Science yang Reproducible dan Mudah Dirawat Sebagian besar proyek data science dimulai dari satu no...

Tutorial Polars: DataFrame Library Ultra-Cepat untuk Data Science

Polars - Tutorial Lengkap Library DataFrame Ultra-Cepat Daftar Isi Pendahuluan Prasyarat Dasar-Dasar Polars [Evaluasi La...

Tutorial Feature Engineering Masterclass: Teknik Feature untuk ML

Tutorial 14: Masterclass Rekayasa Fitur (Feature Engineering) Daftar Isi Pendahuluan Prasyarat Mengapa Rekayasa Fitur Pe...