Slowly Changing Dimension pada Data Warehouse’
Apakah pengertian dari ‘Slowly Changing Dimension’ ?
Dimensi yang berubah perlahan dari waktu ke waktu, dimensi ini menyimpan nilai atau data lama dari atribut sebuah dimensi. Dimensi adalah struktur yang mengkategorikan kumpulan informasi sehingga. Dimensi dalam manajemen data dan data warehouse (gudang data) berisi data yang relatif statis. Namun data dari dimensi dapat berubah secara perlahan dari waktu ke waktu dan pada interval yang tidak dapat diprediksi. Jenis data dari dimensi dapat dinamakan dengan Slowly Changing Dimension (SCD). Nilai yang lama tersebut dapat disimpan untuk sebagai sebuah “sejarah perubahan nilai” dari atribut sebuah dimensi yang berubah tersebut.Penyimpanan nilai yang lama ini dapat dilakukan dengan cara membuat sebuah kolom yang khusus untuk menyimpan nilai yang lama tersebut.
Dalam data warehouse memiliki tabel dimensi yang merupakan kunci utama secara unik untuk mengidentifikasikan setiap catatan (record) dan bagian informasi lainnya yang dikenal sebagai dimensi. Kunci utama (primary key) akan terhubung denga tabel fakta, oleh karena itu, data dari primary key menjadi penting untuk dapat diperbaharui sesuai dengan kebutuhan proses transaksi data saat ini dan data historis yang telah disimpan seperti pada gambar 1. Relasi Tabel Fakta dan Tabel Dimensi.
Gambar 1. Relasi Tabel Fakta dan Tabel Dimensi
Apa saja tipe-tipe dari Slowly Changing Dimension ?
Terdapat banyak pendeketan mengenai tipe-tipe dari SCD, Namun yang paling populer pendeketan dari SCD adalah :
- Tipe 0 : Metode pasif.
- Tipe 1 : Mengganti nilai lama.
- Tipe 2 : Membuat catatan tambahan baru.
- Tipe 3 : Manmbahkan kolom baru.
- Tipe 4 : Menggunakan tabel historis.
- Tipe 6 : Menggabungkan pendekatan tipe 1, 2, 3 (1+2+3 = 6)
Gambar 2. Tipe SCD
- Tipe 0 – Metode pasif. Metode ini tidak ada tindakan khusus yang dilakukan jika terjadi perubahan dalam suatu dimensi. Beberapa data dari dimensi menjadi tetap sama seperti pertama kali dimasukkan, data yang lain mungkin akan ditimpa dengan data yang baru.
- Tipe 1 – Mengganti nilai lama. Dalam metode ini tidak ada riwayat dari perubahan dimensi yang disimpan dalam database. Nilai dimensi dari data yang lama hanya diganti dengan yang baru. Jenis metode ini mudah dipelihara (maintain) dan sering digunakan untuk data yang perubahannya disebabkan oleh proses dari koreksi data, misalnya seperti penghapusan karakter khusus atau memperbaiki ejaan data.
Contoh dari metode ini ditunjukkan pada tabel 1. Terdapat tabel yang memiliki data Corporate dari kolom CustType, kemudia terdapat perubahan pada tabel 2. Kolom CustType menjadi Retail. Perubahan tersebut dapat berubaha sesuai kedaan kondisi data yang dibutuhkan saat ini.
Sebelum perubahan :
Tabel 1. Sebelum Perubahan CustType
CustD | CustName | CustType |
1 | Cust_1 | Corporate |
Setalah perubahan :
Tabel 2. Setelah Perubahan CustType
CustD | CustName | CustType |
1 | Cust_1 | Retail |
- Tipe 2 – Membuat catatan tambahan baru. Dalam metodologi ini semua perubahan sejarah dimensi disimpan dalam database. Melakukan perubahan atribut dengan menambahkan baris baru, menggunakan primay key yang baru ke dalam tabel dimensi selain itu terdapat penambahan kolom ‘Tanggal Efektif’ dan ‘Indikator saat ini’ dalam metode ini. Penambahan kolom ‘Indikator saat ini’ atau ‘Current Indicator’ ditulis dengan ‘Y’ dan untuk kolom ‘Tanggal Efektik’ atau ‘Effective Date’ ditulis dengan start_date dan end_date. Memperkenalkan tipe 2 dari SCD ini menjadi suatu bentuk metode operasi data yang membutuhkan biaya mahal sehingga belum sepenuhnya disarankan untuk menggunakannya dalam dimensi dimana tribut baru dapat ditambahkan dimasa yang akan datang.SCD tipe 2 jauh lebih fleksibel untuk menyimpan sejarah perubahan data.Karena dapat menyimpan perubahan data sebanyak apapun tanpa harus mengubah struktur tabel itu sendiri.
Sebelum perubahan :
Tabel 3. Sebelum Perubahan CustType Tipe 2
CustD | CustName | CustType | StarDate | EndDate | CurrFlag |
1 | Cust_1 | Corporate | 22-05-2018 | 31-12-9999 | Y |
Setalah perubahan :
Tabel 4. Setelah Perubahan CustType Tipe 2
CustD | CustName | CustType | StarDate | EndDate | CurrFlag |
1 | Cust_1 | Corporate | 22-05-2018 | 24-08-2018 | N |
2 | Cust_1 | Retail | 25-08-2018 | 31-12-9999 | Y |
- Tipe 3 – Menambahkan kolom baru. Dalam tipe ini biasanya hanya nilai dimensi saat ini dan sebelumnya disimpan di database. Nilai baru dimuat dalam kolom ‘Sekarang/Baru’ (Current Type) dan kolom lama dimuat dalam kolom lama yang diberi nama ‘Lama/Sebelumnya’ (Previous Type). SCD tipe 3 menggunakan kolom untuk menyimpan datalama setelah perubahan terjadi, yang menyebabkannya tidak terlalu fleksibel untuk Metode ini ideal digunakan pada situasi dimana tidak terlalu banyak data peruabahan yang ingin disimpan, atau jumlah perubahan yang ingindisimpan diketahui secara pasti.Metode ini juga sesuai apabila perubahan data pada atribut tersebut akan mempengaruhi banyakbaris data lainnya, atau nilai atribut ini diubah oleh banyak baris data lain secara bersamaan.
Sebelum perubahan :
Tabel 5. Sebelum Perubahan Kolom PerviousType
CustD | CustName | CurrentType | PreviousType |
1 | Cust_1 | Corporate | Corporate |
Setalah perubahan :
Tabel 6. Setelah Perubahan Kolom PerviousType
CustD | CustName | CurrentType | PreviousType |
1 | Cust_1 | Retail | Corporate |
- Tipe 4 – Menggunakan tabel historis. Dalam metode ini , tabel historis terpisah digunakan untuk mencari semua perubahan historis pada atribut data untuk masing-masing dimensi. Tabel dimensi utama hanya menyimpan data saat ini. Misalnya tabel customer dan customer_history.
Sebelum perubahan :
Tabel 7. Sebelum Perubahan Data Corporate
CustD | CustName | CustType |
1 | Cust_1 | Corporate |
Setalah perubahan :
Tabel 8. Penambahan StarDate dan EndDate
CustD | CustName | CustType | StartDate | EndDate |
1 | Cust_1 | Retail | 01-01-2018 | 21-07-2018 |
1 | Cust_1 | Other | 22-07-2018 | 17-05-2018 |
1 | Cust_1 | Corporate | 18-05-2018 | 31-12-9999 |
- Tipe 6 – Menggabungkan pendekatan tipe 1, 2, 3 (1+2+3 = 6). Pada tipe ini memiliki dimensi dari kolom tambahan seperti :
- current_type untuk menyimpan nilai atribut saat ini. Semua catatan sejarah untuk item atribut yang diberikan memiliki nilai saat ini yang sama.
- historical_type untuk menyimpan nilai historis atribut. Semua catatan sejarah untuk item atribut tertentu dapat memiliki nilai yang berbeda.
- start_date – untuk menjaga tanggal mulai dari ‘tanggal efektif’ dari sejarah atribut.
- end_date – untuk menjaga tanggal akhir dari ‘tanggal efektif’ dari sejarah atribut.
- current_flag – untuk menyimpan informasi tentang catatan terbaru.
Didalam metode ini menangkap perubahan dari nilai atribut dengan cara menambahkan catatan baru seperti tipe 2. Informasi dari kolom current_type diganti dengan yang baru seperti pada tipe 1. Kemudian menyimpan sejarah histori dari perubahan data seperti tipe 3.
Tabel 9. Menggabungkan Tipe 1 – 3
CustD | CustName | CustType | HistType | StartDate | EndDate | CurrFlag |
1 | Cust_1 | Corporate | Retil | 01-01-2018 | 21-07-2018 | N |
1 | Cust_1 | Corporate | Other | 22-07-2018 | 17-05-2018 | N |
1 | Cust_1 | Corporate | Corporate | 18-05-2018 | 31-12-9999 | Y |
Oleh
Atria Dika Puspita
Finda Anisa Putri
Nindhia Hutagaol
Referensi
https://www.kimballgroup.com/2013/02/design-tip-152-slowly-changing-dimension-types-0-4-5-6-7/
http://datawarehouse4u.info/SCD-Slowly-Changing-Dimensions.html
http://uu.diva-portal.org/smash/get/diva2:233931/FULLTEXT01.pdf
http://www.iri.com/blog/vldb-operations/introduction-to-slowly-changing-dimensions-scd/