# Memuat paket yang digunakan untuk melakukan koneksi data data dan visualisasi data
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
Laporan ini menyajikan pie chart dari banyaknya product yang terjual untuk setiap Product Line dan menampilkan tren penjualan dari database “coffechains”. Proses ini mengintegrasikan SQL untuk pengambilan data dan R untuk visualisasi.
Untuk melakukan koneksi MySQL ke R-Studio, diperlukan beberapa
packages/library dari R. Paket yang diperlukan yaitu odbc
dan DBI. Langkah pertama adalah membangun koneksi antara
RStudio dan database MySQL menggunakan fungsi
dbConnect()
con <- DBI::dbConnect(odbc::odbc(),
Driver = "MySQL ODBC 8.0 ANSI Driver",
Server = "127.0.0.1",
UID = "root",
PWD = "@Zhrabinn-1803",
Port = 3306,
database = "coffechains")
Setelah database dari MySQL berhasil terkoneksi dengan R-Studio, langkah berikutnya yaitu melakukan manajemen data, sehingga data-data tersebut dapat diolah untuk selanjutnya dilakukan visualisasi maupun analisis data.
Akan dilakukan manajemen data dari database “classicmodels”. Koneksi
pada database “classicmodels” sudah dilakukan dan disimpan pada object
con.
Visualisai bertujuan menunjukkan Market Share setiap Product Line
berdasarkan jumlah product. Menggunakan Library ggplot2
untuk membuat pie chart.
# Mengambil data yang diperlukan dengan query yang sesuai
dt1 <- dbGetQuery(con,"SELECT `Product Line`, COUNT(*) AS jumlah FROM product GROUP BY `Product Line`")
# Kustom tampilan data
dt1$jumlah <- as.numeric(dt1$jumlah)
nilai <- round(dt1$jumlah/sum(dt1$jumlah)*100,2)
# Membuat wadah pie chart
pie <- ggplot(dt1, aes(x = " ", y = jumlah,
fill = `Product Line`)) +
geom_bar(stat = "identity", width = 1)
# Konversi menjadi pie chart dengan coord_polar dan menambahkan label pada pie chart
pie <- pie + coord_polar("y", start=0) +
geom_text(aes(label = paste0(nilai, "%")), position = position_stack(vjust =
0.5))
# Menambahkan warna pada scale
pie <- pie + scale_fill_manual(values = c("lightblue", "navy"))
# Menghapus label dan menambahkan judul
pie <- pie + labs(x = NULL, y = NULL, fill = NULL, title = "Product Line - Market
Share")
# Menambahkan tema (theme)
pie <- pie + theme_classic() + theme(axis.line = element_blank(),
axis.text = element_blank(),
axis.ticks = element_blank(),
plot.title = element_text(hjust = 0.5, color =
"darkgrey"))
# Memanggil pie chart
pie
Garis akan menunjukkan apakah penjualan cenderung naik, turun, atau
fluktuatif. Rentang sumbu Y mencerminkan skala total penjualan dan
rentang sumbu X adalah nilai penjualan di beberapa tanggal. Fungsi
geom_line digunakan untuk melihat tren penjualan.
# Mengambil data yang digunakan dengan query yang sesuai
dt2 <- dbGetQuery(con, "SELECT DATE_FORMAT(Date, '%y-%m-%d') AS `Order Date`,
SUM(Sales) AS Penjualan
FROM facttable
GROUP BY `Order Date`
ORDER BY `Order Date`")
# Membuat wadah line tren
line <- ggplot(dt2, aes(x = as.Date(paste(`Order Date`, '-01'), format = '%Y-%m-%d'), y = Penjualan)) +
geom_line(color = "blue")
# Menyesuaikan tema (theme)
line <- line + theme_minimal() +
labs(title = "Tren Penjualan",
x = "Tanggal",
y = "Total Penjualan (USD)")
# Memanggil grafik
line
Seperti halnya pada visualisasi data, untuk analisis data juga harus memperhatikan struktur data sebagai input untuk fungsi-fungsi dalam analisis data. Kita akan menguji apakah terdapat perbedaan yang signifikan antara rata-rata Profit product jenis ‘Coffee’ dan ‘Espresso’.
# Menggambil data menggunakan SQL
dt = dbGetQuery(con, "SELECT p.`Product Type`, f.Profit
FROM facttable f
JOIN product p ON f.ProductId = p.ProductId
WHERE p.`Product Type` IN ('Coffee', 'Espresso')")
# Melakukan Uji T
uji = t.test(Profit ~ `Product Type`, data = dt)
# Menampilkan hasil Uji T
uji
##
## Welch Two Sample t-test
##
## data: Profit by Product Type
## t = 2.7359, df = 1971.4, p-value = 0.006277
## alternative hypothesis: true difference in means between group Coffee and group Espresso is not equal to 0
## 95 percent confidence interval:
## 3.503388 21.241008
## sample estimates:
## mean in group Coffee mean in group Espresso
## 70.72254 58.35034