Minggu ini diajak meeting untuk membahas perubahan data warehouse karena akan diadakan penambahan object pada system tersebut, pada sela-sela meeting ada pembahasan mengenai SCD (Slowly Changing Dimensions) dan kebetulan bisa dibilang untuk data warehouse masih dikatakan baru sedikit pengalamannya dan jadi sedikit agak bingung dengan pembahasan dari SCD tersebut. Akhirnya kepo punya kepo dicarilah istilah tersebut, dan saya pun bisa dibilang dapet ilmu baru untuk data warehouse, yuk kita bahas sedikit untuk SCD ini.
Jika kita berbicara tentang data warehouse dibutuhkan historical data yang dapat menjelaskan / menggambarkan tracking perubahan datanya berdasarkan waktu. Contohnya jika ada data karyawan yang pindah divisi pekerjaan maka data warehouse idealnya meng-capture sebelum & sesudah data tersebut berubah, sehingga detail datanya bisa terlihat,
Tanggal | No Induk Pegawai | Nama Karyawan | Divisi |
1-May-11 | KN092399 | Jonshon | IT Support |
7-Feb-13 | KN092399 | Jonshon | IT Development |
9-Oct-15 | KN092399 | Jonshon | IT Governance |
Tabel diatas bisa dibilang terjadi 2 kali perubahan pada data karyawan tersebut, dimana pada awalnya karyawan tersebut adalah seorang IT Support kemudian pindah menjadi IT Development, dan akhirnya berubah lagi menjadi IT Governance.
Untuk historical data pendekatannya bisa menggunakan metode SCD, metode ini memiliki banyak pendekatan dan yang paling populer adalah
- Type 0 : Metode Pasif
- Type 1 : Mengubah value lama
- Type 2 : Menambah 1 record baru
- Type 3 : Menambah 1 kolom
- Type 4 : Membuat tabel historical
- Type 6 : Kombinasi antara beberapa tipe
Type 0
Pada pendekatan ini tidak ada perlakuan khusus yang dilakukan pada perubahan dimensi, terkadang ada yang membuat data dimensi sama dengan pertama kali masuk, atau pun bisa meniban data dimensi sebelumnya *kalau kata dedengkot kantor itu gimana brengseknya aja :))*
Type 1
Pendekatan ini akan menimpa data yang lama tanpa perlu menyimpan data sebelumnya, jadi tidak akan ada yang namanya historical data pada pendekatan ini
Contoh:
Sebelum Perubahan
No Induk Pegawai | Nama Karyawan | Divisi |
KN092399 | Jonshon | IT Support |
Setelah Perubahan
No Induk Pegawai | Nama Karyawan | Divisi |
KN092399 | Jonshon | IT Development |
Type 2
pada pendekatan ini semua perubahan data di simpan dan dijadikan history, jika ada perubahan data maka akan menambah record baru, perubahan data disini tergantung dari key yang di identifikasi sebelumnya sehingga data terlihat historical berdasarkan key yang ada, pada pendekatan ini juga dipasang ‘effective_date’ dan ‘column_indicator’ dimana ‘effective_date’ ini menggunakan kolom start_date & end_date sebagai acuan perubahan data dan ‘column_indicator’ adalah kolom yang mengidentifikasi data terakhir. Hanya ada 1 record yang memiliki ‘column_indocator’ yang bernilai ‘Y’
*Perlu diingat bahwa pada saat pertama kali data itu masuk value dari End_date harus 9999-12-31 (Menandakan bahwa data masih effective), dan apabila data tersebut di update harus Start_date -1 dari data yang baru (Menendakan bahwa data sudah expired).
Sebelum Perubahan
No Induk Pegawai | Nama Karyawan | Divisi | Start_date | End_Date | Current_Flag |
KN092399 | Jonshon | IT Support | 1-May-11 | 31-Dec-99 | Y |
Setelah Perubahan
No Induk Pegawai | Nama Karyawan | Divisi | Start_date | End_Date | Current_Flag |
KN092399 | Jonshon | IT Support | 1-May-11 | 6-Feb-13 | N |
KN092399 | Jonshon | IT Development | 7-Feb-13 | 31-Dec-99 | Y |
Type 3
Pada pendekatan ini data yang di simpan adalah previous data & current data, data yang baru akan di simpan pada kolom current data, sedangkan data yang lama akan disimpan pada previous data.
Sebelum Perubahan
No Induk Pegawai | Nama Karyawan | Prev Div | Current Div |
KN092399 | Jonshon | IT Support | IT Support |
Setelah Perubahan
No Induk Pegawai | Nama Karyawan | Prev Div | Current Div |
KN092399 | Jonshon | IT Support | IT Development |
Type 4
Pendekatan ini menggunakan historical tabel, apa bedanya dengan Type 2? perbedaannya pada Type ini data historical disimpan pada tabel yang berbeda dengan main tabelnya. Jadi untuk main table hanya akan terisi data yang paling up to date
Main Table
No Induk Pegawai | Nama Karyawan | Divisi |
KN092399 | Jonshon | IT Governance |
Historical Table
No Induk Pegawai | Nama Karyawan | Divisi | Start_date | End_Date |
KN092399 | Jonshon | IT Support | 1-May-11 | 6-Feb-13 |
KN092399 | Jonshon | IT Development | 7-Feb-13 | 8-Oct-15 |
KN092399 | Jonshon | IT Governance | 9-Oct-15 | 31-Dec-99 |
Type 6
Type ini merupakan kombinasi dari Type-Type yang sebelumnya telah dijelaskan, jadi ini seharusnya bisa menggunakan improvisasi sendiri hehehe 😛
Begitulah penjelasannya, semoga bermanfaat 🙂