SQL Server Integration Services Menjalankan Extract Transform dan Load(ETL) dengan Slowly Changing Dimension

Dengan memulai SQL Server Integration Service maka kita harus sudah bisa mendeskripsikan proses business intelligence, kemudian mengerti mengenai data flow task dan pada saat ini akan mengerti bagaimana mengirimkan data kepada destinasi data.

ETL dimulai dengan Business intelligence, yang juga disebut dengan BI. BI adalah proses yang digunakan untuk mengestraksi knowledge dari informasi mentah. Servis ini sangat penting bagi kebanyakan organisasi. Dalam praktiknya informasi tersebut digunakan untuk berbagai macam seperti dari data penjualan, kita bisa melihat dari jumlah yang terjual maka kita tahu berapa banyak barang yang harus kita sediakan dalam gudang. Melalui penjualan dan media yang digunakan maka kita bisa menentukan media marketing mana yang paling efektif dan efisien.
BI digunakan untuk :
  1.  Mengambil data dari berbagai sumber yang berbeda.
  2.  Digunakan juga untuk menstandartkan data.
  3.  Mengakses informasi dengan cepat.
  4. Menyimpulkan teman dan menghasilkan laporan yang detil.
  5. Menganalisa trend
  6. Melakukan data mining dari data mentah yang digunakan.
ETL adalah proses yang sangat penting di Business Intelligence. Pertama dia menggambil data dari berbagai macam aplikasi seperti ERP, CRM, dan sistem lainnya. proses ETL mengumpulkan, menstadartkan dan mengirimkan ke datawarehouse. Data dari datawarehouse bisa digunakan untuk membuat report yang memampukan melihat kesimpulan data dan detail dari data. Datawarehouse ini akan digunakan untuk menjalankan OLAP(Online Analytical Processing) Data store yang digunakan untuk menanalisa tren, KPI dan lainnya. Untuk lebiih lanjut digunakan dalam data mining untuk mencari pattern dalam sebuah data dan memprediksi kejadian di masa depan dengan akurasi yang baik dari data tersebut.





Data Flow Task

Ketika kita mengimplementasikan ETL maka SSIS dapat melakukan ini dengan efisien. Tapi bukan control flow yang melakukan ETL dalam SSIS karena tidak ada fungsi khusus dalam control flow yang mengatur ETL, kita hanya bisa mensimulasikan dengan control flow. ETL ada melalui special task di dalam control flow dengan fitur data flow task. Task ini dimasukan dalam control flow sebagai bagian dari workflow yang lebih besar sama seperti task-task yang ada. Kita juga bisa menggunakan beberapa Data Flow task dalam 1 control flow dan tiap Data flow task mempunyai window nya masing-masing untuk mendesain. Di mana control flow ini melakukan proses ETL?? Sebenarnya kita bisa melihat bahwa Data flow memiliki 3 kategori yang sesuai dengan Extract Transform dan Load. Source category sesuai dengan kebutuhan utuk Extract dan bisa benar-benar digunakan untuk melakukan ekstrasi data. Kategori transform sama seperti proses transform dalam ETL. Destination Category sama dengan load. Sehingga data yang telah kita ambil dan ubah dimasukan ke dalam datawarehouse yang telah disediakan.

Data Source component telah kita pelajar di artikel sebelumnya. Sedangkan data destination component sama dengan data destination, bedanya data destination hanya bisa diisi data dan data destination lebih banyak format yang bisa digunakan daripada data source. Hasil dari data source ada yang spesifik dan ada yang format secara umum, sehingga bisa digunakan oleh tools lain. Sedangkan untuk pengerjaan yang paling berat ada pada transform yang ada dalam data flow. Transform mengambil input dari data source dan mengolahnya kemudian mengirimkan output ke data destination. Kita juga bisa memberikan beberapa transformasi sehingga sehingga sebuah output dapat menjadi input untuk di transformasi ke bentuk lain lagi. Meski begitu, hasil akhir tetap harus berakhir di data destination.

Sebelum masuk ke praktiknya perlu diketahui ada beberapa macam transformasi.
1. Blocking Transform
Memerlukan semua input sebelum diproses, setelah selesai memasukan semua input maka transformasi baru terjadi. Biasanya digunakan untuk melakukan sorting. Sehingga semua data benar-benar harus diambil terlebih dahulu(Contoh : Soft Transform)
2. Partially Blocking transform
Transform ini tidak memerlukan semua input untuk diload terlebih dahulu sebelum di transformasi akan tetapi hasil akan tidak akan dimasukan ke dalam destination hingga seluruh data yang dimiliki telah diproses.(Contoh Merge Transform yang mengambil dari 2 data source dan memasukan ke dalam 1 data destination)
3. Non- Blocking Transform
Transform ini memproses tiap barisnya tanpa menunggu semua telah selesai diproses. Ini adalah trasnformasi yang paling cepat.(Contoh Data conversion trasnform).

Untuk menjalankan ETL maka kita akan memasukan data flow task.


Masuk lah ke dalam data flow task kemudian koneksikan ke database yang ingin kamu olah. Dalam contoh ini saya akan menggunakan Database AdventureWorks. Buatlah koneksi, karena saya menggunakan SQL server maka saya menggunakan ADO.net untuk membangun koneksi menuju database.
Pertama pilihlah tab Data Flow yang ada di atas. Setelah itu ambillah ADO.net source dari toolbox. Lalu buat koneksi menuju database dengan cara klik kanan lalu edit, buat koneksi ke database local dan pilih tabel produk


kemudian tambahkan slowly changing dimension dari toolbox kemudian sambungkan ADO.net. Setelah itu berikan koneksi pada slowly changing dimension menuju ke database AdventureWorksDW. Jadi Source berasal dari adventureworks dan slowly changing dimension memiliki koneksi ke AdventureworksDW dan yang ada di slowly changing dimension mengacu pada DimProduct. Kemudian cari di kolom di bawah(dimension column) "product alternate key". Di kolom kirinya isikan product number lalu di sebelah kanan("Key Type") Pilih Business Key.
Kemudian pilih next maka kamu akan diberikan kolom untuk mengubah data yang kamu miliki. Sesuaikan dengan kebutuhan yang kamu miliki. Untuk contoh maka saya akan memberikan dimension columns 3, yakni Color dengan change type historical attribute, listprice dengan change type historical attribute, Size dengan change type changing attribute. Lalu pilih next dan pada checkbox changing attribute, berikan centang kemudian next dan gunakan form berikutnya untuk menentukan start dan end date column untuk menentukan record(radio button "Use start and end dates to identify current and expired records") yang telah expired kemudian gunakan variable to set date value menjadi system::Start Time. Lalu tekan next, dan saat kamu menyelesaikan wizard ini maka semua komponen yang dibutuhkan akan langsung disediakan oleh SSDT. Seperti gambar di bawah ini
Workflow akan dibuatkan otomatis oleh sistem dan insert destination pun sudah disetting agar langsung menuju datawarehouse dan SCD ini menyelesaikan masalah untuk SCD 1, SCD 2 dan SCD 3. Membuat perubahan di OLTP dan menjalankan package yang kita buat ini akan menempatkan data dengan benar di datawarehouse.

Note :
Bila terjadi error ada beberapa kemungkinan, yang pertama ada tabel yang harus diisi dan belum kita isi, dalam kasus adventure works buka insert destination, pilih mappings tambahkan name di input column dan koneksikan ke English productname
Kedua bisa terjadi karena destination mempunyai ukuran yang lebih kecil dari source. Misalkan destination tipe data nya small int sedangkan source tipe datanya big int.
Ketiga ada data di destination yang tidak boleh null sedangkan data yang kita pindahkan isinya null.

Terakhir mungkin ada yang protes karena datanya belum berpindah. Hal ini dikarenakan kita baru design dan belum di deploy. Bukankah akan sangat gawat kalau baru di tahap design bisa merubah data perusahaan. Jadi gunakan design untuk menentukan source, destination dan ETL yang ada, dan deploy package tersebut saat sudah selesai



Komentar

  1. Error di dimensiob process, connection cannot be made, server not running
    Itu solusinya gimna gan?

    BalasHapus

Posting Komentar