Materi
Gudang data diisi secara berkala oleh proses extract, transform, load (ETL). Microsoft merinci urutannya: muat tabel staging bila perlu, proses tabel dimensi, proses tabel fakta, lalu tugas penutup seperti menyegarkan laporan. Dimensi diproses lebih dulu supaya setiap anggota yang baru muncul di sumber sudah ada ketika fakta mencari kuncinya. Tabel staging menyerupai tabel sumber, dikosongkan di awal setiap proses, dan tidak pernah dibuka untuk pengguna laporan.
Tahap transformasi membentuk ulang data sumber agar cocok dengan tabel gudang: menggabungkan sumber berdasarkan kunci yang sama, mengubah tipe data, menghitung kolom baru seperti nilai dari harga kali jumlah, dan membersihkan kode yang ditulis tidak seragam. Tahap muat paling efisien bila berbasis himpunan, bukan baris per baris. Dokumentasi SQLite menjelaskan bentuk INSERT INTO tabel SELECT: satu baris baru disisipkan untuk setiap baris hasil SELECT, dan banyak kolom hasil harus sama dengan banyak kolom yang disebut.
-- Kafe: sisipkan menu yang belum ada di dimensi, langsung dari staging
INSERT INTO dim_menu (kode_menu, nama, jenis, harga)
WITH bersih AS (
SELECT UPPER(TRIM(kode)) AS kode_menu, nama, jenis, harga FROM stg_menu
)
SELECT b.kode_menu, b.nama, b.jenis, b.harga
FROM bersih b
WHERE b.kode_menu NOT IN (SELECT kode_menu FROM dim_menu);Bagian terpenting dari pernyataan itu adalah SELECT-nya, karena di situlah ditentukan baris mana yang masuk. Mesin latihan di situs ini hanya menerima SELECT dan WITH, jadi latihan di modul ini menulis bagian SELECT tersebut; INSERT di depannya ditulis di basis data sungguhan. Kunci pengganti dimensi tidak perlu ditulis: kolom INTEGER PRIMARY KEY di SQLite terisi otomatis.