Tuesday, May 14, 2019

Meta data terdengar seperti sebuah konsep teknologi yang susah, tetapi hal ini terbalik dengan pemikiran tersebut. Metadata adalah sesuatu yang sangat simpel. Metadata adalah sebuah data yang menjelaskan mengenai datawarehouse. Berguna untuk membangun, mengatur dan menjaga datawarehouse.

Sehingga metadata dapat dikatakan mempunyai peran penting dalam penggunaan datawarehouse. Dalam praktinya metadata akan mencatat hal-hal seperti sumber data, pemilik data siapa, cara mengakses data tersebut seperti apa dan bahkan sampai kegunaan dari setiap kolom yang ada kemudian program yang digunakan apa dan fitur-fitur yang disediakan apa saja. Hal ini untuk memastikan tidak adanya redudansi seperti membuat sebuah program yang mengambil data dan karena tidak ada metadata developer tidak pernah tahu bahwa program itu sudah ada sehingga dibuatlah program yang sama. Saat pengambilan data maka data tersesebut akan terambil 2 kali dan ini bisa membuat hasil dari data tersebut bias ketika diproses. Berikutnya penggunaan metadata untuk penjelasan mengenai data yang dimiliki. Bagi orang IT yang mengerti database mereka secara tidak langsung akan mengerti bagaimana cara membaca data dalam database akan tetapi orang awam tidak boleh mengakses langsung ke dalam database. Kalau sudah seperti itu melihat data dengan bentuk

A40001  AX0001 1 300.000

juga tidak masuk akal bagi mereka, sehingga ketika konsultasi dengan metadata akan membuat orang IT mengerti cara menampilkan data sehingga user lebih mudah mengerti dengan bentuk sebagai berikut.

Model     : A40001
Sales ID  : AX0001
Quantity  : 1
Price       : 300.000

Sehingga metadata adalah sesuatu yang sangat penting bagi transformasi dari data menjadi sebuah informasi. Nantinya metadata juga akan menjawab hal-hal seperti table apa, key apa saja yang ada dalam datawarehouse, darimana sumber data, transformasi apa yang terjadi waktu dibersihkan(Proses ETL) dan seterusnya.





Metadata bisa dikategorikan menjadi 2, yakni business metadata dan juga tehnical metadata.

Tehnical Metadata

Tehnical metada adalah metadata yang digunakan oleh datawarehouse designer dan juga datawarehouse administrator. Bentuknya seperti DBMS yang digunakan, cara akses data, sumber data dan aturan-aturan dalam pengambilan data.

Business Metadata

Business Metadata adalah metadata yang digunakan oleh end user digunakan untuk mengerti informasi apa saja yang ada di dalam datawarehouse. Tampilan ke user ini biasanya berbeda dengan milik orang IT, ketika orang IT bisa melakukan semua dengan SQL Command maka user bisa tidak mengerti hal tersebut sehingga metadata business juga memberikan cara untuk menampilkan ke user dengan cara yang biasa mereka lihat seperti ditampilkan dalam bentuk excel. Termasuk cara membaca data tersebut sehingga user bisa mengambil informasi sebanyak mungkin dan bisa mengambil keputusan dengan tepat.

Metadata juga mencatat aplikasi yang digunakan untuk mengolah data, seperti data mining dan kegunaan data tersebut setelah dilakukan mining apa. Sehingga ketika ada orang yang mau menggunakan datawarehouse mereka dapat menggunakan metadata untuk mempelajari mengenai datawarehouse dan informasi apa yang dibutuhkan. Kemudian saat mereka ingin menambah fitur baru maka metadata dapat mencegah redudansi dan bisa menambahkan fitur yang ditambahkan ke dalam metadata bila belum pernah dibuat.  Selain itu juga mesti dilihat trend-trend baru dalam metadata seperti pengunaan video, gambar dan bentuk format lainnya. Untuk membangun metadata pastikan ada konsistensi dalam format sehingga orang tidak bingung dalam mengakses dan pastikan orang mengerti dalam membaca/menggunakan metadata.

Metadata sebenarnya juga mencatat aturan dalam pengaksesan database seperti username dan password dan siapa yang memegang username password tersebut. Tapi hal ini berupa rahasia dan hanya orang tertentu saja yang memilikinya, pastikan username dan password hanya tercatat siapa yang memilikinya. Pertama ini adalah masalah keamanan di dalam data. Kedua, masalah integritas dari data yang dimiliki. Jadi bila ada perubahan data yang tidak wajar kita bisa melacak dengan mudah.

Jadi hasil akhir dari metadata akan seperti user manual. Step-by-Step dari data mentah hingga jadi sebuah informasi. Berbentuk seperti artikel clustering ini atau menjalankan menggunakan ETL.

Thursday, April 11, 2019

Untuk melakukan clustering dalam SQL Server Itegration Services, maka siapkan dahulu database AdventureWorksDW2012, karena saya akn menggunakan database tersebut. Bila kamu punya database sendiri silahkan gunakan. Karna kita akanbelajar menghasilkan cluster dan cara membaca cluster tersebut. Clustering adalah salah satu teknik data mining yang digunakan untuk mengkelompokan data bedasarkan kriteria tertentu yang mirip. Contoh customer ingin kita kelompokan bedasarkan jumlah pendapatan maka customer tersebut akan dianalisa dan dikelompokan sesuai dengan kemiripan data mereka. Sehingga kita bisa melihat kelompok customer dengan pendapatan tertinggi, bisa memiliki ciri-ciri apa yang sama, bisa jadi kepemilikan mobil dan rumah menjadi ciri yang membuat customer dalam kelompok yang sama. Kita tidak pernah tahu apabila semuanya dilakukan secara manual, mengingat jumlah data yang sangat banyak. Lalu database adventure work jangan dianggap sebagai data yang besar. Adventure Works hanyalah data contoh dan ukurannya sangat kecil.

Contoh penggunaannya adalah setelah dilakukan clustering maka kita bisa menentukan barang apa yang akan kita jual ke customer tersebut atau melihat customer yang berada dalam 1 cluster memiliki persamaan apa dalam membeli barang. Sehingga kita bisa membuatkan barang custom bagi cluster tersebut. Atau kita balik pola pikirnya, dari data yang tercluster 85%, ditemukan bila orang tersebut mempunyai mobil maka tempat tinggal dan tempat kerja berjarak lebih dari 8KM. Maka kita bisa cari 15% sisanya dan memberikan penawaran mereka mengenai mobil yan kita miliki. Semua ini sangat bergantung pada data yang kamu miliki. Sehingga sangat diperlukan seorang user/pemilik/pengguna data tersebut terlibat dalam pembangunan OLAP. Kenapa user/pemilik/pengguna data dilibatkan karena mereka yang menggunakan data tersebut dan mereka yang paling kenal dengan data mereka.

Contoh lain adalah hasil clustering ini digunakan untuk membentuk profil customer dan kita bisa lihat bahwa customer yang dalam 1 cluster memiliki pola belanja seperti apa, atau barang apa yang akan mereka beli. Itulah gunanya cluster. Sekarang kita akan coba mempraktekan clustering menggunakan SQL Server Data tools. SQL Server Data tools bisa di-install dengan menggunakan SQL Server Developer. Jangan menggunakan SQL Server Express, atau merasa memiliki SQL Server Developer karena sudah dapat menggunakan SQL Server Management Studio






Pertama buka SQL Server Data Tools, buat solution baru dengan nama Clustering, untuk projectnya sendiri gunakan Analysis Services Multidimensional and Data Mining Project Template.
Pada bagian kanan ada solution explorer, klik kanan di sana dan pilih New Data Source Option, pada welcome page click next dan kemudian kita mendefinisikan koneksi yang akan kita gunakan. Sekali lagi di sini jangan menggunakan koneksi yang ada di list, buatlah koneksi baru. Pada Connection Manager Pilih yang Native OLE DBSQL Server Native Client 11.0 Kemudian pilihlah server name yang kamu gunakan. Di sini jangan menggunakan Windows Authentication, gunakan SQL Server Authentication dan masukan user name password dari akun SQL yang kamu gunakan, Akun yang kamu gunakan sebaiknnya memiliki permission untuk membaca dan menulis ke dalam database Adventure Works DW 2012. kemudian pilih database, lakukan test connection lalu tekan ok bila koneksi sudah berhasil. Untuk nama biarkan default saja.

Untuk yang lupa password SQL Server dapat menggunakan cara seperti berikut
Buka SQL server Management--> log in dengan menggunakan windows aunthetication
Masuk ke object explorer-->Security folder-->login folder
Klik kanan account sa atau akun yang dibuat saat instalasi SQL Server -->properties
Ketikan SQL Password yang baru dan lakukan konfirmasi.

Gunakan nama akun dan password yang kamu baru saja ganti di dalam membangun koneksi.

Setelah selesai buka solution explorer dan klik kanan pada data source views lalu pilih new data source views. Pada halaman welcome wizard klik next, Pilih koneksi yang baru saja kamu buat dan klik next. Kita akan mencoba mengkelompokan customer yang kita miliki, jadi kita akan menggunakan tabel customer, gunakan tabel dimCustomer. Klik next lalu berikan nama pada view yang baru saja dibuat, saya akan menggunakan nama MineCustomer dan klik finish.Akan lebih baik bila kamu masuk ke dalam SQL server Management studio dan melihat terlebih dahulu struktur data dari dimCustomer dan mempelajari data tersebut.

Setelah view berhasil dibuat maka kita akan kembali membuka solution explorer dan melihat folder mining structure, klik kanan di sana dan buat new mining structure. Pada halaman welcome klik next dan kemudian pilih radio button from existing relational database or data warehouse, klik next dan pilih create mining structure with a mining model, pada combobox yang ada pilih microsoft clustering lalu tekan next. Kemudian pilih view datasource yang baru saja kita buat dengan nama Mine Customer, tekan next lalu akan ada dua checkbox pastikan yang tercentang hanya checkbox case. Pada halaman berikutnya kita akan melihat kolom yang ada dalam dim customer, pastikan CustomerKey memiliki checkbox key yang tercentang. Lalu untuk saat ini kita coba kelompokan pendapatan yang mereka miliki pertahun(YearlyIncome sebagai prediction) bedasarkan input CommuteDistance, HouseOwnerFlag,NumberCarsOwned(ketiga kolom ini harus memiliki check pada checkbox input) lalu klik next. Pastikan tipe data yang dimiliki benar, kalau sudah tekan finish dan save solution yang kamu buat. Kemudian pada solution explorer yang di sebelah kanan, cari nama project klik kanan pilih deploy.

Nanti akan muncul pertanyaan "kenapa harus memasukan prediction?"  Pertanyaan ini adalah hal yang wajar karena kita melakukan clustering. Sehingga secara logika hanya perlu mengkelompokan tidak perlu memberikan prediksi. Maksudnya prediction adalah dicluster bedasarkan apa. Contoh yearly income, maka data akan dicluster bedasarkan income yang ada. Lalu apa kesamaan apa yang ingin dicari dari yearly income tersebut. itulah gunanya atribut yang ada, dalam kasus ini kita mencari, kepemilikan rumah, jarak transportasi, jumlah mobil yang dimiliki. Sedangkan bila prediction tidak dimasukan maka pada hasil akhir akan terjadi error. yang terjadi di tempat saya adalah tidak memberikan hasil apapun.

Sekarang kita akan melihat hasil dari clustering yang dilakukan. Pada layar harusnya akan keluar beberapa tab.
Pilih tab mining model viewer maka kamu akan melihat cluster yang terbentuk beserta kedekatan antar cluster.
Kita lihat di sini ada beberapa cluster dan kedekatan(garis) antar cluster, default awal dari cluster ini adalah jumlah data di dalam cluster tersebut. Kalau ingin mengubah coba lihat di shading variable. Dari sana bisa kamu ganti sesuai dengan kebutuhan yang kamu perlukan, misal perlu melihat cluster jumlah mobil yang dimiliki maka gantilah di shading variable ini. Saat kamu telah mengganti shading variable maka state yang ada di bawahnya akan berubah dan kamu bisa menggunakan itu untuk melihat sesuai dengan pembagian yang kamu miliki. Contoh kamu ingin mencari customer mana yang terkelompok dengan bedasarkan jumlah mobil maka ganti shading variable dan kamu akan melihat isi dari kolom itu di state, dan state itu bedasarkan data yang ada dalam kolom numbersOfCarOwned.


  Ketika shading variable saya ganti dan state saya ganti menjadi low. Maka kita akan melihat bahwa cluster 1, cluster 3, cluster 4, cluster adalah kelompok orang yang memiliki jumlah mobil antara 0-1. Kalau kamu ganti shading variable maka kamu bisa melihat cluster dengan variable yang lain dan akan ada kedekatan dan kepadatan cluster yang berbeda. Hal ini dikarenakan variable yang kamu pilih dan state yang ada. Tergantung dengan analisa yang ingin kamu lakukan. Misal ingin mentarget customer dengan jumlah mobil 1-3 maka kita bisa melihat pada cluster 2, cluster 3,cluster 4, cluster 5, cluster 6, cluster 9. Bila ingin target customer yang lain gantilah shading variablenya dan lihatlah hasilnya.

Hasil clusternya berubah, dan kita bisa melihat hubungan antar cluster. Jadi dari cluster 6 adalah orang-orang yang memiliki rumah dan mobil antara 1-3. Kalau ingin melihat secara keseluruhan ganti tab menjadi cluster profile maka kamu akan melihat kesimpulan dari data yang tercluster beserta atribut mereka.

Kita ambil contoh cluster 5, cara bacanya adalah ada 2317 data dan semua orang ini tidak memiliki rumah(0), jumlah mobil mereka semua ada 2, dan pendapata mereka diantara 10.000,00 hingga 57.305,78. Begitu pula dengan cluster lainnya. Jika ingin mencari customer dengan pendapatan tertinggi maka kita dapat melihat pada cluster 8. Sebagian orang pada cluster 8 belum memiliki rumah, sehingga bila mau jual rumah yang mewah. Targetkan pada customer pada di cluster 8 yang belum memiliki rumah. Kalau jumlah data pada cluster 8 kurang memenuhi maka kita bisa menggunakan cluster yang memiliki kedekatan dengan cluster 8 dan dalam kasus kita adalah cluster 9 dan 10, saya melihat ini dari ketebalan garis yang terbentuk pada house owner flag di gambar sebelumnya.



Bagaimana data ini bisa digunakan, tentu saja untuk keperluan macam-macam Setelah clustering maka kita bisa melihat customer dengan profile yang mirip. Sehingga penawaran akan barang yang dimiliki bisa berbeda untuk setiap customer. Sekali lagi, masalah bagaimana data bisa digunakan sangat bergantung pada orang yang memiliki dan menggunakan data ini pada keseharian mereka. Karena merekalah yang memiliki dan memiliki pengalaman pada bidang bisnis yang menggunakan data tersebut.

Thursday, April 4, 2019

Sama seperti artikel sebelumnya, untuk menjalankan decision tree kita akan menggunakan Adventure Works 2012. Sebelumnya kita coba mengenal apa itu decision tree.

Decision tree adalah salah satu tools yang digunakan untuk membantu dalam pengambilan keputusan dengan model seperti pohon yang akan menampilkan keputusan serta konsekuensinya termasuk kemungkinan terjadinya. Dalam kasus kita, kita melakukan yang namanya data mining. Jadi kemungkinan terjadi pembelian diprediksi dari data yang kita miliki. Inilah yang kita sebut dengan data mining. Sehingga definisi decision tree dengan apa yang akan kita lakukan akan berbeda sedikit. Tapi cara ini juga digunakan untuk meningkatkan efisiensi. Misal dari hasil data mining semua yang membeli mobil adalah pria dengan 2 anak, maka fokus marketing akan diarahkan ke sana saja.





Pertama buka SQL Server Data Tools, buat solution baru dengan nama Decision Tree, untuk projectnya sendiri gunakan Analysis Services Multidimensional and Data Mining Project Template.

Pada bagian kanan ada solution explorer, klik kanan di sana dan pilih New Data Source Option, pada welcome page click next dan kemudian kita mendefinisikan koneksi yang akan kita gunakan. Sekali lagi di sini jangan menggunakan koneksi yang ada di list, buatlah koneksi baru. Pada Connection Manager Pilih yang Native OLE DBSQL Server Native Client 11.0 Kemudian pilihlah server name yang kamu gunakan. Di sini jangan menggunakan Windows Authentication, gunakan SQL Server Authentication dan masukan user name password dari akun SQL yang kamu gunakan, Akun yang kamu gunakan sebaiknnya memiliki permission untuk membaca dan menulis ke dalam database Adventure Works DW 2012. kemudian pilih database, lakukan test connection lalu tekan ok bila koneksi sudah berhasil. Untuk nama biarkan default saja.

Berikutnya pada solution explorer klik kanan di data source view dan pilih buat data source baru(New Data Source View). Pada welcome page klik next. Lalu pilih data source yang telah kamu buat.dan tekan next. Dalam select table dan view pilih vTargetMail lalu tekan next.

vTargetMail adalah view bawaan dari AdventureWorksDW2012 yang digunakan untuk mengumpulkan informasi dari orang-orang yang membeli sebuah sepeda. Sehingga kita tidak perlu memikirkan query yang harus dibentuk. Apabila kamu mau mengimplementasikan dalam data yang kamu miliki. Pastikan kamu memiliki hal yang sama dengan struktur view ini. vTargetMail menekankan pada orang yang membeli sepeda, dan data mereka seperti gender, jumlah anak, jarak transportasi atau faktor yang dikira mempengaruhi seseorang dalam membeli sepeda.

Apabila sudah selesai klik kanan mining structure, pilih new mining structure, klik next pada halaman welcome. Kemudian di halaman berikutnya pilih from relational database or data warehouse kalau sudah klik next dan akan ada halaman berikutnya yang meminta kita memilih mining structure. Pilih Create mining structure with a mining model dan pada combobox pilih microsoft decision trees dan  klik next. Setelah itu pilih sumber data yang kamu buat, dalam hal ini Adventure Works DW 2012, klik next. Halaman berikutnya kita pilih input tables pilih vTargetMail dan centang case(Ini adalah default utama). Pada halaman berikutnya akan ditampilkan list kolom yang ada dalam vTargetMail.

Di sini kita memilih mana yang akan menjadi kolom yang akan kita prediksi. Untuk pertama, pilih customer key sebagai key column(ini default awal), kemudian bike buyer sebagai predictable column, kemudian pilih commutedistance, englisheducation, englishoccupation, gender, houseownerflag, maritalstatus, NumberCarsOwned, NumberChildrenAtHome, Region and TotalChildren sebagai kolom input(input columns) lalu pilih next dan ubah semua content type menjadi discrete. Samakan hasil seperti gambar berikut. Sekali lagi karena decision tree digunakan untuk memprediksi discrete dan continuous variables. Di mana discrete variable adalah sebuah variable yang memiliki value lebih dari 2 batasan, contohnya adalah 1,2,3 dan 4(ini adalah contoh discrete variable) karena isinya tidak hanya 1 atau 2. Sedangkan continous berlawanan dengan discrete variable dalam hal value yang dimiliki karena continuous memiliki jumlah value yang tak terbatas(Infinite), bila kamu membuka data yang dimiliki, semua data yang digunakan lebih dari 2 pilihan dan dapat dihitung. Sehingga semuanya masuk ke dalam kategori variable discrete.

Setelah itu klik next, di halaman berikutnya kita aka  menspesifikkan persentase data untuk melakukan testing. Karena kita menggunakan decision tree maka kita tidak perlu testing data, sehingga ganti angkanya menjadi 0%, setelah itu klik next Masukan TM sebagai nama mining structure dan TMDT sebagai nama model. Setelah itu klik finish dan save solution yang kamu buat. Kemudian pada solution explorer yang di sebelah kanan, cari nama project klik kanan pilih deploy.

Kalau sudah selesai maka close deployment progress windows lalu masuklah ke dalam data mining designer dan klick tab Mining model viewer maka akan ditampilkan decision tree dalam bentuk model yang otomatis terbuat.



Cara membacanya cukup mudah semakin gelap warnanya maka dia adalah orang yang membeli sepeda. di sisi kiri paling gelap, berarti semua yang beli sepeda expand berikutnya dapat kita lihat bahwa region north america jauh lebih banyak membeli sepeda daripada Europe. begitu masuk ke tahap 3 akan ada perbedaan yang signifikan. Misalh dalam north america menggunakan commute distance dan dalam europe menggunakan total children, ini adalah penentu yang paling dekat dengan alasan orang tersebut dalam sebuah region membeli sepeda. Karena perbedaan warna tidak mencolok bisa disimpulkan bahwa dari tahap ke 3 tidak memberikan pengaruh yang terlalu besar. 

Dari data ini dapat ditarik kesimpulan bermacam-macam. Ini sangat tergantung pengalaman dan karakteristik dari data tersebut. Misal dengan melihat bahwa pembeli sepeda lebih banyak di North america maka seseorang bisa mengambil kesimpulan untuk meningkatkan stok di amerika, bisa juga turunkan stok, karena pengguna sepeda sudah banyak. Atau kesimpulan yang lain seperti tingkatkan marketing di region europe terutama dengan target pasar keluarga, karena yang mempengaruhi europe adalah jumlah anak, sedangkan north amerika akan melakukan marketing dengan pendekatan pada jarak trasnportasi umum(Commute distance) yang ada.





Sehingga sekali lagi saya tekankan dalam melakukan Data Warehousing, menggunakan SSIS, dan melakukan mining pada data diperlukan pemilik data tersebut agar kita bisa memaksimalkan penggunaan data dan bisa mengerti dengan jelas kegunaan data. Berhati-hatilah dengan project yang tidak memiliki tujuan yang jelas. Ketika tujuan tidak jelas atau data tidak jelas maka bisa jadi apa yang kamu kerjakan bukan sesuatu yang bisa meningkatkan kinerja perusahaan atau sesuatu yang berguna bagi perusahaan. Kenapa pemilik data diikutkan, hal ini adalah karena mereka yang menggunakan data tersebut dan mereka yang paling kenal dengan data mereka.

Monday, March 25, 2019

Business Inteligence

Business Inteligence adalah proses untuk mengambil pengetahuan(knowledge) dari data mentah. Juga perlu ditampilkan dalam bentuk yang mudah dipahami user. Ini adalah hal yang penting dalam organisasi. Percuma sebuah data ditampilkan dalam bentuk mentah atau dalam bentuk yang susah dipahami oleh user.
Dalam Business inteligence perlu mengetahui seluruh data yang dimiliki, dalam artian bila cuma memiliki data pusat tanpa data dari cabang maka data tersebut bisa menghasilkan informasi yang menyimpang/tidak akurat.
Jadi Business Inteligence memperlukan syarat sebagai berikut agar bisa disebut Business Inteligence
  1. Mengumpulkan data dari beberapa sumber
  2. Melakukan standarisasi data, untuk meningkatkan kualitas data
  3. Data bisa diakses dengan cepat.
  4. Memberikan kesimpulan dari data(Informasi) dan bisa memberikan detil dari data tersebut
  5. Menganalisa trend dan dapat melakukan data mining(Mencari pattern dan mengkonfirmasi pattern tersebut)

 Menjalankan Business Inteligence dalam SSIS

Bukalah SQL Server Data tools. Pilih File--> New Project. Kemudian pilih Business Inteligence-->Analysis Service-->Analysis Service Tabular Project. Berikan nama file sesuai dengan yang kamu inginkan

Pilih menu model di atas lalu pilih import from data source--> Pilih Microsoft SQL Server --> Beri Nama koneksi dan pilih server yang akan digunakan kemudian pilih database AdventureWorksDW2012 lalu pilih next dan pilih service account. Kemudian pilih yang write query.

Query ini tergantung dengan kebutuhan yang akan kamu analisa. Pada saat ini akan kita menganalisa penjualan dari penjualan di internet dengan query sebagai berikut

Select p.englishproductname, d.EnglishMonthName, d.CalendarYear,f.OrderQuantity, f.unitprice, f.extendedamount, f.totalproductCost
From DimProduct p, FactInternetSales f, DimDate D
Where f.Productkey=p.productkey and f.orderDatekey=d.datekey

Pastikan menggunakan Database adventureworksDW2012. Jangan menggunakan adventure works 2012 karena struktur databasenya berbeda. Sehingga query tersebut tidak mungkin jalan pada database adventure works 2012. Apabila query error karena tidak bisa akses database lebih baik masukan username password untuk SQL server saat melakukan table import(pada saat memberikan nama koneksi).

Untuk yang lupa password SQL Server dapat menggunakan cara seperti berikut
Buka SQL server Management--> log in dengan menggunakan windows aunthetication
Masuk ke object explorer-->Security folder-->login folder
Klik kanan account sa atau akun yang dibuat saat instalasi SQL Server -->properties
Ketikan SQL Password yang baru dan lakukan konfirmasi.





Apabila semua sudah beres, maka akan keluar seperti gambar berikut


Perhatikan cell kosong yang ada id bawah, di sana kamu dapat memberikan fungsi matematika di sana yang sama seperti excel. Tetapi format penulisannya sedikit berbeda. Formatnya adalah sebagai berikut
Nama:=fungsi([Namatabel])

Bila dituliskan dengan fungsi yang ada
Sum of OrderQuantity:=SUM([OrderQuantity])

pada saat memilih sebuah kolom pastikan kamu memberikan kurung kotak [ ]
untuk saat ini taruh sum order quantity di kolom kosong di bawah order quantity

Bila sudah selesai, kembali ke menu di atas pilih model dan pilih analyze with excel.
Pilih current windows user lalu tekan ok. Setelah itu akan ada excel yang terbuka dengan pivot table yang siap digunakan

Klik pada calendaryear kemudian pada english productname lalu klik pada sum of orderquantity
Di sisi kiri kita bisa menekan tombol dengan simbol minus maka akan dapat melihat penjualan selama setiap tahun. perhatikan di sisi kanan urutan dari rows sangat penting. coba kamu tukar calendar year dengan englishproduct name maka tampilan akan berubah bedasarkan nama produk bukan bedasarkan tahun.

Untuk menambahkan kolom maka kita harus kembali ke SQL Server Data tools dan menambahkan di sana lalu menampilkan kembali di excel. Hal lain yang mungkin ditambahkan adalah jumlah biaya uang dikeluarkan dengan rumus order quantity*totalproductcost untuk menghitung biaya dari barang yang terjual dan orderquantity*unitprice untuk menghitung nilai dari barang yang terjual. Dari sana kita bisa tahu total nilai keuntungan dalam penjualan melalui internet sales. 

Gunakan cara yang sama, pertama buatlah sum dari unitprice dan totalproductcost kemudian kalikan sum of order quantity dan sum dari total product cost untuk memperoleh biaya setiap barang. Kmuedian kalikan order quantity dengan unit price untuk memperoleh hasil penjualan jalankan lalu susun kembali di excel. Maka kita akan memperoleh hasil seperti gambar berikut.

Dari gambar tersebut kita bisa melihat total dari biaya dan dari penjualan sehingga kita bisa melihat keuntung dari tahun ke tahun dan total keuntungan setiap tahun. Kita bisa melakukan drilldown untuk melihat barang yan paling banyak terjual sehingga bisa meningkatkan produksi untuk barang tersebut dan menurunkan produksi untuk barang yang kurang laku, tambahkan bulan di rows maka kita bisa menganalisa barang tersebut terjual paling banyak pada bulan apa sehingga kita bisa merencanakan produksi dengan baik.

Informasi keuntungan ini sangat membantu tapi jangan salah, kita belum menghitung barang yang telah di produksi dan belum terjual, lalu belum juga biaya seperti gaji pegawai dan lain-lain. Untuk memperoleh semua itu akan membutuhkan query yang lebih komplek. Semoga melalui artikel ini kamu dapat mengerti gambaran dalam menggunakan SQL Server Integration Service dan menampilkan dala bentuk excel sehingga informasi dapat tersampaikan dengan cepat.




Monday, March 18, 2019

Kita akan membahas mengenai fuzzy lookup transform, fuzzy lookup digunakan untuk sebuah kata yang berbeda, semisal kata merah dalam database utama. Dalam database lain mungkin penulisannya adalah "Merah" atau bahkan "mrh" atau apapun istilah yang digunakan untuk membentuk kata merah. Hal ini sering terjadi dalam berbagai macam database yang ada dalam perusahaan atau bahkan berada di cabang lain. Sehingga fuzzy lookup bisa digunakan untuk mengatasi perbedaan istilah ini. Fuzzy lookup tidak mencari exact match atau yang benar-benar sama tapi mencari yang mendekati, sehingga ada 2 properti yang harus kita kenali
  • Similarity : Kedekatan text yang dicari dengan referensi text yang ada
  • Confidence : Kualitas dari kedekatan(Seberapa dekat kata yang dicari dengan referensi)
Confidence yang tinggi berarti SSIS semakin yakin bahwa kata itu mirip semakin rendah confidence maka sebaliknya.






Semisal penomoran barang seperti "Barang 001" , dengan referensi yang ada "Barang 002" dan "Barang 003" meski ini adalah barang yang berbeda maka akan memunculkan hasil dengan similarity yang tinggi(High) dikarenakan banyak huruf dan angka yang sama dalam ketiga kata yang digunakan. Tetapi confidence yang dimiliki akan rendah(Low). Karena memang benar meski huruf dan angka ada yang sama tetapi 3 kata yang digunakan merepresentasikan barang yang berbeda. 
Contoh satu lagi adalah "Jalan" dan "Jln". Kedua kata ini akan menghasilkan sebuah similarity yang rendah(low) akan tetapi confidence yang dimiliki akan tinggi(High).
Fuzzy look up akan memberikan kedua hal ini selalu. Sekarang akan kita coba mempraktekan dengan menggunakan SSDT.

Jalankan SSDT kemudian ambil buat koneksi ADO.net  dengan sumber dari AdventureWorksLT2012 dan masukan fuzzy lookup dan tambahkan 1 flat file destination.Sambungkan ADO.net Source dengan fuzzy lookup lalu sambungkan fuzzy lookup pada flat file destination. Kamu akan memiliki data flow seperti berikut.
Tabel yang saya gunakan adalah tabel produk pada ADO NET Source, kemudian klik pada fuzzy lookup, pilih koneksi dan pilih tabel salesLT.product. Setelah selesai lihat tab yang ada di fuzzy lookup transform editor. Klik yang ada kemudian pilih semua garis dan hapus semua kemudian pasangkan kolom "Name" dan "ProductNumber", Caranya klik dari cell "Name" di kiri lalu drag ke cell "Name" kanan. Bila berhasil akan muncul garis titik-titik. Lakukan hal yang sama dengan product number. untuk saat ini akan fokus pada "Name" shingga jangan lupa meberikan centang pada cell name di kanan.


Layarmu harusnya memiliki gambaran seperti ini. Jangan di "OK" terlebih dahulu tetapi pilih tab advanced dan ubah similarity treshold menjadi 0.25. Ingat Similarity adalah kedekatan text yang dicari dengan referensi text yang ada 0 untuk tidak mirip sama sekali dan 1 untuk yang mirip total. Batasan 0.2 berarti di bila nilai kemiripan di bawah 0.2 maka tidak akan dianggap.

Berikutnya kita akan mengurus flat file destination. Sambungkan fuzzy lookup dengan flat file destination lalu double klik pada flat file destination, tekan mapping dan scroll kedua tabel yang muncul ke bawah pastikan kolom "Name (1)","Confidence", "Similarity", "_Similarity_Name",   "_Similarity_Product" yang di kiri dan di kanan terhubung. Tujuannya untuk menampilkan hasil nya di dalam flat file destination. Billa sudah kembali ke connection manager dan tekan update, lalu ubah tempat penyimpanan data agar mudah kamu temukan.

Perhatikan gambar di atas, Pada 317, LL Crankarm memiliki kesamaan dengan LL Crankset. Dengan tingkat kemiripan yang ada di samping. dimulai dengan similarity, confidence, similarity name dan similarity product. Sehingga 0.26735252 adalah tingkat similarity mengartikan kemiripan kedua barang ini hanya 25% sedangkan confidence 0.28728274 yang berarti keyakinan bahwa kedua benda ini mirip hanya 28% dan untuk similarity name 0.75413382 yang menandakan 75% nama product ini mirip. hal ini dapat kita lihat dari nama.

Mengenai penggunaan dalam contoh saya tidak tahu seberapa mirip. karena saya tidak mengenal semua data yang ada dalam database adventure works. Inilah sebab mengapa user perlu dilibatkan dalam membangun datawarehouse. Karena user yang menggunakan data dan mereka yang mengerti data.



Monday, March 4, 2019

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.



Wednesday, February 6, 2019

Control Flow adalah workflow utama dalam SSIS yang akan menjalankan operasi di dalam package yang akan kita bentuk. Singkatnya semua yang kita inginkan di jalankan di Control Flow. Sebelum menjalankan, pastikan kamu sudah membaca dan menjalankan persiapan yang diperlukan. Dalam kasus yang akan di bahas adalah memasukan database ke SQL server dan membuat koneksi ke SQL Server dari SSDT. Kemudian setiap package hanya boleh memiliki sebuah control flow yang mana juga bisa diisi dengan banyak operasi. Istilah-istilah ini mungkin terdengar asing tapi nanti kita akan terbiasa dengan istilah-istilah yang digunakan.





Untuk langsung membuat operasi yang diinginkan maka lihatlah dalam SSDT dan ambilah execute SQL task dalam toolbox yang ada pada sebelah kiri SSDT.
lakukan dobel klik pada gambar execute SQL Task di dalam control flow lalu koneksikan SQL task ini dengan koneksi yang telah kamu buat sebelumnya. Pastikan kamu melakukan koneksi ke dalam adventure works. Seperti gambar di bawah koneksi pada adventure works tidak ada, hanya ada yang menuju ke dalam adventureworksDW jadi buatlah koneksi baru

Lalu di bawah pilihan koneksi ada SQL source type dan SQL statement, untuk source type biarkan dalam pilihan Direct input sedangkan SQL statement akan kita berikan. Lakukan double click pada SQL statement. Untuk saat ini coba masukan 

"select top 10 c.customerID,p.FirstName,p.LastName,e.emailaddress from sales.customer c inner join person.person p on c.personID=p.BusinessEntityID
Inner Join person.emailaddress e on p.businessentityID=e.businessEntityID

Setelah selesai tekan parse Query untuk memastikan tidak ada kesalahan dalam SQL Query yang diinputkan. Lalu pada bagian result set ganti menjadi "Full Result Set" Lalu perhatikan pada gambar di bagian kiri ada result set klik lalu tekan add berikan nama pada result name lalu ubah variable name yang ada dengan memberikan variable baru.


Ubah setting variable seperti yang ada di gambar lalu tekan ok dan kemudian tekan ok lagi. Kmeudian jalankan dengan menekan tombol F5, bila ada gambar centang hijau maka packagae mu sudah benar dan bisa dijalankan akan tetapi bila tanda silang merah berarti ada kesalahan. Coba perhatikan query yang kamu buat dan koneksi ke database, pastikan kamu koneksi ke adventureworks2012.

Ini untuk eksekusi task yang dasar, kemudian kita akan coba masuk ke dalam task berikutnya. Untuk berikutnya tambahkan "foreach loop container" ambil dari toolbox di dalam group container kemudian masukan send mail task di dalam container tersebut, send mail task ada pada group common.  pastikan gambar akhir yang ada dalam SSDT yang kamu miliki seperti gambar berikut.

Kemudian double click di foreach container, setelah keluar windows baru pilihlah yang collection. Di sini kita akan menghubungkan antara SQL task yang kita buat dengan pengiriman email. Sehingga di semua data customer yang ditarik dengan query yang kita buat akan dikirimi email. Ubah setting di collection menjadi seperti gambar berikut. Ada 2 hal yang berubah dari defaul awal yakni Enumerator dan ADO object source variable. Sesuaikan seperti gambar berikut kemudian jalankan perntah run/ tekan F5
setelah itu double click pada send mail task dan berikan setting SMTP yang kamu miliki. SMTP di tiap tempat berbeda, perhatikan juga saat dijalankan error akan ada beberapa pennyebab yakni firewall, antivirus dan juga SMTP connection local yang kamu miliki.

Thursday, January 31, 2019


Sebelum memulai SSIS dengan SQL server pastikan sudah membaca artikel sebelumnya. Klik disini. Saat menjalankan aplikasi jangan hanya membuka sql server. Dalam kumpulan program juga akan terinstal SQL Server Data Tools.
Sebagai dasarnya perlu diketahui bahwa SSIS project akan terdiri dari 4 hal
  1. SSIS Package : Tempat pekerjaan kita dilakukan
  2. Connection Manager : mengatur koneksi dari data source yang dimiliki
  3. Miscellanous Items : Barang/file eksternal yang mungkin diperluakan dalam mengunakan SSIS
  4. Project Parameter : mendefinisikan beberapa nilai yang bisa diganti atau di patenkan meski lingkungan eksekusi program berubah
 SSIS Project adalah hal yang memayungi ke-4 hal ini. Kemudian hasil akhir akan disimpan dalam bentuk .XML dan DTSX. Jadi jangan hapus kedua hal ini. Setiap aksi dalam SSIS akan disebut dengan istilah "Task". Kemudian versi terbaru dari SSIS tidak akan bisa di buka di versi yang lebih lama. Kita bisa upgrade tetapi tidak bisa downgrade. Jadi hati-hati sekali saat sudah melakukan upgrade dan lakukan backup sebelum mengupgrade sebuah DTSX.





Saat menjalankan SQL Server Data Tools dan membuat new project pilihlah Integration Service. Coba perhatikan gambar berikut supaya lebih jelas.
Berikan nama terhadap project SSIS yang dibuat dan kita akan mulai memasukan task yang ada.

Langkah pertama dalam project ini adalah membuat koneksi, jadi kita akan melihat dalam solution explorer yang ada di kanan SSDT dan menambahkan connection manager baru dengan klik kanan di connection manager kemudian add new connection saat ada pilihan koneksi gunakan ADO.net yang ada dalam service provider karena kita akan memakai SQL server, bila database yang digunakan lain maka koneksi akan memilih yang lain. untuk posisi connection manager yang lebih jelas dapat dilihat pada gambar berikut.

 Setelah melakukan koneksi ke localhost(ketik tanda . [titik] di server name agar koneksi otomatis ke localhost). lalu pilih database yang akan kamu tuju. Dalam contoh ini saya akan memilih dari database adventureworksDW2012. Bila berhasil maka akan muncul data connection d bawah connection manager. Bila tidak berhasil coba cek kembali status server, cek kembali tipe koneksi yang kamu gunakan, cek kembali posisi database.

Berikutnya lihat tab yang ada di dalam package, di tab tersebut ada pilihan control flow, data flow, parameter dst. Pilihlah Data flow dan masukan ADO.net dari toolbox.


Klik dan drag ke data flow task kemudian dobel klik. Pada saat kamu sudah membentuk koneksi dengan ADO.net maka di dalam pilihan akan sudah ada koneksi yang kamu bentuk. Sisanya adalah kamu memilih table atau view yang akan kamu gunakan.


Saya menggunakan table product, setelah selesai klik ok. Maka koneksi dengan sumber data telah berhasil kamu buat.

Pada kenyataan dalam sebuah perusahaan bisa memiliki berbagai macam sumber database sehingga mungkin ada baiknya membiasakan dengan berbagai macam sumber database yang ada dan tujuan database. Kemudian tujuan akhir bukan untuk database, bisa jadi digunakan untuk data mining atau digunakan untuk dibawa dalam bentuk yang lebih mobile seperti excel. Semua dilihat bedasarkan fungsi dari OLAP yang ada.



Thursday, January 17, 2019


Untuk menggunakan SQL server integration service maka kita harus menggunakan instalasi SQL server untuk developer. Saat melakukan instalasi pastikan instalasi seluruhnya jangan hanya partial atau untuk database management saja. Saya menggunakan Instalasi SQL server developer edition ukuran instalasinya sekitar 3.8 GB jadikan itu sebagai acuan untuk mencari instalasi. Karena banyak yang melakukan instalasi tetapi hanya untuk management systemnya saja.



Kedua kita akan menggunakan beberapa contoh datawarehouse, database menggunakan adventure works. Silahkan klik di sini. Kemudian kalau data yang diperoleh adalah .mdf dan ldf maka yang harus dilakukan adalah mencopy kedua file tersebut ke tempat SQL server terinstall dan masukan ke dalam folder data. Contoh di tempat saya C:\Program Files\Microsoft SQL Server\MSSQL11.USER\MSSQL\DATA.  Copykan kedua file itu ke sana dan masuklah ke SQL server dan open.


Kalau mendapatkan tipe data .BAK maka yang kamu lakukan adalah membuka SQL server. BAK adalah file SQL yang telah di back-up sehingga yang harus dilakukan adalah melakukan restore terhadap data tersebut. Klik kanan pada tulisan database lalu pillih restore database.


Setelah dipilih restore database maka akan keluar sebuah pilihan untuk pencarian sumber data back-up atau dalam kasus ini file dengan tipe BAK, ubah source dari database menjadi device dan klik browse(button dengan tiga titik  . . . )
Saran sebaiknya file ini dipindah dahulu ke tempat yang mudah dijangkau misalkan di dalam C: setelah semua beres maka terakhir akan muncul detil dari file yang akan kita restore

Untuk keperluan belajar pastikan file adventure works yang di download 3, adventure works, adventure works DW dan adventureworks LT. Saya menggunakan adventure works 2012 jadi bila ada perbedaaan data/struktur yang muncul itu adalah hal yang wajar bila kamu mendownload versi yang lebih baru.

Tuesday, January 15, 2019

Kali ini kita akan berbicara mengenai fact table, pengukuran dan bagaimana seseorang mengimplementasikan fact table dalam sebuah data warehouse. Kita mulai dengan konsep dari pengukuran. Apa yang diukur? kita mengukur sebuah data. Dalam kasus data warehouse mengacu pada atribut/kolom dalam fact table yang berkorelasi dengan dimension table menggunakan key yang ada.



Misal fact table dengan data sales, memiliki data yang bisa diukur seperti jumlah penjualan, jumlah barang terjual, harga yang diberikan, diskon, pajak yang berpengaruh kepada sebuah penjualan. Dari sini kita bisa belajar bahwa untuk sebuah pengukuran diperlukan data dengan nilai numeric. Karena pengukur harus non-subjective dan sebuah nilai yang tidak bisa didebat. Contoh nilai yang tidak bisa di debat adalah 90 dari 100 tetapi nilai yang bisa di debat adalah sebuah nilai dengan kata "Bagus" karena bagus bagi setiap orang memiliki arti yang berbeda-beda. ada yang akan mengatakan bahwa bagus dimulai dari angka 60 dan ada orang lain yang mengatakan bahwa bagus dimulai dari angka 90. Sehingga nilai "Bagus" adalah sesuatu yang bisa di debat. Berikutnya ukuran ini bisa ditambahkan atau kita bisa lakukan perhitungan matematika terhadap nilai tersebut. Pendapatan "Bagus" dikurangi  Pengeluaran "Lumayan" menjadi sesuatu yang tidak jelas. Tetapi bila pendapatan 1.000.000 dan pengeluaran 300.000 maka kita bisa tahu dengan pasti total keuntungan yang diperoleh. Meski numeric ada beberapa data yang tidak termasuk numeric seperti no telepon, atau persentase. Meskipun persentase bisa diukur tetapi persentase bisa jadi sesuatu yang non-additive. Lalu juga ada granularity of measure atau ukuran terkecil, di mana fact table harus melihat kepada dimension table. Misal bila penjualan hanya diberi dimensi bulanan maka nilai yang disimpan dalam fact table haruslah nilai bulanan bukan nilai harian.





Sehingga bila dirimgkas maka fact table adalah sebuah table untuk mengukur dengan sifat
  1. Tipe data numeric
  2. bisa dilakukan additive/penambahan 
  3. Tidak semua numeric bersifat additive
  4. Perhatikan ukuran terkecil yang akan digunakan melalui dimension table
Sehingga  kita bisa lihat urutan dalam membangun  fact table dalam data warehouse.
  1. Identifikasi fact yang mau dianalisa.
  2. Identifikasi ukuran yang berelasi dengan fact tersebut
  3. Tentukan dimension yang dibutuhkan untuk analisa
  4. Tambahkan foreign key yang menghubungkan fact table ke dimension table
  5. implementasikan dalam bentuk star schema 
Kemudian akan ada urutan yang harus dilihat dalam menjalankan proses ETL di dalam fact table tersebut seperti yang ada dalam gambar berikut.
Begitulah mengenai fact table yang akan dibangun dalam datawarehouse dan mengisi ke dalam fact table.

Wednesday, January 9, 2019

Seperti apakah data historical yang boleh dihapus?? Ini adalah pertanyaan yang sering diperdebatkan. Data yang terkesan "Old" boleh dihapus, jawabannya iya. Apabila data itu sudah tidak dibutuhkan. Misalkan sebuah barang yang sudah tidak dijual selama 15 tahun seperti pager. Bila penjualan pager sudah tidak dibutuhkan maka hal ini tidak usah dimasukan ke dalam data warehouse.


Data historical mana yang harus masuk?? Karena dalam OLTP tidak pernah menyimpan data historical. Jadi saat sebuah data diupdate maka data itu akan langsung berubah karena itu kita tidak mampu membandingkan data yang sekarang dengan data lampau(historical data). Misalkan data seorang pegawai menyatakan pekerjaan dia di surabaya bagus, kemudian dia dipindah tugaskan ke bali. Data lokasi pegawai dalam database diubah. Pada akhir tahun bisakah kita membandingkan kinerja dia saat di surabaya dan saat di bali? atau kita hanya melihat bahwa peforma dia turun di akhir tahun tanpa mengetahui bahwa dia adalah karyawan lama yang baru pindah ke bali atau bahkan dia dianggap seorang karyawan baru karena dia baru berjualan di bali. Mungkin juga aplikasi yang akan disalahkan karena pegawai ada di bali, tapi melakukan penjualan sampai surabaya. Bukankah ini artinya sesama saudara dalam perusahaan saling mengambil customer.  Hal ini akan menimbulkan informasi yang sangat salah.





OLTP tidak bersalah akan hal ini karena OLTP menutut data terbaru. Saat transaksi terjadi OLTP tidak peduli dengan hal-hal historical, karena OLTP membutuhkan data terbaru, OLTP tidak mungkin menampilkan sejarah perubahan harga atau karyawan penjual itu menjual di kota mana sebelumnya.Tugas tersebut jatuh pada datawarehouse untuk menunjukan kondisi data yang sebenarnya dengan akurat. Sehingga dalam datawarehouse sebaiknya tidak boleh ada data yang dirubah, tetapi data yang ditambah(append). Jadi saat OLTP diambil dengan ETL dan dimasukan ke dalam datawarehouse, data yang lama tidak boleh diubah dengan data yang baru tapi ditambah dengan data yang baru sehingga data yang lama menjadi historical data. Sehingga dalam kasus karyawan yang kita jadikan contoh, di kota manapun data yang dia miliki tercata dengan benar. Apa efeknya terhadap dimension?? dengan adanya pengetahuan yang baru saya bagikan maka struktur dalam dimension bisa berubah. Dimension seperti ini disebut dengan slowly changing dimension. Gambar berikut akan dijadikan contoh slowly changing dimension.



Gambar di atas adalah printscreen dari query terhadap datawarehouse. Product key yang dimiliki berbeda. meskipun product alteranate key yang dimiliki berbeda, mengapa? karena mereka ini adalah barang yang sama. bedanya ada di standart cost. product key 212 dibuat dengan biaya 12.0278 dan berhenti diproduksi pada tanggal 30-06-2002 sedangkan 213 adalah produk yang sama dengan standart cost yang lebih mahal yakni 13.8782. Bayangkan bila semua biaya diganti dengan yang paling baru. Maka kita akan ada selisih 1.7592 untuk tiap barang. Kalau memproduksi 100 barang maka selisih 175.92 sedangkan kalau ini perusahaan besar saya yakin mereka tidak hanya memproduksi 100 barang saja. Mungkin sekali mereka memproduksi 100 ribu barang. Silahkan hitung sendiri biaya ini. Historical data seperti inilah yang tidak boleh dihapus. Karena historical data ini dibutukan untuk keakuratan perhitungan biaya yang dikeluarkan perusahaan.Struktur dari dimension table juga berubah, untuk menyesuaikan dengan historical data yang dimiliki, inilah yang kita sebut slowly changin dimension. Berikutnya kita akan coba mengenal slowly changing dimension dengan lebih baik

 

Slowly Changing Dimension



Slowly changed dimension(SCD) digunakan untuk melakukan maintenance untuk data historical saat masuk ke dalam data warehouse. SCD harus bisa dijalankan dalam setiap dimensi yang menyimpan data historical. Ada beberapa cara untuk menyimpan historical data. Beberapa DBMS yang besar memberikan kemapuan untuk mengelola SCD, saya menemukan hal ini di dalam SQL server bahkan komponennya telah disediakan.

Penyimpanan SCD ini  disesuaikan dengan beberapa tipe, karena cara penyimpananya yang berbeda. ada dimulai dari SCD tipe 0 hingga SCD tipe 6, Tetapi yang paling umum digunakan adala SCD tipe 1-3.

Slowly Changing Dimension Type 1

SCD tipe 1 adalah bentuk paling simpel karena SCD tipe 1 tidak menyimpan data historical sama sekali. Ketika ada data yang lebih baru maka data yang lama akan diganti dengan lebih baru. Hal ini akan membuat data historical tidak akurat. Inilah yang hal yang sering digunakan dalam database OLTP. Saat data telah diganti maka kita tidak akan dapat mengetahui data lama yang telah diganti itu. Sehingga data tersebut tidak bisa dibandingkan atau di validasi.





Slowly Changing Dimension Type 2

SCD tipe 2 adalah SCD yang paling sering dipakai untuk data historical. Karena SCD tipe 2 sangat fleksibel dan bisa bekerja dengan berbagai macam tipe data. SCD tipe 2 menyimpan data historis sebanyak mungkin, sehingga mempunyai jumlah data yang paling banyak untuk diproses. SCD tipe 2 saat menerima data baru menuju data warehouse dia akan membuat sebuah row baru(insert row) daripada mengubah row yang ada(update row). Data yang di expired kan dengan menggunakan flag atau menggunakan sebuah kolom/atribut yang diberi nama enddate. Hal ini memampukan database untuk mencari data yang paling baru yang digunakan dan menggunakan value/nilai dari data tersebut. Kemampuan lain adalah memapukan untuk melihat data yang lama(historis) dan memberikan perbandingan dengan data yang paling baru. Tipe ini memberikan kita data historis unlimited untuk di maintain. Sebagai coba lihat gambar di bawah.


Data EndDate menyatakan bahwa sejak 2002 data dengan ProductKey 212 sudah tidak digunakan sejak 2002. Sehingga meksipun namanya sama dan product alternate key maka kita dapat mengetahui mana data paling baru yang harus digunakan. Alternate key digunakan untuk menghubungkan data yang lama dengan data yang baru.

Slowly Changing Dimension type 3

SCD tipe 3 digunakan apabila data yang diganti hanya sebagian saja dan bukan keseluruhan. Kemudian historical data juga hanya sebagian yang tersimpan, oleh karena itu apabila data diganti berkali-kali data historical yang lama juga akan hilang. Perhatikan gambar berikut sebagai contoh dari tabel SCD tipe 3. Di mana kolom SalesRegion memiliki sebuah kolom lagi yang bernama SalesRegionPrevious. Jadi ketika sales ini pindah kantor maka akan ada pencatatan di daerah(region) mana dia sebelumnya bekerja. Kelemahan yang terjadi adalah ketika dia pindah tempat yang kedua kalinya, maka daerah dia melakuakan penjualan pertama kali akan dihapus. Bila kolom yang lain tidak memberikan pengaruh maka kita tidak usah memberikan kolom tambahan, seperti gender, kolom ini tidak berubah, atau marital status. Kolom marital status, memang berubah tetapi marital status tidak memberikan dampak apapun pada fact table yang ada ataupun dimension table lain yang ada sehingga kolom ini tidak perlu ada tambahan data historical untuk disimpan.

Solusi yang paling baik adalah menggunakan SCD tipe 2 karena kita bisa melihat data lineage yang dimiliki. Data lineage adalah proses untuk melacak perubahan yang terjadi pada sebuah entity dari sebuah dimensi. Kita bisa melihat semua record dengan surrogate key atau alternate key yang dimiliki oleh data tersebut. Proses manualnya cukup mudah, pertama kita ambil data dari OLTP dan bandingkan dengan data yang ada di dalam data warehouse. Apabila data belum ada maka masukan data baru, apabila data sudah ada maka lakukan pegecekan apakah ada perubahan terhadap data. Jika ada lakukan pembaharuan data sesuai dengan tipe SCD yang digunakan. ETL dalam SSIS akan melakukan pemeriksaan SCD tipe berapa yang digunakan sehingga kita bisa menggunakan ETL dengan otomatis. Sebelum itu kita selesaikan masalah pembangunan table dengan mempelajari lebih lanjut mengenai fact table di post berikutnya


Tuesday, January 8, 2019

Dimension table adalah table yang merepresentasikan entity, mewakili data yang tujuannya untuk dianalisa. Misalkan kita memiliki data transaksi. Untuk melakukan analisa kita tidak mungkin hanya melihat angka saja. Kita perlu tahu dari mana transaksi tersebut berasal, kita juga perlu tahu siapa pegawai yang menjual barang tersebut dan barang apa yang terjual. Jadi Dimension table memberikan penjelasan atau detil dari data yang dianalisa. Tanpa detil ini kita tidak mengetahui hal-hal penting seperti cabang mana yang paling merugikan dan mana cabang yang menguntungkan atau pegawai mana yang berhasil menjual barang paling banyak. Jadi dimension table adalah bagian yang penting dalam data warehouse atau data mart.



Dimension table bagian dari star schema.

Setiap dimension table memberikan atribut yang digunakan untuk analisa, dan atribut ini dapat memiliki hierarki untuk memberikan summarization atau kesimpulan. Saat menjadi bagian dari sebuah data mart maka dimension table ini disebut stand-alone dimension. Sehingga entitiy itu di representasikan oleh sebuah data yang relevan saja. Sehingga mudah untuk melakukan query dan mengidentifikasi tabel tersebut. Kemudian mengambil data juga jauh lebih mudah  karena dimensi ini independen dan tidak bergantung pada tabel lain. Kekurangan yang ada hanyalah data ini bisa hilang dalam datawarehouse dan tidak di maintenance dalam waktu lama karena terlupakan.






Untuk dimensi yang digunakan oleh beberapa data dan menjadi bagian lebih dari 1 star schema disebut conformed atau shared dimensions. Keuntungan dari dimensi ini adalah independen dan tidak bergantung pada sebuah datamart saja karena mereka tidak menyimpan data spesifik mengenai datamart atau metadata shared dimension. Shared dimension susah untuk diidentifikasi dan dibuat, karena kamu tidak hanya melihat dalam perspektif sebuah data mart saja, tapi juga melihat dari persepektif seluruh data mart yang ada dalam data warehouse dan memastikan entity ini  relevan terhadap data mart yang lain.




Sebagai contoh, kelemahan yang ada seperti berikut. Sebuah fact table membutuhkan data dari sebuah entity pegawai, akan tetapi hanya memerlukan namanya saja. Sedangkan data mart lain juga membutuhkan nama tersebut beserta gender dari entity tersebut. Sehingga waktu mendesain perspektif ini tidak oleh dilupakan. Mungkin ada yang terpikir kenapa tidak dimasukan saja semua atribut tabel pegawai? Misalkan dalam atribut pegawai tersebut ada umur, apakah umur digunakan? bila tidak lebih baik tidak dimasukan. Dalam contoh kalau hanya 1 atribut mungkin tidak akan terasa berat. Bayangkan bila kita mengambil data dan di dalam entity tersebut banyak atribut yang tidak diperlukan. Proses ETL yang dilakukan akan jauh lebih berat dan lebih susah. Kemudahanya bagi ETL dalam shared dimension adalah saat kita mengganti sebuah atribut dalam entity maka data dalam shared dimensi ini akan berpengaruh langsung kepada setiap data mart yang ada.

Atribute dalam Dimension Table

Atribut adalah properti dalam dimension table yang ingin dianalisa secara berbeda. Secara fisik atribut direpresentasikan dengan kolom yang ada pada tabel. Kamu bisa gunakan untuk mengukur datamu. Sebagai contoh Penjualan, kamu bandingkan dengan pegawai dan data yang kamu perlukan adalah pegawai mana yang paling produktif untuk penjualan. Maka kamu akan membutuhkan data penjualan dan pegawai beserta umurnya. Inilah yang menyebabkan beberapa perusahaan hanya menerima pegawai dengan range tertentu, bukan karena mereka cantik atau tampan. 
Karena itu diperlukan sebuah atribut yang benar-benar telah dipikirkan sesuai dengan kebutuhan. Karena hal-hal ini akan menentukan sebuah dimensi itu disebut stand-alone dimension atau conformed dimension. Memang bisa ditambahkan dalam kemudian hari akan tetapi hal ini akan sangat merepotkan kamu. Sehingga ada baiknya lakukan perencanaan dan uji coba terlebih dahulu.



Hierarki dalam dimension table



Hierarki dalam dimension table digunakan untuk pemberian kesimpulan/peringkasan, ini disebut drill-down dan drill up. Untuk mudahnya kita mempunyai data yang bisa diringkas(disimpulkan) dan juga bisa dilihat detilnya. Misalkan kita memiliki data total penjualan dari satu tahun, apabila kita melakukan drill-down maka kita akan memperoleh detil dari data penjualan per bulan kemudian bila kita melakukan drill down lagi maka kita akan memperoleh data penjualan per minggu. Seperti itulah contoh dari hierarki. Hal ini membantu dalam analisa yang menjawab pertanyaan di bulan manakah sebuah perusahaan menjual paling banyak?maka bulan sebelumnya akan memastikan stock barang yang dijual cukup untuk memenuhi demand dari pelanggan. Biasanya tidak hanya bedasarkan waktu tetapi juga bedasarkan tempat dan jenis barang yang harus dipersiapkan. Semakin banyak hierarki yang kamu siapkan maka akan jumlah kolom dalam tabel tersebut akan makin banyak. Bentuk dari struktur database datawarehouse akan lebih banyak denormalisasi seperti contoh tabel di samping.
Berikutnya kita akan belajar mengenai historical data dan hubungannya dengan dimension table dalam datawarehuse, karena banyak perdebatan mengenai apakah data itu harus paling baru?? apakah data yang sudah lama boleh dihapus??  Sedangkan untuk pengertian dasar dimension tabel cukup sampai di sini saja.