Mulai cepat: Fungsi R dengan pembelajaran mesin SQL

Berlaku untuk: SQL Server 2016 (13.x) dan yang lebih baru Azure SQL Managed Instance

Dalam mulai cepat ini, Anda akan mempelajari cara menggunakan fungsi matematika dan utilitas R dengan SQL Server Machine Learning Services atau di Kluster Big Data. Fungsi statistik sering kali rumit untuk diterapkan dalam T-SQL, tetapi dapat dilakukan di R hanya dengan beberapa baris kode.

Dalam mulai cepat ini, Anda akan mempelajari cara menggunakan fungsi matematika dan utilitas R dengan SQL Server Machine Learning Services. Fungsi statistik sering kali rumit untuk diterapkan dalam T-SQL, tetapi dapat dilakukan di R hanya dengan beberapa baris kode.

Dalam mulai cepat ini, Anda akan mempelajari cara menggunakan fungsi matematika dan utilitas R dengan SQL Server R Services. Fungsi statistik sering kali rumit untuk diterapkan dalam T-SQL, tetapi dapat dilakukan di R hanya dengan beberapa baris kode.

Dalam mulai cepat ini, Anda akan mempelajari cara menggunakan struktur data dan jenis data saat menggunakan R di Azure SQL Managed Instance Machine Learning Services. Anda akan mempelajari tentang memindahkan data antara R dan SQL Managed Instance, dan masalah umum yang mungkin terjadi.

Prasyarat

Anda memerlukan prasyarat berikut untuk menjalankan mulai cepat ini.

  • Alat untuk menjalankan kueri SQL yang berisi skrip R. Mulai cepat ini menggunakan Azure Data Studio.

Membuat prosedur tersimpan untuk menghasilkan angka acak

Untuk kesederhanaan, mari kita gunakan paket R stats , yang diinstal dan dimuat secara default. Paket ini berisi ratusan fungsi untuk tugas statistik umum, di antaranya rnorm fungsi , yang menghasilkan jumlah angka acak tertentu menggunakan distribusi normal, mengingat simpanpan standar dan rata-rata.

Misalnya, kode R berikut mengembalikan 100 angka pada rata-rata 50, mengingat simpantan baku 3.

as.data.frame(rnorm(100, mean = 50, sd = 3));

Untuk memanggil baris R ini dari T-SQL, tambahkan fungsi R dalam parameter skrip R dari sp_execute_external_script, seperti ini:

EXECUTE sp_execute_external_script
      @language = N'R'
    , @script = N'
         OutputDataSet <- as.data.frame(rnorm(100, mean = 50, sd =3));'
    , @input_data_1 = N'   ;'
      WITH RESULT SETS (([Density] float NOT NULL));

Bagaimana jika Anda ingin mempermudah untuk menghasilkan sekumpulan angka acak yang berbeda?

Itu mudah jika dikombinasikan dengan T-SQL. Anda menentukan prosedur tersimpan yang mendapatkan argumen dari pengguna, lalu meneruskan argumen tersebut ke dalam skrip R sebagai variabel.

CREATE PROCEDURE MyRNorm (
    @param1 INT
    , @param2 INT
    , @param3 INT
    )
AS
EXECUTE sp_execute_external_script @language = N'R'
    , @script = N'
	     OutputDataSet <- as.data.frame(rnorm(mynumbers, mymean, mysd));'
    , @input_data_1 = N'   ;'
    , @params = N' @mynumbers int, @mymean int, @mysd int'
    , @mynumbers = @param1
    , @mymean = @param2
    , @mysd = @param3
WITH RESULT SETS(([Density] FLOAT NOT NULL));
  • Baris pertama mendefinisikan masing-masing parameter input SQL yang diperlukan saat prosedur tersimpan dijalankan.

  • Baris yang dimulai dengan @params mendefinisikan semua variabel yang digunakan oleh kode R, dan jenis data SQL yang sesuai.

  • Baris yang segera mengikuti petakan nama parameter SQL ke nama variabel R yang sesuai.

Sekarang setelah Anda membungkus fungsi R dalam prosedur tersimpan, Anda dapat dengan mudah memanggil fungsi dan meneruskan nilai yang berbeda, seperti ini:

EXECUTE MyRNorm @param1 = 100,@param2 = 50, @param3 = 3

Menggunakan fungsi utilitas R untuk pemecahan masalah

Paket utils , dipasang secara default, menyediakan berbagai fungsi utilitas untuk menyelidiki lingkungan R saat ini. Fungsi-fungsi ini dapat berguna jika Anda menemukan perbedaan dalam cara kode R Anda bekerja di SQL Server dan di lingkungan luar.

Misalnya, Anda dapat menggunakan fungsi pengaturan waktu sistem di R, seperti system.time dan proc.time, untuk menangkap waktu yang digunakan oleh proses R dan menganalisis masalah performa. Misalnya, lihat tutorial Membuat Fitur Data di mana fungsi pengaturan waktu R disematkan dalam solusi.

EXECUTE sp_execute_external_script
      @language = N'R'
    , @script = N'
        library(utils);
        start.time <- proc.time();
        
        # Run R processes
        
        elapsed_time <- proc.time() - start.time;'

Untuk fungsi lain yang berguna, lihat Menggunakan fungsi pembuatan profil kode R untuk meningkatkan performa.

Langkah berikutnya

Untuk membuat model pembelajaran mesin menggunakan R dengan pembelajaran mesin SQL, ikuti mulai cepat ini: