Aracılığıyla paylaş


Hızlı Başlangıç: SQL machine learning ile basit R betikleri çalıştırma

Şunlar için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümleri Azure SQL Yönetilen Örnek

Bu hızlı başlangıçta , SQL Server Machine Learning Services'ı veya Büyük Veri Kümelerini kullanarak bir dizi basit R betiği çalıştıracaksınız. SQL Server örneğinde betiği çalıştırmak için sp_execute_external_script saklı yordamını nasıl kullanacağınızı öğreneceksiniz.

Bu hızlı başlangıçta , SQL Server Machine Learning Services kullanarak bir dizi basit R betiği çalıştıracaksınız. SQL Server örneğinde betiği çalıştırmak için sp_execute_external_script saklı yordamını nasıl kullanacağınızı öğreneceksiniz.

Bu hızlı başlangıçta , SQL Server R Services kullanarak bir dizi basit R betiği çalıştıracaksınız. SQL Server örneğinde betiği çalıştırmak için sp_execute_external_script saklı yordamını nasıl kullanacağınızı öğreneceksiniz.

Bu hızlı başlangıçta, Azure SQL Yönetilen Örneği Makine Öğrenmesi Hizmetleri kullanarak bir dizi basit R betiği çalıştıracaksınız. Veritabanınızda betiği yürütmek için sp_execute_external_script adlı saklı yordamı nasıl kullanacağınızı öğreneceksiniz.

Önkoşullar

Bu hızlı başlangıcı çalıştırmak için aşağıdaki önkoşullara ihtiyacınız vardır.

  • R betikleri içeren SQL sorgularını çalıştırmaya yönelik bir araç. Bu hızlı başlangıçta Azure Data Studio kullanılır.

Basit bir betik çalıştırın

R betiğini çalıştırmak için, bunu sistem saklı yordamı sp_execute_external_script'e bağımsız değişken olarak ileteceksiniz. Bu sistem saklı yordamı R çalışma zamanını başlatır, verileri R'ye geçirir, R kullanıcı oturumlarını güvenli bir şekilde yönetir ve istemciye tüm sonuçları döndürür.

Aşağıdaki adımlarda bu örnek R betiğini çalıştıracaksınız:

a <- 1
b <- 2
c <- a/b
d <- a*b
print(c(c, d))
  1. Azure Data Studio'yu açın ve sunucunuza bağlanın.

  2. Tam R betiğini saklı yordama sp_execute_external_script geçirin.

    Betik @script bağımsız değişkeni aracılığıyla iletilir. @script bağımsız değişkenin içindeki her şey geçerli R kodu olmalıdır.

    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. Doğru sonuç hesaplanır ve R print işlevi sonucu İletiler penceresine döndürür.

    Şuna benzer bir şey olmalı.

    Results

    STDOUT message(s) from external script:
    0.5 2
    

Merhaba Dünya betiğini çalıştırın

Tipik bir örnek betik, yalnızca "Hello World" dizesini veren betiktir. Aşağıdaki komutu çalıştırın.

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

sp_execute_external_script saklı yordamına girişler şunlardır:

Veri Girişi Description
@language çağrılacak dil uzantısını tanımlar; bu durumda R
@script R çalışma zamanına geçirilen komutları tanımlar. R betiğinizin tamamı Unicode metni olarak bu bağımsız değişkenin içine alınmalıdır. Ayrıca metni nvarchar türünde bir değişkene ekleyebilir ve ardından değişkeni çağırabilirsiniz
@input_data_1 sorgu tarafından döndürülen veriler, verileri veri çerçevesi olarak döndüren R çalışma zamanına geçirilir
SONUÇ KÜMELERIYLE yan tümcesi, veri türü için int sütun adı olarak "Hello World" ekleyerek döndürülen veri tablosunun şemasını tanımlar

Komut aşağıdaki metni verir:

Hello World
1

Girişleri ve çıkışları kullanma

Varsayılan olarak, sp_execute_external_script giriş olarak tek bir veri kümesini kabul eder ve bu veri kümesini genellikle geçerli bir SQL sorgusu biçiminde sağlarsınız. Ardından çıkış olarak tek bir R veri çerçevesi döndürür.

Şimdilik şunun varsayılan giriş ve çıkış değişkenlerini sp_execute_external_scriptkullanalım: InputDataSet ve OutputDataSet.

  1. Test verilerinden oluşan küçük bir tablo oluşturun.

    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 Tabloyu sorgulamak için deyimini kullanın.

    SELECT *
    FROM RTestData
    

    Results

    RTestData tablosunun içeriği

  3. Aşağıdaki R betiğini çalıştırın. deyimini kullanarak SELECT tablodan verileri alır, R çalışma zamanından geçirir ve verileri bir veri çerçevesi olarak döndürür. WITH RESULT SETS yan tümcesi, NewColName sütun adını ekleyerek SQL için döndürülen veri tablosunun şemasını tanımlar.

    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));
    

    Results

    Tablodan veri döndüren R betiğinden çıktı

  4. Şimdi giriş ve çıkış değişkenlerinin adlarını değiştirelim. Varsayılan giriş ve çıkış değişkeni adları InputDataSet ve OutputDataSet'dir; bu betik adları SQL_in ve SQL_out olarak değiştirir:

    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));
    

    R'nin büyük/küçük harfe duyarlı olduğunu unutmayın. R betiğinde kullanılan giriş ve çıkış değişkenleri (SQL_out, SQL_in), @input_data_1_name ve @output_data_1_name ile tanımlanan adlarla, büyük/küçük harf uyumu dahil eşleşmelidir.

    Tavsiye

    Parametre olarak yalnızca bir giriş veri kümesi geçirilebilir ve yalnızca bir veri kümesi döndürebilirsiniz. Ancak, R kodunuzun içinden diğer veri kümelerini çağırabilir ve veri kümesine ek olarak diğer türlerin çıkışlarını döndürebilirsiniz. Output anahtar sözcüğünü sonuçlarla birlikte döndürmek için herhangi bir parametreye de ekleyebilirsiniz.

  5. Giriş verisi olmadan yalnızca R betiğini kullanarak da değerler oluşturabilirsiniz (@input_data_1 boş olarak ayarlanır).

    Aşağıdaki betikte "hello" ve "world" metinleri görüntülenir.

    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));
    

    Results

    @script girişi kullanarak sorgu sonuçlarını elde edin" />

R sürümünü denetleme

Hangi R sürümünün yüklü olduğunu görmek istiyorsanız aşağıdaki betiği çalıştırın.

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

R print işlevi, sürümü İletiler penceresinde gösterir. Aşağıdaki örnek çıktıda, bu durumda R sürüm 3.4.4'in yüklü olduğunu görebilirsiniz.

Results

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

R paketlerini listeleme

Microsoft, Machine Learning Services ile önceden yüklenmiş bir dizi R paketi sağlar.

Microsoft, R Services ile önceden yüklenmiş bir dizi R paketi sağlar.

Sürüm, bağımlılıklar, lisans ve kitaplık yolu bilgileri dahil olmak üzere hangi R paketlerinin yüklendiğinin listesini görmek için aşağıdaki betiği çalıştırın.

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)
            ));

Çıkış R'dendir installed.packages() ve sonuç kümesi olarak döndürülür.

Results

R'de yüklü paketler

Sonraki Adımlar

SQL makine öğrenmesi ile R kullanırken veri yapılarını kullanmayı öğrenmek için şu hızlı başlangıcı izleyin: