Dalam data engineering pipeline ada istilah E.T.L (Extract, Transform & Load) atau ELT (Extract, Load & Transform) . Semasa saya memulakan projek dbt dulu saya tertanya-tanya dbt projek ini bahagian yang mana satu?
dbt = Bahagian TRANSFORM
Apa itu dbt?
dbt adalah sebuah tools (command line tools) untuk melalukan data transformasi dengan lebih mudah. Pada bahagian T = Transform, data sudah berada dalam Data Warehouse baru lah dbt dapat beraksi. Rajah di bawah memberi gambaran tepat di mana letaknya dbt :
dbt membantu anda menulis skrip data transformasi dengan lebih baik. Salah satu sebab kenapa dbt ini menarik pagi kami adalah anda dapat mengawal code kerana struktur projek yang baik dan dapat membuat kerjasama kod menjadi lebih mudah.
Anatomi dbt
Mari kita lihat asas struktur projek dbt.
Analyses
Di dalam folder ini, user boleh menulis SQL dan di compile . Namun ia tidak sama seperti SQL yang berada dalam Models folder. Apabila SQL file di dalam folder ini di compile , penganalisis boleh menggunakan SQL query in dalam aplikasi yang lain seperti dashboard.
Jadi kepada perlu menulis SQL ini dalam Analyses? Ini akan memudahkan anda membuat rujukkan sources dalam struktur projek yang sama dengan menggunakan sesuatu seperti ini
from {{ ref('silver_tbl_orders') }}
Macros
Folder ini digunakan untuk membuat macros kepada SQL anda. Macros ini adalah seperti function dalam SQL. Jadi jika anda mempunyai satu function yang sering digunakan oleh pelbagai SQL script membuat macros script adalah Jalan yang terbaik.
Macros membenarkan anda pass parameter dalam satu functions dan ia akan memulangkan semula satu nilai yang lain berdasarkan logik yang anda tertentukan.
Models
Di sini adalah di mana magik bermula. Ini adalah jantung kepada dbt. Model ini akan menentukan bagaimana data query.
Seperti contoh yang diberikan dalam Github
Kami telah membahagikan model ini kepada 3 bahagian mengikut medallion design:
Bronze
Bronze model digunakaan untuk membuat modifikasi data yang minimal, Contohnya seperti:
Penukaran datatype
Pengantian data - Contohnya jika column Null digantikan dengan nilai yang lain.
Silver
Silver Model pula lebih kepada incremental load kepada sebuah table. Kitanya data di sini adalah data yang dicategorikan kepada 2 kategori utama:
Facts - Data berkaitan dengan transaksi dan selalunya kerap berubah
Dimension - Data berkaitan dengan dimension data yang digunakan untuk analisa. Contohnya Jumlah jual an berdasarkan Negeri (Negeri adalah table Dimension)
Mengkategorikan data ini dapat membantu anda mencipta rekaan table yang lebih baik. Sebagai contoh untuk table Facts, anda perlu memikirkan faktor performance kerana sifat table-table adalah ia sering dikaitankan dengan jumlah data yang tinggi.
Tetapi lain pula kepada table Dimension, kerana sihatnya yang jarang berubah dan bukan transaction (ini bermaksud data tidak di append tetapi diupdate), mungkin kita perlu meletakkan Slow Data Change (SCD) untuk menyimpan sejarah berubahan table.
Dalam rencana akan datang saya akan kongsikan dengan lebih lanjut cara mencipta model-model ini.
Gold
Model dalam kategori ini adalah data yang bersih dan mudah gunakan untuk penguna-penguna business. Sebagai contoh, dalam model ini table seperti “Jumlah Penggunaan Aktif”. Data dalam table/view ini sudah di massage untuk memberikan satu lapisan data yang mudah kepada pengguna. Dalam model ini, saya lebih menekankan penggunaan view atau materialized view.
Profiles
Folder profiles menentukan bagaimana and cuba untuk menghubungi pengkalan data (Databases/ Data Sources) . Salah satu file penting dalam folder in adalah profiles.yml
Secara default profile files ini berada dalam /.dbt/profiles.yml
$ dbt run --profiles-dir path/to/directory
Seeds
Folder ini kami jarang guna. Tetapi jika anda ada data yang ingin anda masukkan dalam table, folder ini boleh digunakan.
Snapshots
Ini adalah satu lagi folder yang penting. Snapshots folder digunakan untuk mendapatkan snapshot data daripada sebuah table.
Tests
Dalam dbt, kita boleh menjalankan Unit Testing kepada model anda, terutamanya jika anda ada logic program dalam SQL atau macros. Seperti dalam Unit Testing, anda boleh memberikan sample data dan membiarkan Unit Testing menjalankan testing. Seterusnya unit testing ini akan membandingkan data anda dengan result yang anda inginkan.
dbt_project.yml
File ini amat penting kerana ia menentukan schema design and bagaimana anda menyimpan data dalam database. Akan ada sebuah rencana khas untuk dbt_project.yml ini kerana kami berdua berhempas pulas untuk memahami bagaimana hendak menjadikan data kami dinamik terutamanya apabila kami mempunyai Bronze, Silver dan Gold design.
Setakat itu sahaja rencana ini. Rencana-rencana akan datang akan, kami ada menjejaskan setiap komponen dengan lebih teliti lagi.