Bagikan melalui


Memvisualisasikan data SQL Server menggunakan R (tutorial SQL Server dan RevoScaleR)

Berlaku untuk: SQL Server 2016 (13.x) dan versi yang lebih baru

Ini adalah tutorial 6 dari seri tutorial RevoScaleR tentang cara menggunakan fungsi RevoScaleR dengan SQL Server.

Dalam tutorial ini, Anda akan menggunakan fungsi R untuk melihat distribusi nilai di kolom creditLine berdasarkan jenis kelamin.

  • Membuat variabel min-maks untuk input histogram
  • Memvisualisasikan data dalam histogram menggunakan rxHistogram dari RevoScaleR
  • Visualisasikan dengan plot sebar menggunakan levelplot dari kisi yang disertakan dalam distribusi R dasar

Seperti yang ditunjukkan tutorial ini, Anda dapat menggabungkan fungsi sumber terbuka dan khusus Microsoft dalam skrip yang sama.

Menambahkan nilai maksimum dan minimum

Berdasarkan statistik ringkasan komputasi dari tutorial sebelumnya, Anda telah menemukan beberapa informasi berguna tentang data yang dapat Anda sisipkan ke sumber data untuk komputasi lebih lanjut. Misalnya, nilai minimum dan maksimum dapat digunakan untuk menghitung histogram. Dalam latihan ini, tambahkan nilai tinggi dan rendah ke sumber data RxSqlServerData .

  1. Mulailah dengan menyiapkan beberapa variabel sementara.

    sumDF <- sumOut$sDataFrame
    var <- sumDF$Name
    
  2. Gunakan variabel ccColInfo yang Anda buat di tutorial sebelumnya untuk menentukan kolom di sumber data.

    Tambahkan kolom komputasi baru (numTrans, numIntlTrans, dan creditLine) ke koleksi kolom yang mengambil alih definisi asli. Skrip di bawah ini menambahkan faktor-faktor berdasarkan nilai minimum dan maksimum, yang diperoleh dari sumOut, yang menyimpan output dalam memori dari rxSummary.

    ccColInfo <- list(
        gender = list(type = "factor",
          levels = c("1", "2"), 
          newLevels = c("Male", "Female")),
        cardholder = list(type = "factor",
          levels = c("1", "2"), 
          newLevels = c("Principal", "Secondary")), 
        state = list(type = "factor", 
          levels = as.character(1:51), 
          newLevels = stateAbb), 
        balance  = list(type = "numeric"),
        numTrans = list(type = "factor", 
          levels = as.character(sumDF[var == "numTrans", "Min"]:sumDF[var == "numTrans", "Max"])),
        numIntlTrans = list(type = "factor",  
            levels = as.character(sumDF[var == "numIntlTrans", "Min"]:sumDF[var =="numIntlTrans", "Max"])),
        creditLine = list(type = "numeric")
            )
    
  3. Setelah memperbarui koleksi kolom, terapkan pernyataan berikut untuk membuat versi terbaru dari sumber data SQL Server yang Anda tentukan sebelumnya.

    sqlFraudDS <- RxSqlServerData(
        connectionString = sqlConnString,
        table = sqlFraudTable,
        colInfo = ccColInfo,
        rowsPerRead = sqlRowsPerRead)
    

    Sumber data sqlFraudDS sekarang menyertakan kolom baru yang ditambahkan menggunakan ccColInfo.

Pada titik ini, modifikasi hanya memengaruhi objek sumber data di R; belum ada data baru yang ditulis ke tabel database. Namun, Anda dapat menggunakan data yang diambil dalam variabel sumOut untuk membuat visualisasi dan ringkasan.

Tip

Jika Anda lupa konteks komputasi mana yang Anda gunakan, jalankan rxGetComputeContext(). Nilai pengembalian "RxLocalSeq Compute Context" menunjukkan bahwa Anda berjalan dalam konteks komputasi lokal.

Memvisualisasikan data menggunakan rxHistogram

  1. Gunakan kode R berikut untuk memanggil fungsi rxHistogram dan meneruskan rumus dan sumber data. Anda dapat menjalankan ini secara lokal pada awalnya, untuk melihat hasil yang diharapkan, dan berapa lama waktu yang dibutuhkan.

    rxHistogram(~creditLine|gender, data = sqlFraudDS,  histType = "Percent")
    

    Secara internal, rxHistogram memanggil fungsi rxCube , yang disertakan dalam paket RevoScaleR . rxCube menghasilkan satu daftar (atau bingkai data) yang berisi satu kolom untuk setiap variabel yang ditentukan dalam rumus, ditambah kolom hitungan.

  2. Sekarang, atur konteks komputasi ke komputer SQL Server jarak jauh dan jalankan rxHistogram lagi.

    rxSetComputeContext(sqlCompute)
    rxHistogram(~creditLine|gender, data = sqlFraudDS,  histType = "Percent")
    
  3. Hasilnya sama persis karena Anda menggunakan sumber data yang sama, tetapi pada langkah kedua, komputasi dilakukan di server jarak jauh. Hasilnya kemudian dikembalikan ke stasiun kerja lokal Anda untuk diplot.

hasil histogram

Memvisualisasikan dengan plot sebar

Plot sebar sering digunakan selama eksplorasi data untuk membandingkan hubungan antara dua variabel. Anda dapat menggunakan paket R bawaan untuk tujuan ini, dengan input yang disediakan oleh fungsi RevoScaleR .

  1. Panggil fungsi rxCube untuk menghitung rata-rata fraudRisk untuk setiap kombinasi numTrans dan numIntlTrans:

    cube1 <- rxCube(fraudRisk~F(numTrans):F(numIntlTrans),  data = sqlFraudDS)
    

    Untuk menentukan grup yang digunakan untuk menghitung grup berarti, gunakan F() notasi. Dalam contoh ini, F(numTrans):F(numIntlTrans) menunjukkan bahwa bilangan bulat dalam variabel numTrans dan numIntlTrans harus diperlakukan sebagai variabel kategoris, dengan tingkat untuk setiap nilai bilangan bulat.

    Nilai pengembalian default rxCube adalah objek rxCube, yang mewakili tabulasi silang.

  2. Panggil fungsi rxResultsDF untuk mengonversi hasilnya menjadi bingkai data yang dapat dengan mudah digunakan dalam salah satu fungsi plot standar R.

    cubePlot <- rxResultsDF(cube1)
    

    Fungsi rxCube menyertakan argumen opsional, returnDataFrame = TRUE, yang dapat Anda gunakan untuk mengonversi hasilnya menjadi bingkai data secara langsung. Contohnya:

    print(rxCube(fraudRisk~F(numTrans):F(numIntlTrans), data = sqlFraudDS, returnDataFrame = TRUE))

    Namun, output rxResultsDF lebih bersih dan mempertahankan nama kolom sumber. Anda dapat menjalankan head(cube1) diikuti dengan head(cubePlot) membandingkan output.

  3. Buat peta panas menggunakan fungsi levelplot dari paket kisi , yang disertakan dengan semua distribusi R.

    levelplot(fraudRisk~numTrans*numIntlTrans, data = cubePlot)
    

    Hasil

    hasil sebar

Dari analisis cepat ini, Anda dapat melihat bahwa risiko penipuan meningkat dengan jumlah transaksi dan jumlah transaksi internasional.

Untuk informasi selengkapnya tentang fungsi rxCube dan tab silang secara umum, lihat Ringkasan data menggunakan RevoScaleR.

Langkah berikutnya