skapa SSIS-och SSRS-arbetsflöden med R på SQL Server

  • 08/28/2020
  • 5 minuter att läsa
    • d
    • M
    • a
    • D
    • c
    • +2

gäller för: SQL Server 2016 (13.x) och senare

den här artikeln förklarar hur du använder inbäddade r-och Python-skript med hjälp av språk-och datavetenskapsfunktionerna i SQL Server Machine Learning Services med två viktiga SQL Server-funktioner: SQL Server Integration Services (SSIS) och SQL Server Reporting Services SSRS. R-och Python-bibliotek i SQL Server ger statistiska och prediktiva funktioner. SSIS och SSRS ger samordnad ETL transformation och visualiseringar, respektive. I den här artikeln beskrivs hur du sätter ihop alla dessa funktioner i det här arbetsflödesmönstret:

  • skapa en lagrad procedur som innehåller körbar r eller Python
  • kör den lagrade proceduren från SSIS eller SSRS

exemplen i den här artikeln handlar mest om R och SSIS, men begreppen och stegen gäller lika för Python. Det andra avsnittet ger vägledning och länkar för SSRS visualiseringar.

använd SSIS för automatisering

Data science-arbetsflöden är mycket iterativa och involverar mycket transformation av data, inklusive skalning, aggregeringar, beräkning av sannolikheter och byte av namn och sammanslagning av attribut. Dataforskare är vana vid att göra många av dessa uppgifter i R, Python eller ett annat språk; att utföra sådana arbetsflöden på företagsdata kräver dock sömlös integration med ETL-verktyg och processer.

eftersom R Services (in-Database) gör att du kan köra komplexa operationer i R via Transact-SQL och lagrade procedurer kan du integrera datavetenskapsuppgifter med befintliga ETL-processer. I stället för att utföra en kedja av minnesintensiva uppgifter kan databeredning optimeras med hjälp av de mest effektiva verktygen, inklusive integrationstjänster och Transact-SQL.

här är några tips på hur du kan automatisera dina databehandlings-och modelleringspipelines med hjälp av integrationstjänster:

  • extrahera data från lokaler eller molnkällor för att bygga träningsdata
  • Bygg och kör r-eller Python-modeller som en del av ett dataintegrationsflöde
  • omskola modeller regelbundet (schemalagd)
  • ladda resultat från R-eller Python-skript till andra destinationer som Excel, Power BI, Oracle och Teradata, för att nämna några
  • använd SSIS-uppgifter för att skapa datafunktioner i SQL-databasen
  • använd villkorlig förgrening för att byta beräkningskontext för R-och Python-jobb

SSIS-exempel

i det här exemplet visas hur du automatisera uppgifter med SSIS. Du skapar lagrade procedurer med inbäddad R med SQL Server Management Studio och kör sedan de lagrade procedurerna från exekvera T-SQL-uppgifter i ett SSIS-paket.

för att gå igenom det här exemplet bör du vara bekant med Management Studio, SSIS, SSIS Designer, package design och T-SQL. SSIS-paketet använder tre exekvera T-SQL-uppgifter som infogar träningsdata i en tabell, modellerar data och poängerar data för att få förutsägelseutmatning.

ladda träningsdata

kör följande skript i SQL Server Management Studio för att skapa en tabell för lagring av data. Du bör skapa och använda en testdatabas för denna övning.

skapa en lagrad procedur som laddar träningsdata i dataram. Det här exemplet använder den inbyggda Iris – datamängden.

i SSIS Designer skapar du en exekvera SQL-uppgift som kör den lagrade proceduren du just definierade. Skriptet för SQLStatement tar bort befintliga data, anger vilka data som ska infogas och anropar sedan den lagrade proceduren för att tillhandahålla data.

generera en modell

kör följande skript i SQL Server Management Studio för att skapa en tabell som lagrar en modell.

skapa en lagrad procedur som genererar en linjär modell med rxLinMod. Revoscaler och revoscalepy bibliotek är automatiskt tillgängliga i R och Python sessioner på SQL Server så det finns ingen anledning att importera biblioteket.

i SSIS Designer, skapa en exekvera SQL-uppgift för att utföra generate_iris_rx_model lagrad procedur. Modellen serialiseras och sparas i tabellen ssis_iris_models. Skriptet för SQLStatement är som följer:

som en kontrollpunkt, när denna uppgift är klar, kan du fråga ssis_iris_models för att se att den innehåller en binär modell.

förutsäga (poäng) resultat med hjälp av” tränad ” modell

nu när du har kod som laddar träningsdata och genererar en modell, är det enda steget kvar att använda modellen för att generera förutsägelser.

för att göra detta, sätt r-skriptet i SQL-frågan för att utlösa den rxPredict inbyggda r-funktionen på ssis_iris_model. En lagrad procedur som heter predict_species_length utför denna uppgift.

i SSIS Designer skapar du en exekvera SQL-uppgift som kör den lagrade proceduren predict_species_length för att generera förutsagd kronbladslängd.

exec predict_species_length 'rxLinMod';

kör lösningen

i SSIS Designer, tryck på F5 för att köra paketet. Du bör se ett resultat som liknar följande skärmdump.

använd SSRS för visualiseringar

även om R kan skapa diagram och intressanta visualiseringar är det inte väl integrerat med externa datakällor, vilket innebär att varje diagram eller diagram måste produceras individuellt. Att dela kan också vara svårt.

genom att använda R Services (in-Database) kan du köra komplexa operationer i R via Transact-SQL-lagrade procedurer, som enkelt kan konsumeras av en mängd olika företagsrapporteringsverktyg, inklusive Reporting Services och Power BI.

SSIS-och SSRS-exemplen i den här artikeln illustrerar två fall av att utföra lagrade procedurer som innehåller inbäddat r-eller Python-skript. En viktig takeaway är att du kan göra R eller Python-skript tillgängliga för alla program eller verktyg som kan skicka en exekveringsbegäran på en lagrad procedur. En extra takeaway för SSIS är att du kan skapa paket som automatiserar och schemalägger ett brett spektrum av operationer, till exempel datainsamling, rengöring, manipulation och så vidare, med R-eller Python data science-funktionalitet som ingår i verksamhetskedjan. Mer information och förslag finns i operationalisera r-kod med lagrade procedurer i SQL Server Machine Learning Services.

Lämna ett svar

Din e-postadress kommer inte publiceras.