Lewati ke konten utama
Rekayasa Data

Pengenalan Paket dbt-utils

Pelajari bagaimana dbt-utils meningkatkan dbt dengan makro siap pakai, fitur utama, dan kasus penggunaan praktis. Sederhanakan transformasi data Anda dengan panduan langkah demi langkah kami.
Austin Chia's photo
Austin Chia
Diperbarui · 12 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Buat Akun Gratis Anda

Berlatih dan lacak kemajuan Anda.

Lanjutkan Dengan Google
Dengan melanjutkan, Anda menerima Ketentuan Penggunaan kami, Kebijakan Privasi kami dan bahwa data Anda disimpan di Amerika Serikat.

Paket dbt-utils adalah seperangkat alat yang kuat untuk menyederhanakan dan meningkatkan proses transformasi data Anda. Dalam panduan ini, kami akan memperkenalkan dbt-utils, menunjukkan bagaimana paket ini dapat memperlancar alur kerja Anda dengan makro siap pakai untuk operasi SQL umum.

Apa itu dbt-utils?

paket dbt-utils

dbt-utils adalah sebuah paket di dbt yang menyediakan seperangkat makro siap pakai untuk meningkatkan fungsionalitas proyek dbt. dbt-utils mengurangi kompleksitas dengan menambahkan lapisan abstraksi, sehingga transformasi data menjadi lebih efisien dan konsisten.

Jika Anda terbiasa dengan library di Python dan paket di R, paket dbt-utils serupa dengan itu.

Dengan makro standar untuk operasi Structured Query Language (SQL) umum, dbt-utils memastikan Anda tidak perlu mengodekan seluruh transformasi dari nol.

Memanfaatkan utilitas ini mencegah upaya "menciptakan ulang roda" dengan mengintegrasikan kumpulan makro yang telah diverifikasi komunitas ke dalam proyek Anda, meningkatkan keterpeliharaan dan mendorong budaya praktik terbaik.

Fitur dan fungsionalitas utama

dbt-utils menyediakan beragam fitur dan fungsionalitas yang membuat transformasi data lebih efisien dan lancar. Ini termasuk:

1. Makro standar

dbt-utils menawarkan berbagai makro siap pakai untuk operasi SQL umum menggunakan Jinja templating, seperti join, agregasi, penyaringan, dan lainnya.

Makro ini distandardisasi untuk memastikan konsistensi antarproyek dan mengurangi kebutuhan pengodean berulang.

Sebagai contoh, berikut beberapa makro yang digunakan oleh analytics engineer:

  • date_spine: Membuat rangkaian tanggal berkelanjutan antara dua tanggal tertentu, berguna untuk analisis deret waktu.
  • pivot: Mengubah baris menjadi kolom secara dinamis, menyederhanakan operasi crosstab.
  • star: Mengambil semua field dari tabel yang ditentukan dalam model, mengecualikan yang ada di argumen except.
  • union_relations: Menggabungkan data dari beberapa relasi dengan struktur yang sama menggunakan union all.
  • generate_series: Membuat deret data numerik, berguna untuk analisis deret waktu.
  • surrogate_key: Menghasilkan pengenal unik untuk baris dengan menggabungkan beberapa field.

Dengan makro-makro ini, SQL dapat menyelesaikan tugas yang sebaliknya rumit dan berulang.

2. Bantuan skema dan dokumentasi

dbt-utils menyediakan alat yang berguna untuk mengelola skema dan dokumentasi di dalam model data. Ini memudahkan pelacakan perubahan dan menjaga kerapian dalam proyek.

4. Kemampuan pengujian

Dengan dbt-utils, pengguna dapat dengan mudah menulis pengujian untuk memastikan akurasi dan kualitas transformasi data mereka. Pengujian ini dapat diotomatisasi dan diintegrasikan ke dalam proses continuous integration, sehingga pipeline data menjadi lebih efisien dan andal.

Mengapa Menggunakan dbt-utils?

Jadi, mengapa menggunakan paket ini?

Pertama, mari kita lihat beberapa manfaatnya:

  1. Menyederhanakan SQL kompleks: Dengan penggunaan makro, dbt-utils menyederhanakan penulisan kueri SQL yang kompleks. Ini menghemat waktu dan upaya analis serta engineer data, sehingga mereka bisa fokus pada analisis tingkat tinggi alih-alih terjebak di kode.
  2. Dokumentasi yang efisien: Seperti disebutkan sebelumnya, dbt-utils dapat membantu menghasilkan dokumentasi secara otomatis.
  3. Peningkatan kontrol kualitas: Dengan memasukkan kemampuan pengujian ke dalam pipeline data, dbt-utils membantu memastikan akurasi dan keandalan transformasi data.
  4. Validasi data otomatis: Dengan dbt-utils, validasi data dapat diotomatisasi dan diintegrasikan ke dalam proses pengembangan. Ini memastikan setiap perubahan pada model data segera divalidasi dan potensi masalah terdeteksi lebih awal.
  5. Sumber terbuka: dbt-utils bersifat open-source, sehingga banyak pengembang dapat berkontribusi pada pengembangannya. Artinya paket ini akan terus diperbarui.

Instalasi dan Penyiapan dbt-utils

Mari lihat bagaimana paket dbt-utils dapat diperkenalkan ke dalam alur kerja data Anda di bawah ini.

Prasyarat

Sebelum menggunakan dbt-utils, pemahaman tentang SQL dan dasar-dasar dbt (data build tool) sangat penting. Anda sebaiknya sudah memiliki proyek dbt yang diinisialisasi dan dikonfigurasi.

Jika Anda perlu penyegaran, Anda dapat melihat kursus Introduction to dbt dan tutorial dbt kami.

Selain itu, penyelarasan versi yang jelas antara dbt core Anda dan paket dbt-utils diperlukan. Disarankan untuk memeriksa kompatibilitas antarversi dbt guna mencegah konflik atau fungsionalitas usang.

Instalasi langkah demi langkah

Untuk mulai mengintegrasikan dbt-utils ke dalam stack data Anda, pastikan lingkungan pengembangan Anda telah ditata dengan benar.

Langkah 1: Instal dbt

Pastikan dbt terinstal di lingkungan Anda. Anda dapat menginstal dbt melalui pip:

pip install dbt

Langkah 2: Tambahkan dbt-utils ke proyek dbt Anda

Untuk menginstal dbt-utils, tambahkan yang berikut ke file packages.yml di direktori root proyek dbt Anda.

Buat file ini di root proyek dbt Anda jika belum ada, lalu tambahkan yang berikut:

packages:
- package: dbt-labs/dbt_utils
version: "1.1.1" # Use the latest version compatible with your dbt version

Di file yaml ini, Anda juga akan menentukan versi paket yang diperlukan. Pastikan menggunakan versi terbaru yang kompatibel dengan versi dbt yang terpasang.

Langkah 3: Instal paket

Setelah mengubahnya, instalasi tinggal satu perintah lagi.

Eksekusi perintah ini dengan sukses akan mengambil dan memasang dbt-utils, menyiapkan Anda untuk fungsionalitas yang lebih kaya.

Jalankan perintah berikut di terminal Anda dalam direktori proyek dbt:

dbt deps

Perintah ini menginstal semua paket yang tercantum di packages.yml Anda.

Utilitas Utama dbt-utils dan Penerapannya

Paket dbt-utils menyediakan sekumpulan fungsi pembantu umum yang memperlancar transformasi SQL dalam proyek dbt.

Fungsi-fungsi ini membantu pengembang menghindari redundansi dan fokus pada logika bisnis yang unik.

Berikut beberapa fungsi di dbt-utils:

1. Generator SQL

Generator SQL di dbt-utils berguna untuk membuat kode SQL yang modular.

Sebagai contoh, makro deduplicate sangat baik untuk menghilangkan baris duplikat sambil mempertahankan urutan data. Duplikat dapat dihapus dari model, tabel, bahkan Common Table Expressions (CTE).

2. Pengujian generik

Pengujian generik digunakan untuk memvalidasi data dalam tabel atau view. Pengujian ini mudah disesuaikan dengan kebutuhan spesifik dan memberikan wawasan berharga tentang kualitas data yang diproses.

Misalnya, makro expression_is_true memeriksa apakah suatu ekspresi bernilai true. Ini dapat digunakan secara fleksibel untuk memverifikasi beberapa kondisi, seperti:

  • Panjang kolom
  • Keluaran dari operasi aljabar dasar tertentu

3. Jinja helper

Jinja helper berguna untuk membuat kueri SQL dinamis yang mudah disesuaikan berdasarkan masukan pengguna atau data variabel. Ini memungkinkan logika kondisional dan perulangan di dalam pernyataan SQL.

Templat Jinja digunakan untuk mendefinisikan dan menentukan makro ini.

Salah satu contohnya adalah makro pretty_time, yang mengembalikan string stempel waktu saat ini.

4. Web macro

Web macro mirip dengan Jinja helper, tetapi dirancang khusus untuk proyek berbasis web. Makro ini memungkinkan pembuatan dan manipulasi HTML dinamis, sehingga lebih mudah membuat halaman web yang interaktif dan responsif.

Salah satu makro yang berguna adalah get_url_path, yang mengambil path halaman dari URL. Berikut tampilan sintaksnya:

{{ dbt_utils.get_url_path(field='page_url') }}

5. Makro introspektif

Makro introspektif adalah makro yang dapat mengakses dan memanipulasi data dalam lingkup saat ini. Ini memungkinkan pemrosesan data yang dinamis dan efisien, mengurangi kebutuhan fungsi atau kode tambahan.

Salah satu contohnya adalah makro get_column_values, yang mengembalikan hasil kueri sebagai objek.

Kasus Penggunaan Praktis dbt utils

Kasus penggunaan 1: Menyederhanakan kueri kompleks

Skenario contoh: Sebuah perusahaan memiliki dataset besar yang berisi informasi pelanggan, data transaksi, dan data produk. Mereka perlu membuat laporan yang menampilkan total penjualan untuk setiap kategori produk pada kuartal terakhir.

Alih-alih menulis kueri SQL yang kompleks untuk menjoin beberapa tabel dan menghitung penjualan per kategori, mereka dapat menggunakan dbt utils untuk dengan mudah mengekstrak data relevan dan memanipulasinya dalam makro atau model mereka.

Sebagai contoh, mereka dapat menggunakan get_filtered_columns_in_relation untuk menyaring hanya kolom yang diperlukan terkait data produk, lalu menggunakan makro sum untuk menghitung total penjualan per kategori.

Ini menyederhanakan proses dan membuatnya lebih efisien, menghemat waktu dan mengurangi kesalahan.

Implementasi kode:

Untuk menerapkan solusi ini pada basis data tiruan, Anda dapat mengikuti langkah-langkah berikut:

Gunakan makro get_filtered_columns_in_relation untuk menyaring hanya kolom yang diperlukan dari data produk. Makro ini membantu Anda memilih kolom relevan secara efisien.

-- models/product_data_filtered.sql
with product_data as (
select
{{ dbt_utils.get_filtered_columns_in_relation(
relation=ref('products'),
include=['product_id', 'category']
) }}
from {{ ref('products') }}
)
select * from product_data

Selanjutnya, buat model untuk menjoin data produk, transaksi, dan pelanggan. Lalu gunakan fungsi sum untuk menghitung total penjualan untuk setiap kategori produk pada kuartal terakhir.

-- models/total_sales_by_category.sql
with product_data as (
select
{{ dbt_utils.get_filtered_columns_in_relation(
relation=ref('products'),
include=['product_id', 'category']
) }}
from {{ ref('products') }}
),
transaction_data as (
select
product_id,
sale_amount,
transaction_date
from {{ ref('transactions') }}
where transaction_date >= date_trunc('quarter', current_date) - interval '1 quarter'
),
joined_data as (
select
p.category,
t.sale_amount
from product_data p
join transaction_data t
on p.product_id = t.product_id
)
select
category,
sum(sale_amount) as total_sales
from joined_data
group by category

Setelah mendefinisikan model, jalankan model dbt untuk mengeksekusi transformasi dan menghasilkan laporan.

dbt run

Berikut penjelasan kode di atas:

Makro get_filtered_columns_in_relation membantu memilih hanya kolom yang diperlukan (product_id dan category) dari tabel products, menyederhanakan dataset.

Berikutnya, data produk yang telah disaring dijoin dengan data transaksi menggunakan SQL untuk memperoleh nilai penjualan setiap produk. Lalu menghitung total penjualan untuk setiap kategori produk dalam kuartal terakhir menggunakan fungsi agregasi sum.

Kasus penggunaan 2: Menjaga kualitas data dengan pengujian generik

Skenario contoh:

Dalam kasus penggunaan ini, kita akan melanjutkan bekerja dengan dataset tiruan yang sama dari Kasus Penggunaan 1. Namun, alih-alih membuat laporan, tujuan kita adalah memastikan kualitas data dengan menjalankan pengujian generik pada data.

Implementasi kode:

Di bawah ini adalah contoh cara menerapkan pengujian tersebut pada dataset Anda:

1. Menguji proporsi nilai null

Dalam pengujian generik ini, kita akan membatasi hanya nilai yang memenuhi proporsi non-null yang kita tentukan. Kita akan menggunakan pengujian not_null_proportion.

# models/products.yml
version: 2
models:
- name: products
columns:
- name: product_id
tests:
- dbt_utils.not_null_proportion:
at_least: 0.95

Pada contoh ini, kami menyertakan argumen opsional tambahan at_least untuk menetapkan proporsi non-null maksimum 0,95.

2. Menguji field kosong

Pada contoh ini, kita akan menggunakan pengujian not_empty_string untuk memeriksa string kosong pada field product_id.

# models/products.yml
version: 2
models:
- name: products
columns:
- name: product_id
tests:
- dbt_utils.not_empty_string

3. Menguji integritas referensial

Menggunakan fungsi relationships_where akan memastikan bahwa setiap product_id di tabel transactions ada di tabel products.

# models/transactions.yml
version: 2
models:
- name: transactions
columns:
- name: product_id
tests:
- dbt_utils.relationships_where:
to: ref('products')
field: product_id

Pada contoh ini, kita memastikan semua nilai product_id di tabel transactions sesuai dengan entri yang valid di tabel  . Ini adalah pemeriksaan dasar integritas relasi.

Perlu dicatat bahwa Anda juga dapat menggabungkan beberapa pengujian sekaligus sehingga Anda dapat mencakup beberapa pemeriksaan integritas.

Setelah semua pengujian didefinisikan di file konfigurasi yaml Anda, gunakan perintah dbt test untuk mengeksekusi semua pengujian skema yang telah didefinisikan.

dbt test

Praktik Terbaik dbt utils

Memanfaatkan dbt-utils secara efisien

Saat menggunakan dbt, penting untuk mengikuti praktik terbaik guna memastikan proyek Anda berjalan efisien dan efektif. Saat menggunakan dbt-utils, ada beberapa poin kunci yang perlu diingat:

  1. Gabungkan beberapa pengujian alih-alih mendefinisikannya secara terpisah: Seperti disebutkan sebelumnya, Anda dapat menggabungkan beberapa pengujian ke dalam satu pernyataan pengujian. Ini membantu mengurangi redundansi dan meningkatkan kinerja proyek secara keseluruhan.
  2. Gunakan makro dbt_utils.surrogate_key saat membuat surrogate key: Makro ini secara otomatis menghasilkan surrogate key berdasarkan kolom lain di tabel Anda, sehingga menghemat waktu dan upaya.

Jebakan umum dan cara menghindarinya

Berikut beberapa jebakan umum yang mungkin ditemui pengguna saat menggunakan dbt-utils, beserta kiat untuk menghindarinya:

  1. Tidak mengonfigurasi makro kustom dengan benar: Jika Anda membuat makro kustom sendiri, pastikan makro tersebut dikonfigurasi dan diuji dengan benar sebelum dimasukkan ke dalam proyek Anda.
  2. Tidak memperbarui ke versi terbaru dbt-utils: Penting untuk rutin memperbarui ke versi terbaru dbt-utils agar dapat memanfaatkan fitur baru dan perbaikan bug.

Kesimpulan

dbt-utils adalah alat yang kuat untuk memperlancar, menguji, dan mengotomatisasi tugas dalam proses pemodelan data Anda. Ini adalah bagian penting saat menggunakan dbt dan dapat menghemat waktu serta upaya dalam mengembangkan model data Anda.

Anda mungkin juga tertarik dengan tutorial dbt ini atau daftar alat rekayasa data alternatif ini.

Jika Anda tertarik untuk mulai menggunakan dbt dan ingin pembelajaran lanjutan, jelajahi juga Kursus Introduction to dbt kami!


Austin Chia's photo
Author
Austin Chia
LinkedIn

Saya Austin, seorang blogger dan penulis teknologi dengan pengalaman bertahun-tahun sebagai data scientist dan analis data di bidang kesehatan. Memulai perjalanan teknologi dengan latar belakang biologi, kini saya membantu orang lain melakukan transisi yang sama melalui blog teknologi saya. Ketertarikan saya pada teknologi mendorong kontribusi tulisan saya untuk puluhan perusahaan SaaS, menginspirasi orang lain dan membagikan pengalaman saya.

Topik
Rekayasa Data

Lanjutkan Perjalanan Pembelajaran dbt Anda Hari Ini!

Kursus

Pengantar dbt

4 jam
34.5K
Kursus ini memperkenalkan dbt untuk pemodelan data, transformasi, pengujian, dan pembuatan dokumentasi.
Lihat DetailMulai Kursus

Program

Data Engineer dalam Python

40 jam
Dapatkan keterampilan yang sangat dicari untuk mengelola data dengan efisien, termasuk mengimpor, membersihkan, mengelola data, serta menjadwalkan dan memantau pipeline, sehingga Anda dapat menonjol di bidang data engineering.

Buat Akun Gratis Anda

Berlatih dan lacak kemajuan Anda.

Lanjutkan Dengan Google
Dengan melanjutkan, Anda menerima Ketentuan Penggunaan kami, Kebijakan Privasi kami dan bahwa data Anda disimpan di Amerika Serikat.
Lihat Selengkapnya
Terkait

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat Selengkapnya