Pada projek yang saya lakukan, dataset berasal dari Kaggle.com [1]. Dataset ini berjudul Women’s E-Commerce Clothing Reviews yang memiliki 23485 baris dan 11 kolom. Pada deskripsi yang tertera 11
kolom tersebut antara lain [1].
Clothing ID: Kolom yang berisi ID review dengan tipe integer
Age: Umur reviewer dengan integer
Title: Judul review yang diberikan dengan tipe string
Rating: Positive integer ordinal yang memiliki peringkat 1 (paling buruk) hingga 5 (paling baik)
Recommend IND: Kolom yang berisi nilai binary dimana nilai 1 berarti direkomendasi dan 0 berarti tidak direkomendasikan
Positive Feedback Count: Jumlah pelanggan yang memberikan nilai positif.
Division Name: Bertipe kategori untuk produksi
Department Name: Bertipe kategori untuk nama departemen produk
Class Name: Bertipe kategori untuk nama kelas produk.
Proses analisa menggunakan software Pentaho Data Integration (PDI) dengan menggunakan prinsip OLAP dengan terdapat tabel fakta dan tabel dimensi. Dimensi model yang digunakan adalah Star Schema sebagai visualisasi gambaran tabel fakta dan tabel dimensi dengan melakukan normalisasi 2NF. Star schema atau skema bintang adalah struktur logical yang memiliki tabel fakta yang terdiri atas data faktual sebagai hasil akhir analisis yang digunakan dengan dikelilingi tabel dimensi [2]. Normalisasi 2NF sendiri merupakan tahapan ketika normalisasi data sudah dianggap data normal (1NF) tanpa adanya atribut yang memiliki nilai ganda atau baris rangkap [2].
Permasalahan: Mengetahui rata-rata rating yang didapatkan berdasarkan Divisi, Departemen dan Kelas.
1. Star Schema
Permasalahan di atas dapat dilakukan pembuatan star schema yang menghasilkan star schema sebagai berikut.
![](https://static.wixstatic.com/media/67563d_8af3b7470c9743029d6f63b5631ee6ff~mv2.png/v1/fill/w_980,h_354,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/67563d_8af3b7470c9743029d6f63b5631ee6ff~mv2.png)
Star schema diatas sudah dilakukan 2 NF dikarenakan nilai sudah bergantung dengan primary key nya. Seperti contoh Dimensi divisi yang bersifat FK di table Fact yang tergantung pada PK di dimensinya sendiri.
2. Extract
Proses extract disini dilakukan mendownload data dari Kaggle dan dilakukan import pada database. Database yang digunakan ialah PostgreSQL dengan nama database women_e_commerce.
a. Pembuatan Table
Pembuatan table dilakukan karena PostgreSQL tidak dapat menerima jika langsung dilakukan import pada dataset. Berikut query pembuatan tabel dengan nama ‘review’.
CREATE TABLE IF NOT EXISTS public.review(
"number" integer NOT NULL,
clothing_id integer,
"Age" integer,
title "char",
review_text "char",
"Rating" integer,
recommend boolean,
division_name "char",
department "char",
class_name "char",
PRIMARY KEY ("number"));
b. Import data
Setelah dilakukan pembuatan tabel dengan tipe kolom yang telah ditentukan, saatnya dilakukan proses import.
![](https://static.wixstatic.com/media/67563d_086d557a6e6d44eb963af1b04e549617~mv2.png/v1/fill/w_975,h_161,al_c,q_85,enc_auto/67563d_086d557a6e6d44eb963af1b04e549617~mv2.png)
Dataset yang dimiliki bernama Womens Clothing E-Commerce Reviews.csv dengan format .csv. Encoding disini tidak dipilih dikarenakan encoding dilakukan jika bersifat . csv UTF-8 atau yang lain
![](https://static.wixstatic.com/media/67563d_e885f55d78b74d459879cd8fa85cae22~mv2.png/v1/fill/w_975,h_243,al_c,q_85,enc_auto/67563d_e885f55d78b74d459879cd8fa85cae22~mv2.png)
Header dirubah menjadi Yes untuk menjadikan kolom sebagai baris pertama dan
pemisah antara kolom (delimiter) menggunakan ‘,’ (koma) dan Quote serta Escape
menggunakan ‘ ” ’ (petik dua). Petik dua digunakan dikarenakan terdapat baris yang
bersifat teks. Berikut gambar data dengan LIMIT 5.
![](https://static.wixstatic.com/media/67563d_05aa4a28752440fa8db625bef4858272~mv2.png/v1/fill/w_975,h_323,al_c,q_85,enc_auto/67563d_05aa4a28752440fa8db625bef4858272~mv2.png)
3. Transform dan Load
a. Tabel Dimensi
Proses transform yang dilakukan antra lain replace null ‘with unknown’, mengambil n nilai unik dan menambahkan primary key pada setiap hasil tabel yang akan di load ke d database. Sebelumnya mari kita berapa total nilai null pada tiap kolom.
![](https://static.wixstatic.com/media/67563d_a5386d9264b741419225cb6a0aaed620~mv2.png/v1/fill/w_952,h_192,al_c,q_85,enc_auto/67563d_a5386d9264b741419225cb6a0aaed620~mv2.png)
Hasil query diatas menghasilkan total 14 nilai null pada tiap-tiap tabel dan jika
dilakukan pada fitur Pentaho, didapatkan seperti berikut
![](https://static.wixstatic.com/media/67563d_c8d280bd2aa0414ea801397def2ec58b~mv2.png/v1/fill/w_136,h_113,al_c,q_85,enc_auto/67563d_c8d280bd2aa0414ea801397def2ec58b~mv2.png)
![](https://static.wixstatic.com/media/67563d_1e230e78fd9a4ded9188d25f3007632b~mv2.png/v1/fill/w_641,h_539,al_c,q_85,enc_auto/67563d_1e230e78fd9a4ded9188d25f3007632b~mv2.png)
Hasil diatas didapatkan dengan melakukan sorting pada nilai. Jika dilihat
menggunakan SQL, hasil yang didapatkan seperti berikut.
![](https://static.wixstatic.com/media/67563d_e5a7461393c343d9a649ac5826320c43~mv2.png/v1/fill/w_480,h_292,al_c,q_85,enc_auto/67563d_e5a7461393c343d9a649ac5826320c43~mv2.png)
Dapat dinyatakan bahwa nilai null yang tersebar pada 3 kolom diatas saling berkaitan.
Sehingga, pada kasus ini saya mengganti nilai null dengan “Unknown”. Setelah
penggantian nilai null akan dilakukan sorting untuk mempersiapkan pengambilan
nilai unik dan pertambahan id sebagai primary key.
Rangkaian ETL selengkapnya seperti berikut.
![](https://static.wixstatic.com/media/67563d_a55da90073534d34a3a177ba19126283~mv2.png/v1/fill/w_975,h_267,al_c,q_85,enc_auto/67563d_a55da90073534d34a3a177ba19126283~mv2.png)
Rangkaian di atas menghasilkan tabel dimensi yang sebelumnya telah divisualikan
dengan star schema diatas. Hasil di atas di load pada database yang sama dan diextract
kedalam file excel (.xlsx).
![](https://static.wixstatic.com/media/67563d_8ed8e89a745f43c6abc2d0f766a60754~mv2.png/v1/fill/w_289,h_128,al_c,q_85,enc_auto/67563d_8ed8e89a745f43c6abc2d0f766a60754~mv2.png)
![](https://static.wixstatic.com/media/67563d_8e951831c81f4bad82fa6691be25e9f5~mv2.png/v1/fill/w_294,h_141,al_c,q_85,enc_auto/67563d_8e951831c81f4bad82fa6691be25e9f5~mv2.png)
![](https://static.wixstatic.com/media/67563d_cb1a76bbe4d7486eae1a8ff5ba8506e3~mv2.png/v1/fill/w_302,h_144,al_c,q_85,enc_auto/67563d_cb1a76bbe4d7486eae1a8ff5ba8506e3~mv2.png)
b. Tabel Fakta
Hasil dimensi diatas akan siap digunakan untuk menghasilkan tabel fakta.
Rangkaian tabel fakta yang dilakukan seperti proses join, lebih tepatnya dengan
INNER JOIN. Fitur pada pentaho untuk itu dilakukan menggunakan “Database Lookup”
yang memanfaatkan value yang sama untuk pada tabel data real dengan hasil tabel
dimensi.
![](https://static.wixstatic.com/media/67563d_0c370360c20245fea09e2e1faa8aba8c~mv2.png/v1/fill/w_964,h_861,al_c,q_90,enc_auto/67563d_0c370360c20245fea09e2e1faa8aba8c~mv2.png)
Lookup schema -> digunakan untuk mengetahui status tabel dan di database yang dibuat, status tabel yang digunakan adalah public.
Lookup table -> digunakan untuk melakukan proses INNER join.
Table field -> digunakan untuk tabel yang berisi data real
Field1 -> digunakan untuk mengambil hasil dimensi division
Comparator -> digunakan untuk membandingkan nilai antar kedua tabel
Values to return from the lookup table -> digunakan untuk mengembailkan nilai yang diinginkan. Tabel fakta menyimpan id dari tabel dimensi, sehingga yang dikembalikan adalah id dari dimensi tersebut
Namun karena tabel data real masih memiliki null, maka diperlukan pengubah nilai menjadi ‘Unknown’. Fungsi yang digunakan adalah COALESCE. Fungsi tersebut menggubah nilai pada tabel yang diinputkan dengan value yang diinginkan (‘Unknown’) dan dilakukan measure (Average) dari tabel Rating. Berikut query yang digunakan.
SELECT
COALESCE(division_name,'Unknown') AS division_name,
COALESCE(department,'Unknown') AS department,
COALESCE(class_name, 'Unknown') AS class_name,
AVG("Rating")
FROM review
GROUP BY 1,2,3
Proses untuk 2 dimensi lainnya sama seperti dimensi division. Hasil dari tabel fakta seperti berikut.
![](https://static.wixstatic.com/media/67563d_99c45c416c9b4dcd9cd87bed4c412787~mv2.png/v1/fill/w_975,h_534,al_c,q_90,enc_auto/67563d_99c45c416c9b4dcd9cd87bed4c412787~mv2.png)
Hasil tersebut akan difilter kolom mana saja yang digunakan. Filter yang digunakan seperti berikut yang berdasarkan star schema yang digunakan.
![](https://static.wixstatic.com/media/67563d_2a950d22e04a4c6c8584053254c895e4~mv2.png/v1/fill/w_450,h_186,al_c,q_85,enc_auto/67563d_2a950d22e04a4c6c8584053254c895e4~mv2.png)
Rangkaian lengkap tabel fakta dan hasilnya seperti berikut.
![](https://static.wixstatic.com/media/67563d_f75db039dfe742fd9088e3bca9d56dca~mv2.png/v1/fill/w_291,h_319,al_c,q_85,enc_auto/67563d_f75db039dfe742fd9088e3bca9d56dca~mv2.png)
![](https://static.wixstatic.com/media/67563d_9d139e2a61dc4a639e00c3686e6a8284~mv2.png/v1/fill/w_680,h_334,al_c,q_85,enc_auto/67563d_9d139e2a61dc4a639e00c3686e6a8284~mv2.png)
Comments