Lompat ke konten utama

Kompetisi Ajak Teman: hadiah total Rp1.000.000 tunai untuk 3 pengajak terbanyak. Berakhir 29 November 2026. Ikut kompetisi

←

SQL untuk Gudang Data

Pelajaran 7 dari 16

Skema bintang

Dimensi tanggal

Setelah pelajaran ini kamu bisa membentuk kunci tanggal YYYYMMDD, mengelompokkan dan mengurutkan lewat atribut kalender, dan menemukan hari tanpa transaksi.

±14 menitDiperiksa 3 Okt 2026

Materi

Microsoft menyebut dimensi tanggal sebagai dimensi yang paling sering dipakai dan yang paling konsisten muncul di skema bintang. Satu baris mewakili satu tanggal, dan atributnya mendukung penyaringan dan pengelompokan menurut periode: tahun, kuartal, bulan, nama bulan, nomor hari dalam minggu, nama hari, penanda akhir pekan, dan hari libur. Nomor bulan disimpan di samping nama bulan karena teks Januari, Februari, Maret tidak terurut benar sebagai teks.

Kunci dimensi tanggal adalah satu-satunya kunci pengganti yang boleh bermakna: tanggal ditulis sebagai bilangan bulat YYYYMMDD, misalnya 20260317. Bentuk ini ringkas, terurut secara angka, dan mengikuti urutan ISO 8601. Karena kuncinya bisa dihitung dari tanggal, proses muat fakta tidak perlu mencarinya di dimensi. Di SQLite, strftime('%Y%m%d', tanggal) menghasilkan teksnya, lalu CAST mengubahnya menjadi INTEGER.

-- Membuat deret tanggal untuk dim_tanggal (CTE rekursif; mesin latihan tidak menerimanya)
WITH RECURSIVE hari(tgl) AS (
  SELECT '2027-01-01'
  UNION ALL
  SELECT date(tgl, '+1 day') FROM hari WHERE tgl < '2027-12-31'
)
SELECT CAST(strftime('%Y%m%d', tgl) AS INTEGER) AS tanggal_key, tgl,
       CAST(strftime('%m', tgl) AS INTEGER) AS bulan,
       CAST(strftime('%u', tgl) AS INTEGER) AS hari_ke  -- 1 = Senin
FROM hari;

Sumber operasional hampir tidak pernah punya data kalender, jadi dimensi tanggal dibangkitkan di gudang data sekali, lalu diperpanjang ke tahun-tahun berikutnya. Isinya mencakup seluruh rentang tanggal semua fakta, termasuk tanggal tanpa transaksi. Karena itu dimensi tanggal juga alat untuk menemukan hari kosong: mulai dari dim_tanggal, LEFT JOIN ke fakta, lalu cari baris tanpa pasangan. Satu dimensi tanggal juga bisa berperan ganda; fakta pengiriman dengan tanggal pesan dan tanggal kirim merujuk tabel yang sama dua kali dengan alias berbeda.

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke

Tampilkan 1 lagi