Bagikan melalui


Mulai cepat: Menjalankan skrip R sederhana dengan pembelajaran mesin SQL

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

Dalam mulai cepat ini, Anda akan menjalankan serangkaian skrip R sederhana menggunakan SQL Server Pembelajaran Mesin Services atau di Kluster Big Data. Anda akan mempelajari cara menggunakan prosedur tersimpan sp_execute_external_script untuk menjalankan skrip dalam instans SQL Server.

Dalam mulai cepat ini, Anda akan menjalankan sekumpulan skrip R sederhana menggunakan SQL Server Pembelajaran Mesin Services. Anda akan mempelajari cara menggunakan prosedur tersimpan sp_execute_external_script untuk menjalankan skrip dalam instans SQL Server.

Dalam mulai cepat ini, Anda akan menjalankan serangkaian skrip R sederhana menggunakan SQL Server R Services. Anda akan mempelajari cara menggunakan prosedur tersimpan sp_execute_external_script untuk menjalankan skrip dalam instans SQL Server.

Dalam mulai cepat ini, Anda akan menjalankan serangkaian skrip R sederhana menggunakan Azure SQL Managed Instance Pembelajaran Mesin Services. Anda akan mempelajari cara menggunakan prosedur tersimpan sp_execute_external_script untuk menjalankan skrip di database Anda.

Prasyarat

Anda memerlukan prasyarat berikut untuk menjalankan mulai cepat ini.

  • Layanan Pembelajaran Mesin SQL Server. Untuk menginstal Pembelajaran Mesin Services, lihat panduan penginstalan Windows.
  • Layanan SQL Server 2016 R. Untuk menginstal Layanan R, lihat panduan penginstalan Windows.
  • Azure SQL Managed Instance Pembelajaran Mesin Services. Untuk informasi, lihat gambaran umum Azure SQL Managed Instance Pembelajaran Mesin Services.
  • Alat untuk menjalankan kueri SQL yang berisi skrip R. Mulai cepat ini menggunakan Azure Data Studio.

Menjalankan skrip sederhana

Untuk menjalankan skrip R, Anda akan meneruskannya sebagai argumen ke prosedur tersimpan sistem, sp_execute_external_script. Prosedur tersimpan sistem ini memulai runtime R, meneruskan data ke R, mengelola sesi pengguna R dengan aman, dan mengembalikan hasil apa pun kepada klien.

Dalam langkah-langkah berikut, Anda akan menjalankan contoh skrip R ini:

a <- 1
b <- 2
c <- a/b
d <- a*b
print(c(c, d))
  1. Buka Azure Data Studio dan sambungkan ke server Anda.

  2. Teruskan skrip R lengkap ke prosedur tersimpan sp_execute_external_script .

    Skrip diteruskan melalui @script argumen . Semua yang ada di @script dalam argumen harus berupa kode R yang valid.

    EXECUTE sp_execute_external_script @language = N'R'
        , @script = N'
    a <- 1
    b <- 2
    c <- a/b
    d <- a*b
    print(c(c, d))
    '
    
  3. Hasil yang benar dihitung dan fungsi R print mengembalikan hasil ke jendela Pesan .

    Ini akan terlihat seperti ini.

    Hasil

    STDOUT message(s) from external script:
    0.5 2
    

Menjalankan skrip Halo Dunia

Contoh skrip umum adalah skrip yang hanya menghasilkan string "Halo Dunia". Jalankan perintah berikut.

EXECUTE sp_execute_external_script @language = N'R'
    , @script = N'OutputDataSet<-InputDataSet'
    , @input_data_1 = N'SELECT 1 AS hello'
WITH RESULT SETS(([Hello World] INT));
GO

Input ke prosedur tersimpan sp_execute_external_script meliputi:

Input Deskripsi
@language menentukan ekstensi bahasa yang akan dipanggil, dalam hal ini, R
@script menentukan perintah yang diteruskan ke runtime R. Seluruh skrip R Anda harus diapit dalam argumen ini, sebagai teks Unicode. Anda juga dapat menambahkan teks ke variabel jenis nvarchar lalu memanggil variabel
@input_data_1 data yang dikembalikan oleh kueri, diteruskan ke runtime R, yang mengembalikan data sebagai bingkai data
DENGAN TATAAN HASIL klausul menentukan skema tabel data yang dikembalikan, menambahkan "Halo Dunia" sebagai nama kolom, int untuk jenis data

Perintah mengeluarkan teks berikut:

Halo Dunia
1

Menggunakan input dan output

Secara default, sp_execute_external_script menerima satu himpunan data sebagai input, yang biasanya Anda berikan dalam bentuk kueri SQL yang valid. Kemudian mengembalikan satu bingkai data R sebagai output.

Untuk saat ini, mari kita gunakan variabel sp_execute_external_scriptinput dan output default dari : InputDataSet dan OutputDataSet.

  1. Buat tabel kecil data pengujian.

    CREATE TABLE RTestData (col1 INT NOT NULL)
    
    INSERT INTO RTestData
    VALUES (1);
    
    INSERT INTO RTestData
    VALUES (10);
    
    INSERT INTO RTestData
    VALUES (100);
    GO
    
  2. SELECT Gunakan pernyataan untuk mengkueri tabel.

    SELECT *
    FROM RTestData
    

    Hasil

    Konten tabel RTestData

  3. Jalankan skrip R berikut. Ini mengambil data dari tabel menggunakan SELECT pernyataan , meneruskannya melalui runtime R, dan mengembalikan data sebagai bingkai data. Klausa WITH RESULT SETS menentukan skema tabel data yang dikembalikan untuk SQL, menambahkan nama kolom NewColName.

    EXECUTE sp_execute_external_script @language = N'R'
        , @script = N'OutputDataSet <- InputDataSet;'
        , @input_data_1 = N'SELECT * FROM RTestData;'
    WITH RESULT SETS(([NewColName] INT NOT NULL));
    

    Hasil

    Output dari skrip R yang mengembalikan data dari tabel

  4. Sekarang mari kita ubah nama variabel input dan output. Nama variabel input dan output default adalah InputDataSet dan OutputDataSet, skrip ini mengubah nama menjadi SQL_in dan SQL_out:

    EXECUTE sp_execute_external_script @language = N'R'
        , @script = N' SQL_out <- SQL_in;'
        , @input_data_1 = N' SELECT 12 as Col;'
        , @input_data_1_name = N'SQL_in'
        , @output_data_1_name = N'SQL_out'
    WITH RESULT SETS(([NewColName] INT NOT NULL));
    

    Perhatikan bahwa R peka huruf besar/kecil. Variabel input dan output yang digunakan dalam skrip R (SQL_out, SQL_in) perlu cocok dengan nama yang ditentukan dengan @input_data_1_name dan @output_data_1_name, termasuk kasus.

    Tip

    Hanya satu himpunan data input yang dapat diteruskan sebagai parameter, dan Anda hanya dapat mengembalikan satu himpunan data. Namun, Anda dapat memanggil himpunan data lain dari dalam kode R Dan Anda dapat mengembalikan output dari jenis lain selain himpunan data. Anda juga dapat menambahkan kata kunci OUTPUT ke parameter apa pun agar dikembalikan dengan hasilnya.

  5. Anda juga dapat menghasilkan nilai hanya menggunakan skrip R tanpa data input (@input_data_1 diatur ke kosong).

    Skrip berikut menghasilkan teks "hello" dan "world".

    EXECUTE sp_execute_external_script @language = N'R'
        , @script = N'
    mytextvariable <- c("hello", " ", "world");
    OutputDataSet <- as.data.frame(mytextvariable);
    '
        , @input_data_1 = N''
    WITH RESULT SETS(([Col1] CHAR(20) NOT NULL));
    

    Hasil

    Hasil kueri menggunakan kelas <span=@script sebagai input" />

Periksa versi R

Jika Anda ingin melihat versi R mana yang diinstal, jalankan skrip berikut.

EXECUTE sp_execute_external_script @language = N'R'
    , @script = N'print(version)';
GO

Fungsi R print mengembalikan versi ke jendela Pesan . Dalam contoh output di bawah ini, Anda dapat melihat bahwa dalam hal ini, R versi 3.4.4 diinstal.

Hasil

STDOUT message(s) from external script:
                   _
platform       x86_64-w64-mingw32
arch           x86_64
os             mingw32
system         x86_64, mingw32
status
major          3
minor          4.4
year           2018
month          03
day            15
svn rev        74408
language       R
version.string R version 3.4.4 (2018-03-15)
nickname       Someone to Lean On

Mencantumkan paket R

Microsoft menyediakan sejumlah paket R yang telah diinstal sebelumnya dengan Pembelajaran Mesin Services.

Microsoft menyediakan sejumlah paket R yang telah diinstal sebelumnya dengan Layanan R.

Untuk melihat daftar paket R mana yang diinstal, termasuk versi, dependensi, lisensi, dan informasi jalur pustaka, jalankan skrip berikut.

EXEC sp_execute_external_script @language = N'R'
    , @script = N'
OutputDataSet <- data.frame(installed.packages()[,c("Package", "Version", "Depends", "License", "LibPath")]);'
WITH result sets((
            Package NVARCHAR(255)
            , Version NVARCHAR(100)
            , Depends NVARCHAR(4000)
            , License NVARCHAR(1000)
            , LibPath NVARCHAR(2000)
            ));

Output berasal dari installed.packages() dalam R dan dikembalikan sebagai kumpulan hasil.

Hasil

Paket terinstal di R

Langkah berikutnya

Untuk mempelajari cara menggunakan struktur data saat menggunakan R dengan pembelajaran mesin SQL, ikuti mulai cepat ini: