Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A következőkre vonatkozik: Sql Server 2016 (13.x) és újabb verziók
felügyelt Azure SQL-példány
Az ötrészes oktatóanyag-sorozat második részében megismerheti a mintaadatokat, és létrehozhat néhány diagramot. Később megtanulhatja, hogyan szerializálhat grafikus objektumokat a Pythonban, majd deszerializálhatja ezeket az objektumokat, és készíthet diagramokat.
Az ötrészes oktatóanyag-sorozat második részében áttekintheti a mintaadatokat, majd létrehozhat néhány diagramot az R alapszintű általános barplot és hist függvények használatával.
A cikk egyik fő célja, hogy bemutatja, hogyan hívhatja meg az R-függvényeket a Transact-SQL tárolt eljárásokban, és hogyan mentheti az eredményeket alkalmazásfájlformátumokban:
- Tárolt eljárás létrehozása a
barplotsegítségével, hogy R-ábrát hozzon létre varbináris adatokként. A bcp használatával exportálhatja a bináris streamet egy képfájlba. - Hozzon létre egy tárolt eljárást
hista diagram létrehozásához, és mentse az eredményeket JPG- és PDF-kimenetként.
Megjegyzés:
Mivel a vizualizáció olyan hatékony eszköz az adatalakzatok és -eloszlás megértéséhez, az R számos függvényt és csomagot biztosít hisztogramok, pontdiagramok, dobozdiagramok és egyéb adatfeltárási grafikonok létrehozásához. Az R általában egy R-eszközzel hoz létre képeket grafikus kimenethez, amelyet varbináris adattípusként rögzíthet és tárolhat az alkalmazásban való rendereléshez. A képeket bármely támogatási fájlformátumba (.JPG, .PDF stb.) is mentheti.
Ebben a cikkben a következőket fogja megismerni:
- A mintaadatok áttekintése
- Diagramok létrehozása R használatával a T-SQL-ben
- Kimeneti diagramok több fájlformátumban
Az első részben telepítette az előfeltételeket, és visszaállította a mintaadatbázist.
A harmadik részben megtanulhatja, hogyan hozhat létre funkciókat nyers adatokból egy Transact-SQL függvény használatával. Ezután meghívja ezt a függvényt egy tárolt eljárásból, hogy létrehozhasson egy táblát, amely tartalmazza a funkcióértékeket.
A negyedik részben betölti a modulokat, és meghívja a szükséges függvényeket a modell létrehozásához és betanítása egy SQL Server által tárolt eljárás használatával.
Az ötödik részben megtanulhatja, hogyan lehet üzembe helyezni a negyedik részben betanított és mentett modelleket.
Az adatok áttekintése
Az adatelemzési megoldások fejlesztése általában intenzív adatfeltárást és adatvizualizációt is magában foglal. Ezért először szánjon egy percet a mintaadatok áttekintésére, ha még nem tette meg.
Az eredeti nyilvános adatkészletben a taxiazonosítókat és az utazási nyilvántartásokat külön fájlokban adták meg. A mintaadatok használatának megkönnyítése érdekében azonban a két eredeti adatkészlet a medallion, a hack_license és a pickup_datetime oszlophoz lett illesztve. Az adatrekordokat úgy mintázták meg, hogy csak az eredeti rekordszám 1%-át tartalmazza. Az eredményként kapott lemintázott adatkészlet 1 703 957 sort és 23 oszlopot tartalmaz.
Taxiazonosítók
A medál oszlop a taxi egyedi azonosítószámát jelöli.
A hack_license oszlop tartalmazza a taxisofőr engedélyszámát (anonimizált).
Utazási és viteldíjrekordok
Minden utazási rekord tartalmazza a felvétel és lerakás helyét és idejét, valamint az utazás távolságát.
Minden viteldíjrekord tartalmazza a fizetési adatokat, például a fizetési típust, a teljes összeget és a tipp összegét.
Az utolsó három oszlop különböző gépi tanulási feladatokhoz használható. A tip_amount oszlop folyamatos numerikus értékeket tartalmaz, és a regresszióelemzés címkeoszlopaként használható. A billentett oszlop csak igen/nem értékekkel rendelkezik, és bináris besoroláshoz használatos. A tip_class oszlop több osztálycímkével rendelkezik, ezért többosztályos besorolási feladatokhoz használható címkeként.
Ez az útmutató csak a bináris besorolási feladatot mutatja be; a másik két gépi tanulási feladathoz, a regresszióhoz és a többosztályos besoroláshoz is kipróbálhat modelleket.
A címkeoszlopokhoz használt értékek mind a tip_amount oszlopon alapulnak az alábbi üzleti szabályok használatával:
Származtatott oszlop neve Szabály Megbillent Ha tip_amount > 0, akkor tippelt = 1, egyébként tippelt = 0 tip_class 0. elem: tip_mennyiség = $0
1. osztály: tip_amount > $0 és tip_amount <= $5
2. osztály: tip_amount > $5 és tip_amount <= $10
3. osztály: tip_amount > $10 és tip_amount <= $20
4. osztály: borravaló_összeg > $20
Diagramok létrehozása R használatával a T-SQL-ben
Fontos
Az SQL Server 2019-től kezdődően az elkülönítési mechanizmushoz megfelelő engedélyeket kell adnia ahhoz a könyvtárhoz, amelyben a diagramfájl található. Az engedélyek beállításáról további információt a Windows SQL Server 2019 Fájlengedélyek szakaszában talál: A Machine Learning Services elkülönítési változásai.
A diagram létrehozásához használja az R függvényt barplot. Ez a lépés egy hisztogramot ábrázol egy Transact-SQL lekérdezés adatai alapján. Ezt a függvényt egy tárolt eljárásba, az RPlotHistogramba csomagolhatja.
Az SQL Server Management Studióban az Object Explorerben kattintson a jobb gombbal a NYCTaxi_Sample adatbázisra, és válassza az Új lekérdezés lehetőséget. Vagy az Azure Data Studióban válassza az Új jegyzetfüzet lehetőséget a Fájl menüből, és csatlakozzon az adatbázishoz.
Illessze be a következő szkriptet a hisztogramot ábrázoló tárolt eljárás létrehozásához. Ez a példa neve RPlotHistogram.
CREATE PROCEDURE [dbo].[RPlotHistogram] AS BEGIN SET NOCOUNT ON; DECLARE @query nvarchar(max) = N'SELECT tipped FROM [dbo].[nyctaxi_sample]' EXECUTE sp_execute_external_script @language = N'R', @script = N' image_file = tempfile(); jpeg(filename = image_file); #Plot histogram barplot(table(InputDataSet$tipped), main = "Tip Histogram", col="lightgreen", xlab="Tipped or not", ylab = "Counts", space=0) dev.off(); OutputDataSet <- data.frame(data=readBin(file(image_file, "rb"), what=raw(), n=1e6)); ', @input_data_1 = @query WITH RESULT SETS ((plot varbinary(max))); END GO
Ebben a szkriptben az alábbiakat kell megérteni:
A változó
@querya lekérdezés szövegét ('SELECT tipped FROM nyctaxi_sample') határozza meg, amelyet az R-szkript argumentumként ad át a szkript bemeneti változójának.@input_data_1A külső folyamatokként futó R-szkriptek esetében egy-az-egyhez leképezéssel kell rendelkeznie a szkript bemenetei és a sp_execute_external_script rendszer által tárolt eljárás bemenetei között, amely elindítja az R-munkamenetet az SQL Serveren.Az R-szkriptben egy változó (
image_file) van definiálva a rendszerkép tárolásához.A
barplotfüggvényt a rendszer meghívja a diagram létrehozásához.Az R-eszköz ki van kapcsolva , mert ezt a parancsot külső szkriptként futtatja az SQL Serveren. Általában az R-ben, amikor magas szintű ábrázolási parancsot ad ki, az R megnyit egy grafikus ablakot, amelyet eszköznek hívnak. Kikapcsolhatja az eszközt, ha fájlba ír, vagy más módon kezeli a kimenetet.
Az R grafikus objektum egy R data.frame-re van szerializálva a kimenethez.
Hajtsa végre a tárolt eljárást, és a bcp használatával exportáljon bináris adatokat egy képfájlba
A tárolt eljárás varbináris adatok adatfolyamaként adja vissza a képet, amelyet nyilvánvalóan nem tekinthet meg közvetlenül. A bcp segédprogrammal azonban lekérheti a varbináris adatokat, és képfájlként mentheti őket egy ügyfélszámítógépen.
A Management Studióban futtassa a következő utasítást:
EXEC [dbo].[RPlotHistogram]Results
plot0xFFD8FFE000104A4649...
Nyisson meg egy PowerShell-parancssort, és futtassa a következő parancsot, és adja meg argumentumként a megfelelő példánynevet, adatbázisnevet, felhasználónevet és hitelesítő adatokat. A Windows-identitásokat használó felhasználók esetében az -U és a -P helyére a -T elemet kell lecserélni.
bcp "exec RPlotHistogram" queryout "plot.jpg" -S <SQL Server instance name> -d NYCTaxi_Sample -U <user name> -P <password> -TMegjegyzés:
A bcp parancskapcsolói megkülönböztetik a kis- és nagybetűket.
Ha a kapcsolat sikeres, a rendszer kérni fogja, hogy adjon meg további információt a grafikus fájlformátumról.
Az alapértelmezett beállítások elfogadásához nyomja le az ENTER billentyűt minden egyes kérdésnél, kivéve a következő módosításokat:
A meződiagram előtaghosszához írja be a 0.
Írja be az Y értéket, ha menteni szeretné a kimeneti paramétereket a későbbi újrafelhasználáshoz.
Enter the file storage type of field plot [varbinary(max)]: Enter prefix-length of field plot [8]: 0 Enter length of field plot [0]: Enter field terminator [none]: Do you want to save this format information in a file? [Y/n] Host filename [bcp.fmt]:Results
Starting copy... 1 rows copied. Network packet size (bytes): 4096 Clock Time (ms.) Total : 3922 Average : (0.25 rows per sec.)Jótanács
Ha fájlba menti a formátuminformációkat (bcp.fmt), a bcp segédprogram létrehoz egy formátumdefiníciót, amelyet a jövőben alkalmazhat a hasonló parancsokra anélkül, hogy grafikus fájlformátum-beállításokat kérnél. A formátumfájl használatához adja hozzá
-f bcp.fmtbármelyik parancssor végéhez a jelszó argumentuma után.A kimeneti fájl ugyanabban a könyvtárban lesz létrehozva, ahol a PowerShell-parancsot futtatta. A diagram megtekintéséhez egyszerűen nyissa meg a fájlt plot.jpg.
Tárolt eljárás létrehozása a következő használatával: hist
Az adattudósok általában több adatvizualizációt hoznak létre, hogy különböző perspektívákból szerezzenek betekintést az adatokba. Ebben a példában létrehoz egy RPlotHist nevű tárolt eljárást, amely hisztogramokat, pontdiagramokat és más R-ábrákat ír .JPG és .PDF formátumba.
Ez a tárolt eljárás a hist függvény használatával hozza létre a hisztogramot, és exportálja a bináris adatokat népszerű formátumokba, például .JPG, .PDF és .PNG.
Az SQL Server Management Studióban az Object Explorerben kattintson a jobb gombbal a NYCTaxi_Sample adatbázisra, és válassza az Új lekérdezés lehetőséget.
Illessze be a következő szkriptet a hisztogramot ábrázoló tárolt eljárás létrehozásához. Ez a példa neve RPlotHist .
CREATE PROCEDURE [dbo].[RPlotHist] AS BEGIN SET NOCOUNT ON; DECLARE @query nvarchar(max) = N'SELECT cast(tipped as int) as tipped, tip_amount, fare_amount FROM [dbo].[nyctaxi_sample]' EXECUTE sp_execute_external_script @language = N'R', @script = N' # Set output directory for files and check for existing files with same names mainDir <- ''C:\\temp\\plots'' dir.create(mainDir, recursive = TRUE, showWarnings = FALSE) setwd(mainDir); print("Creating output plot files:", quote=FALSE) # Open a jpeg file and output histogram of tipped variable in that file. dest_filename = tempfile(pattern = ''rHistogram_Tipped_'', tmpdir = mainDir) dest_filename = paste(dest_filename, ''.jpg'',sep="") print(dest_filename, quote=FALSE); jpeg(filename=dest_filename); hist(InputDataSet$tipped, col = ''lightgreen'', xlab=''Tipped'', ylab = ''Counts'', main = ''Histogram, Tipped''); dev.off(); # Open a pdf file and output histograms of tip amount and fare amount. # Outputs two plots in one row dest_filename = tempfile(pattern = ''rHistograms_Tip_and_Fare_Amount_'', tmpdir = mainDir) dest_filename = paste(dest_filename, ''.pdf'',sep="") print(dest_filename, quote=FALSE); pdf(file=dest_filename, height=4, width=7); par(mfrow=c(1,2)); hist(InputDataSet$tip_amount, col = ''lightgreen'', xlab=''Tip amount ($)'', ylab = ''Counts'', main = ''Histogram, Tip amount'', xlim = c(0,40), 100); hist(InputDataSet$fare_amount, col = ''lightgreen'', xlab=''Fare amount ($)'', ylab = ''Counts'', main = ''Histogram, Fare amount'', xlim = c(0,100), 100); dev.off(); # Open a pdf file and output an xyplot of tip amount vs. fare amount using lattice; # Only 10,000 sampled observations are plotted here, otherwise file is large. dest_filename = tempfile(pattern = ''rXYPlots_Tip_vs_Fare_Amount_'', tmpdir = mainDir) dest_filename = paste(dest_filename, ''.pdf'',sep="") print(dest_filename, quote=FALSE); pdf(file=dest_filename, height=4, width=4); plot(tip_amount ~ fare_amount, data = InputDataSet[sample(nrow(InputDataSet), 10000), ], ylim = c(0,50), xlim = c(0,150), cex=.5, pch=19, col=''darkgreen'', main = ''Tip amount by Fare amount'', xlab=''Fare Amount ($)'', ylab = ''Tip Amount ($)''); dev.off();', @input_data_1 = @query END
Ebben a szkriptben az alábbiakat kell megérteni:
A SELECT lekérdezés kimenete a tárolt eljáráson belül az alapértelmezett R-adatkeretben van tárolva.
InputDataSetEzután különböző R-ábrázolási függvények hívhatók meg a tényleges grafikus fájlok létrehozásához. A beágyazott R-szkriptek többsége ezeknek a grafikus függvényeknek az opcióit képviseli, mint példáulplotvagyhist.Az R-eszköz ki van kapcsolva , mert ezt a parancsot külső szkriptként futtatja az SQL Serveren. Általában az R-ben, amikor magas szintű ábrázolási parancsot ad ki, az R megnyit egy grafikus ablakot, amelyet eszköznek hívnak. Kikapcsolhatja az eszközt, ha fájlba ír, vagy más módon kezeli a kimenetet.
Minden fájl a C:\temp\Plots helyi mappába lesz mentve. A célmappát az R-szkriptnek a tárolt eljárás részeként megadott argumentumok határozzák meg. Ha a fájlokat egy másik mappába szeretné kiállítani, módosítsa a
mainDirváltozó értékét a tárolt eljárásba beágyazott R-szkriptben. Ön a szkriptet úgy is módosíthatja, hogy különböző formátumokat, több fájlt és így tovább állítson elő.
A tárolt eljárás végrehajtása
Futtassa az alábbi utasítást a bináris diagramadatok JPEG- és PDF-fájlformátumokba való exportálásához.
EXEC RPlotHist
Results
STDOUT message(s) from external script:
[1] Creating output plot files:[1] C:\temp\plots\rHistogram_Tipped_18887f6265d4.jpg[1]
C:\temp\plots\rHistograms_Tip_and_Fare_Amount_1888441e542c.pdf[1]
C:\temp\plots\rXYPlots_Tip_vs_Fare_Amount_18887c9d517b.pdf
A rendszer véletlenszerűen generálja a fájlnevekben szereplő számokat, hogy ne legyen hiba, amikor egy meglévő fájlba próbál írni.
Kimenet megtekintése
A diagram megtekintéséhez nyissa meg a célmappát, és tekintse át az R-kód által a tárolt eljárásban létrehozott fájlokat.
Nyissa meg az STDOUT üzenetben jelzett mappát (a példában ez a C:\temp\plots)
Megnyitva
rHistogram_Tipped.jpgmegjelenítheti a tippet kapott utak számát, illetve azokat az utakat, amelyek nem kaptak tippet (ez a hisztogram hasonló az előző lépésben létrehozotthoz).Nyissa meg
rHistograms_Tip_and_Fare_Amount.pdfa tippösszegek eloszlásának megtekintéséhez, a viteldíjösszegekkel szemben ábrázolva.
Nyissa meg
rXYPlots_Tip_vs_Fare_Amount.pdf, hogy megtekintsen egy szóráspontdiagramot, amelyen az x-tengelyen a viteldíj összege, az y-tengelyen pedig a borravaló összege látható.
Következő lépések
Ebben a cikkben a következőt találja:
- A mintaadatok áttekintése
- R használatával létrehozott diagramok a T-SQL-ben
- Kimeneti diagramok több fájlformátumban