# 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

Pendahuluan

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.

Koneksi Database dan Pengambilan Data

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.

Visualisasi: Pie Chart Product Line

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

Visualisasi: Tren Penjualan

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

Analisis: Profit ‘Coffee’ dan ‘Espresso’

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