Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: SQL Server 2016 (13.x) en latere versies
Dit is tutorial 8 van de RevoScaleR-tutorialserie over hoe je RevoScaleR-functies gebruikt met SQL Server.
In deze tutorial gebruik je het logistische regressiemodel dat je in de vorige tutorial hebt gemaakt om een andere dataset te scoren die dezelfde onafhankelijke variabelen als input gebruikt.
- Nieuwe gegevens beoordelen
- Maak een histogram van de partituren
Note
Je hebt DDL-beheerdersrechten nodig voor sommige van deze stappen.
Genereer en sla resultaten op
Werk de sqlScoreDS-databron (gemaakt in tutorial twee) bij om kolominformatie te gebruiken die in de vorige tutorial is aangemaakt.
sqlScoreDS <- RxSqlServerData( connectionString = sqlConnString, table = sqlScoreTable, colInfo = ccColInfo, rowsPerRead = sqlRowsPerRead)Om te voorkomen dat je de resultaten verliest, maak je een nieuw databronobject aan. Gebruik vervolgens het nieuwe databronobject om een nieuwe tabel in de RevoDeepDive-database te vullen.
sqlServerOutDS <- RxSqlServerData(table = "ccScoreOutput", connectionString = sqlConnString, rowsPerRead = sqlRowsPerRead )Op dit moment is de tabel nog niet gemaakt. Deze instructie definieert gewoon een container voor de data.
Controleer de huidige rekencontext met rxGetComputeContext() en stel de rekencontext indien nodig op de server.
rxSetComputeContext(sqlCompute)Controleer als voorzorgsmaatregel of de uitvoertabel bestaat. Als er al een bestaat met dezelfde naam, krijg je een foutmelding bij het proberen te schrijven van de nieuwe tabel.
Om dit te doen, voer je een oproep uit naar de functies rxSqlServerTableExists en rxSqlServerDropTable, waarbij je de tabelnaam als invoer doorgeeft.
if (rxSqlServerTableExists("ccScoreOutput")) rxSqlServerDropTable("ccScoreOutput")- rxSqlServerTableExists doet een query op de ODBC-driver en geeft TRUE terug als de tabel bestaat, FALSE anders.
- rxSqlServerDropTable voert de DDL uit en geeft TRUE terug als de tabel succesvol wordt verwijderd, anders FALSE.
Voer rxPredict uit om de scores te creëren en sla ze op in de nieuwe tabel gedefinieerd in de databron sqlScoreDS.
rxPredict(modelObject = logitObj, data = sqlScoreDS, outData = sqlServerOutDS, predVarNames = "ccFraudLogitScore", type = "link", writeModelVars = TRUE, overwrite = TRUE)De rxPredict-functie is een andere functie die het uitvoeren in externe rekencontexten ondersteunt. Je kunt de rxPredict-functie gebruiken om scores te maken van modellen gebaseerd op rxLinMod, rxLogit of rxGlm.
De parameter writeModelVars staat hier op TRUE . Dit betekent dat de variabelen die voor de schatting zijn gebruikt, in de nieuwe tabel zullen worden opgenomen.
De parameter predVarNames specificeert de variabele waarin resultaten worden opgeslagen. Hier geef je een nieuwe variabele
ccFraudLogitScoredoor, .De typeparameter voor rxPredict bepaalt hoe je wilt dat de voorspellingen worden berekend. Specificeer het trefwoordantwoord om scores te genereren op basis van de schaal van de responsvariabele. Of gebruik de trefwoordlink om scores te genereren op basis van de onderliggende linkfunctie, waarbij voorspellingen worden gemaakt met behulp van een logistische schaal.
Na een tijdje kun je de lijst met tabellen in Management Studio verversen om de nieuwe tabel en de bijbehorende gegevens te zien.
Om extra variabelen toe te voegen aan de outputvoorspellingen, gebruik je het extraVarsToWrite-argument . Bijvoorbeeld, in de volgende code wordt de variabele custID uit de scoredatatabel toegevoegd aan de outputtabel met voorspellingen.
rxPredict(modelObject = logitObj, data = sqlScoreDS, outData = sqlServerOutDS, predVarNames = "ccFraudLogitScore", type = "link", writeModelVars = TRUE, extraVarsToWrite = "custID", overwrite = TRUE)
Toon scores in een histogram
Nadat de nieuwe tabel is aangemaakt, bereken en toon je een histogram van de 10.000 voorspelde scores. De berekening gaat sneller als je de lage en hoge waarden specificeert, dus haal die uit de database en voeg ze toe aan je werkgegevens.
Maak een nieuwe databron aan, sqlMinMax, die de database zoekt om de lage en hoge waarden te verkrijgen.
sqlMinMax <- RxSqlServerData( sqlQuery = paste("SELECT MIN(ccFraudLogitScore) AS minVal,", "MAX(ccFraudLogitScore) AS maxVal FROM ccScoreOutput"), connectionString = sqlConnString)Uit dit voorbeeld zie je hoe eenvoudig het is om RxSqlServerData-databronobjecten te gebruiken om willekeurige datasets te definiëren op basis van SQL-query's, functies of opgeslagen procedures, en die vervolgens in je R-code te gebruiken. De variabele slaat niet de werkelijke waarden op, alleen de databrondefinitie; de query wordt uitgevoerd om de waarden alleen te genereren wanneer je deze gebruikt in een functie zoals rxImport.
Roep de rxImport-functie aan om de waarden in een dataframe te plaatsen dat gedeeld kan worden tussen rekencontexten.
minMaxVals <- rxImport(sqlMinMax) minMaxVals <- as.vector(unlist(minMaxVals))Results
> minMaxVals [1] -23.970256 9.786345Nu de maximale en minimale waarden beschikbaar zijn, gebruik je deze waarden om een extra databron voor de gegenereerde scores te creëren.
sqlOutScoreDS <- RxSqlServerData(sqlQuery = "SELECT ccFraudLogitScore FROM ccScoreOutput", connectionString = sqlConnString, rowsPerRead = sqlRowsPerRead, colInfo = list(ccFraudLogitScore = list( low = floor(minMaxVals[1]), high = ceiling(minMaxVals[2]) ) ) )Gebruik het databronobject sqlOutScoreDS om de scores te verkrijgen en bereken en toon een histogram. Voeg de code toe om de rekencontext in te stellen indien nodig.
# rxSetComputeContext(sqlCompute) rxHistogram(~ccFraudLogitScore, data = sqlOutScoreDS)Results