# Library untuk koneksi database dan visualisasi
library(DBI)
## Warning: package 'DBI' was built under R version 4.5.2
library(odbc)
## Warning: package 'odbc' was built under R version 4.5.2
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.5.2
library(scales)
## Warning: package 'scales' was built under R version 4.5.2
Pendahuluan
Laporan ini bertujuan untuk menampilkan distribusi nilai pesanan (order value) yang berasal dari negara-negara Nordic, yaitu Denmark, Finland, Norway, dan Sweden. Data diambil dari database classicmodels, kemudian divisualisasikan menggunakan histogram di R.
Koneksi Database Langkah pertama adalah menghubungkan R dengan database MySQL menggunakan ODBC.
con2 <- dbConnect(odbc::odbc(),
Driver = "MySQL ODBC 8.0 ANSI Driver",
Server = "127.0.0.1",
Database = "classicmodels",
UID = "root",
PWD = "Ochi1808", # sesuaikan
Port = 3306)
Pengambilan Data
Data diambil dengan query SQL yang menghitung total nilai pesanan dari setiap order.
query <- "
SELECT
o.orderNumber,
c.country,
SUM(od.quantityOrdered * od.priceEach) AS total_value
FROM orders o
JOIN orderdetails od ON o.orderNumber = od.orderNumber
JOIN customers c ON o.customerNumber = c.customerNumber
WHERE c.country IN ('Denmark', 'Finland', 'Norway', 'Sweden')
GROUP BY o.orderNumber, c.country;
"
data_nordic <- dbGetQuery(con2, query)
# Menampilkan data
head(data_nordic)
## orderNumber country total_value
## 1 10103 Norway 50218.95
## 2 10158 Norway 1491.38
## 3 10309 Norway 17876.32
## 4 10325 Norway 34638.14
## 5 10112 Sweden 7674.94
## 6 10320 Sweden 16799.03
Visualisasi Histogram
Histogram digunakan untuk melihat distribusi nilai pesanan dari negara Nordic.
ggplot(data_nordic, aes(x = total_value)) +
geom_histogram(aes(fill = after_stat(count)),
bins = 15,
color = "black") +
stat_bin(bins = 15,
geom = "text",
aes(label = after_stat(count)),
vjust = -0.5) +
scale_fill_gradient(low = "lightblue", high = "darkblue") +
scale_x_continuous(labels = label_dollar()) +
scale_y_continuous(expand = expansion(c(0, 0.15))) +
theme_minimal() +
labs(
title = "Distribusi Nilai Pesanan Negara Nordic",
subtitle = "Denmark, Finland, Norway, Sweden",
x = "Nilai Pesanan (USD)",
y = "Frekuensi"
) +
theme(legend.position = "none")
Penjelasan Proses (Jawaban Soal b)
Proses dimulai dengan membangun koneksi antara R dan database MySQL menggunakan fungsi dbConnect() dari package DBI dan odbc. Setelah koneksi berhasil, data diambil menggunakan query SQL yang menggabungkan tiga tabel yaitu orders, orderdetails, dan customers. Query tersebut menghitung total nilai pesanan dengan rumus jumlah dari perkalian quantityOrdered dan priceEach.
Selanjutnya, data difilter hanya untuk negara Nordic yaitu Denmark, Finland, Norway, dan Sweden. Hasil query kemudian disimpan dalam bentuk data frame di R.
Tahap terakhir adalah visualisasi menggunakan ggplot2 dengan grafik histogram (geom_histogram()). Histogram ini digunakan untuk melihat distribusi nilai pesanan, sehingga dapat diketahui pola penyebaran data, seperti apakah nilai pesanan cenderung kecil, besar, atau merata. Label dan format angka ditambahkan agar grafik lebih informatif dan mudah dibaca.