Traffine I/O

Bahasa Indonesia

2022-12-30

Apa itu Star Schema

Apa itu Star Schema

Star schema adalah teknik pemodelan database yang digunakan dalam data warehousing. Teknik ini mengorganisasi data ke dalam sebuah tabel terpusat yang disebut tabel fakta yang dikelilingi oleh beberapa tabel dimensi. Dalam star schema, tabel fakta mengandung data kuantitatif, seperti pendapatan penjualan atau unit produk yang terjual, sementara tabel dimensi memberikan konteks bagi data tersebut, seperti pelanggan yang melakukan pembelian atau periode waktu di mana penjualan terjadi.

Star Schema
Star Schema: Still Relevant Almost 30 years Later?

Salah satu keuntungan utama dari menggunakan star schema adalah kesederhanaannya dan kemudahan penggunaannya. Karena data diorganisir ke dalam struktur yang sederhana dan intuitif, mudah bagi analis dan pengguna bisnis untuk memahami dan mengakses data. Hal ini memudahkan untuk melakukan kueri dan analisis yang kompleks pada data, sehingga menghasilkan wawasan bisnis yang lebih berharga dan dapat diambil tindakan.

Keuntungan lain dari menggunakan star schema adalah kemampuannya untuk meningkatkan kinerja kueri. Dengan mengorganisir data ke dalam star schema, kueri dapat dioptimalkan untuk kecepatan dan efisiensi, sehingga memungkinkan waktu respon yang lebih cepat dan pengambilan keputusan yang lebih tepat waktu.

Perlu dicatat bahwa star schema adalah jenis teknik pemodelan dimensi tertentu. Pemodelan dimensi adalah pendekatan yang lebih luas dalam pemodelan data yang bertujuan untuk menciptakan struktur yang dioptimalkan untuk kueri dan analisis. Star schema adalah salah satu jenis teknik pemodelan dimensi yang umum digunakan dalam data warehousing, tetapi ada juga jenis teknik pemodelan dimensi lainnya, seperti skema snowflake dan skema konstelasi fakta.

Merancang Star Schema

Merancang star schema melibatkan mengidentifikasi fakta dan dimensi dari data, membuat tabel fakta dan tabel dimensi, dan membangun hubungan antara keduanya. Berikut adalah contoh cara merancang star schema untuk perusahaan e-commerce fiksi.

Mengidentifikasi Fakta dan Dimensi

Langkah pertama dalam merancang star schema adalah mengidentifikasi fakta dan dimensi. Untuk perusahaan e-commerce, fakta mungkin meliputi pendapatan penjualan, jumlah pesanan, dan pengembalian produk. Dimensi mungkin meliputi waktu, produk, pelanggan, dan lokasi.

Membuat Tabel Fakta

Tabel fakta adalah tabel pusat dalam star schema yang berisi data kuantitatif. Dalam contoh ini, kita akan membuat tabel fakta yang disebut sales_fact_table yang berisi pendapatan penjualan dan jumlah pesanan.

sql
CREATE TABLE sales_fact_table (
   order_id INT,
   product_id INT,
   customer_id INT,
   time_id INT,
   location_id INT,
   revenue DECIMAL(10,2),
   orders INT
);

Membuat Tabel Dimensi

Tabel dimensi memberikan konteks untuk data di dalam tabel fakta. Dalam contoh ini, kita akan membuat tabel dimensi untuk produk, pelanggan, lokasi, dan waktu.

sql
CREATE TABLE product_dim_table (
   product_id INT,
   product_name VARCHAR(50),
   category VARCHAR(50)
);

CREATE TABLE customer_dim_table (
   customer_id INT,
   customer_name VARCHAR(50),
   customer_email VARCHAR(50),
   customer_address VARCHAR(100)
);

CREATE TABLE location_dim_table (
   location_id INT,
   location_name VARCHAR(50),
   city VARCHAR(50),
   state VARCHAR(50)
);

CREATE TABLE time_dim_table (
   time_id INT,
   date DATE,
   month INT,
   year INT
);

Membuat Relasi

Setelah tabel fakta dan dimensi dibuat, relasi antara mereka harus dibuat. Dalam contoh ini, relasi antara tabel fakta dan tabel dimensi dibuat melalui penggunaan foreign key.

sql
ALTER TABLE sales_fact_table ADD FOREIGN KEY (product_id) REFERENCES product_dim_table(product_id);
ALTER TABLE sales_fact_table ADD FOREIGN KEY (customer_id) REFERENCES customer_dim_table(customer_id);
ALTER TABLE sales_fact_table ADD FOREIGN KEY (location_id) REFERENCES location_dim_table(location_id);
ALTER TABLE sales_fact_table ADD FOREIGN KEY (time_id) REFERENCES time_dim_table(time_id);

Berikut ini adalah contoh tampilan star schema dengan data sampel:

  • Tabel Fakta Penjualan:
Order ID Product ID Customer ID Time ID Location ID Revenue Orders
1 101 1001 1 1 500.00 2
2 102 1002 2 2 250.00 1
3 103 1003 3 3 1000.00 5
  • Tabel Dimensi Produk:
Product ID Product Name Category
101 Product A Electronics
102 Product B Clothing
103 Product C Home
  • Tabel Dimensi Pelanggan:
Customer ID Customer Name Customer Email Customer Address
1001 John Smith john@smith.com 123 Main Street
1002 Jane Doe jane@doe.com 456 Maple

Querying Star Schema

Menggunakan SQL untuk mengambil informasi yang berguna dari tabel faktor dan dimensi disebut querying star schema. Berikut beberapa contoh lain cara meng-query star schema untuk perusahaan fiksi e-commerce.

Mengelompokkan dan Mengagregasi Data

Mengelompokkan dan mengagregasi data merupakan teknik umum yang digunakan dalam querying star schema. Ini melibatkan menghitung statistik ringkasan seperti jumlah, rata-rata, dan hitungan, dan mengelompokkan data berdasarkan satu atau lebih dimensi.

Contoh: Menghitung Total Penjualan per Bulan

Pada contoh ini, kita akan menghitung total pendapatan penjualan untuk setiap bulan.

sql
SELECT time_dim_table.month, SUM(sales_fact_table.revenue) as total_sales
FROM sales_fact_table
JOIN time_dim_table ON sales_fact_table.time_id = time_dim_table.time_id
GROUP BY time_dim_table.month;

Output:

Month Total Sales
1 5000.00
2 7500.00
3 10000.00

Contoh: Rata-rata Penjualan per Segmen Pelanggan

Pada contoh ini, kita akan menghitung rata-rata pendapatan penjualan untuk setiap segmen pelanggan.

sql
SELECT customer_dim_table.customer_segment, AVG(sales_fact_table.revenue) as avg_sales
FROM sales_fact_table
JOIN customer_dim_table ON sales_fact_table.customer_id = customer_dim_table.customer_id
GROUP BY customer_dim_table.customer_segment;

Output:

Customer Segment Average Sales
New Customers 750.00
Returning Customers 1000.00

Menangani Analisis Berbasis Waktu

Analisis berbasis waktu adalah kasus penggunaan umum untuk querying star schema. Ini melibatkan menganalisis tren dan pola dari waktu ke waktu, seperti pertumbuhan dari tahun ke tahun dan rata-rata bergerak.

Contoh: Pertumbuhan Penjualan dari Tahun ke Tahun

Pada contoh ini, kita akan menghitung pertumbuhan penjualan dari tahun ke tahun untuk setiap bulan.

sql
SELECT t1.month, SUM(t1.revenue) as current_year_sales, SUM(t2.revenue) as last_year_sales,
       (SUM(t1.revenue) - SUM(t2.revenue)) / SUM(t2.revenue) as yoy_growth
FROM sales_fact_table t1
JOIN sales_fact_table t2 ON t1.product_id = t2.product_id AND t1.time_id = t2.time_id
JOIN time_dim_table ON t1.time_id = time_dim_table.time_id
WHERE time_dim_table.year = 2022 AND t2.year = 2021
GROUP BY t1.month;

Output:

Month Current Year Sales Last Year Sales YoY Growth
1 5000.00 4000.00 0.25
2 7500.00 6000.00 0.25
3 10000.00 8000.00 0.25

Contoh: Rata-rata Bergerak pada Penjualan

Pada contoh ini, kita akan menghitung rata-rata bergerak dari pendapatan penjualan selama periode tiga bulan.

sql
SELECT time_dim_table.month, AVG(sales_fact_table.revenue) OVER (ORDER BY time_dim_table.month ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) as moving_average
FROM sales_fact_table
JOIN time_dim_table ON sales_fact_table.time_id = time_dim_table.time_id;

Output:

Month Moving Average
1 5000.00
2 6250.00
3 750

Referensi

https://iterationinsights.com/article/star-schema-still-relevant-almost-30-years-later-2/

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!