Dela via


Snabbstart: R-funktioner med SQL-maskininlärning

Gäller för: SQL Server 2016 (13.x) och senare versioner Azure SQL Managed Instance

I den här snabbstarten får du lära dig hur du använder matematiska R- och verktygsfunktioner med SQL Server Machine Learning Services eller Stordatakluster. Statistiska funktioner är ofta komplicerade att implementera i T-SQL, men kan göras i R med bara några rader kod.

I den här snabbstarten får du lära dig hur du använder de matematiska R- och hjälpfunktioner med SQL Server Machine Learning Services. Statistiska funktioner är ofta komplicerade att implementera i T-SQL, men kan göras i R med bara några rader kod.

I den här snabbstarten får du lära dig hur du använder R-matematiska funktioner och verktygsfunktioner med SQL Server R Services. Statistiska funktioner är ofta komplicerade att implementera i T-SQL, men kan göras i R med bara några rader kod.

I den här snabbstarten får du lära dig hur du använder datastrukturer och datatyper när du använder R i Azure SQL Managed Instance Machine Learning Services. Du får lära dig mer om att flytta data mellan R och SQL Managed Instance och de vanliga problem som kan uppstå.

Förutsättningar

Du behöver följande förutsättningar för att köra den här snabbstarten.

  • Ett verktyg för att köra SQL-frågor som innehåller R-skript. Den här snabbstarten använder Azure Data Studio.

Skapa en lagrad procedur för att generera slumpmässiga tal

För enkelhetens skull ska vi använda R-paketet stats som installeras och läses in som standard. Paketet innehåller hundratals funktioner för vanliga statistiska uppgifter, bland annat rnorm funktionen, som genererar ett angivet antal slumpmässiga tal med hjälp av den normala fördelningen, givet en standardavvikelse och medelvärde.

Följande R-kod returnerar till exempel 100 tal på medelvärdet 50, givet en standardavvikelse på 3.

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

Om du vill anropa den här R-raden från T-SQL lägger du till R-funktionen i R-skriptparametern sp_execute_external_scripti , så här:

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

Vad händer om du vill göra det enklare att generera en annan uppsättning slumptal?

Det är enkelt när det kombineras med T-SQL. Du definierar en lagrad procedur som hämtar argumenten från användaren och skickar sedan argumenten till R-skriptet som variabler.

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));
  • Den första raden definierar var och en av de SQL-indataparametrar som krävs när den lagrade proceduren körs.

  • Raden som börjar med @params definierar alla variabler som används av R-koden och motsvarande SQL-datatyper.

  • De rader som följer omedelbart mappar SQL-parameternamnen till motsvarande R-variabelnamn.

Nu när du har omslutit R-funktionen i en lagrad procedur kan du enkelt anropa funktionen och skicka in olika värden, så här:

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

Använda R-verktygsfunktioner för felsökning

Utils-paketet, som installeras som standard, innehåller en mängd olika verktygsfunktioner för att undersöka den aktuella R-miljön. Dessa funktioner kan vara användbara om du hittar avvikelser i hur R-koden fungerar i SQL Server och i miljöer utanför.

Du kan till exempel använda systemtidsfunktionerna i R, till exempel och system.time, för att samla in den tid som proc.time används av R-processer och analysera prestandaproblem. Ett exempel finns i självstudien Skapa datafunktioner där R-tidsfunktioner är inbäddade i lösningen.

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

Andra användbara funktioner finns i Använda R-kodprofileringsfunktioner för att förbättra prestanda.

Nästa steg

Följ den här snabbstarten om du vill skapa en maskininlärningsmodell med hjälp av R med SQL-maskininlärning: