Slowly Changing Dimensions

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 🙂

Leave a comment