Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik: SQL Server 2016 (13.x) és újabb verziók
Ez az RevoScaleR oktatóanyag-sorozat 2. oktatóanyaga, amelyRevoScaleR-függvények SQL Serverrel való használatáról.
Ez az oktatóanyag az adatbázis-létrehozás folytatása: táblák hozzáadása és adatok betöltése. Ha egy DBA hozta létre az adatbázist és jelentkezett be a oktatóanyagrészében, akkor táblákat adhat hozzá R IDE, például az RStudio vagy egy beépített eszköz, például az Rguihasználatával.
Az R-ből csatlakozzon az SQL Serverhez, és RevoScaleR függvényekkel hajtsa végre a következő feladatokat:
- Táblák létrehozása betanítási adatokhoz és előrejelzésekhez
- Táblák betöltése helyi .csv fájlból származó adatokkal
A mintaadatok szimulált hitelkártya-csalási adatok (ccFraud adatkészlet), betanítási és pontozási adatkészletekbe particionálva. Az adatfájl RevoScaleRrésze.
A feladatok elvégzéséhez használjon R IDE-t vagy Rgui-. Mindenképpen használja az ezen a helyen található R-végrehajtható fájlokat: C:\Program Files\Microsoft\R Client\R_SERVER\bin\x64 (either Rgui.exe, ha ezt az eszközt használja, vagy egy R IDE-t, amely a C:\Program Files\Microsoft\R Client\R_SERVER parancsra mutat). Az oktatóanyag előfeltétele, hogy R-ügyfél-munkaállomást ezekkel a végrehajtható fájlokkal.
A betanítási adattábla létrehozása
Az adatbázis kapcsolati sztringjének tárolása R változóban. Az alábbiakban két példa látható az SQL Server érvényes ODBC kapcsolati sztringjeire: az egyik sql-bejelentkezést használ, egyet pedig a Windows integrált hitelesítésére.
Ügyeljen arra, hogy szükség szerint módosítsa a kiszolgáló nevét, felhasználónevét és jelszavát.
SQL bejelentkezés
sqlConnString <- "Driver=SQL Server;Server=<server-name>; Database=RevoDeepDive;Uid=<user_name>;Pwd=<password>"Windows hitelesítés
sqlConnString <- "Driver=SQL Server;Server=<server-name>;Database=RevoDeepDive;Trusted_Connection=True"Adja meg a létrehozni kívánt tábla nevét, és mentse egy R-változóba.
sqlFraudTable <- "ccFraudSmall"Mivel a szerverpéldány és az adatbázis neve már a kapcsolati string részeként van megadva, a két változó kombinálásakor az új tábla teljes neve instance.database.schema.ccFraudSmalllesz.
Ha szeretné, adja meg rowsPerRead, hogy az egyes kötegekben hány sor adat legyen beolvasva.
sqlRowsPerRead = 5000Bár ez a paraméter nem kötelező, a beállítás hatékonyabb számításokat eredményezhet. A RevoScaleR és MicrosoftML továbbfejlesztett elemzési funkcióinak többsége adattömbökben feldolgozni az adatokat. A rowsPerRead paraméter határozza meg az egyes adattömbök sorainak számát.
Előfordulhat, hogy kísérleteznie kell ezzel a beállítással a megfelelő egyensúly megtalálásához. Ha az érték túl nagy, az adathozzáférés lassú lehet, ha nincs elegendő memória az adatok ilyen méretű adattömbökben való feldolgozásához. Ezzel szemben egyes rendszerekben, ha a rowsPerRead értéke túl kicsi, a teljesítmény lelassulhat.
Kezdeti értékként használja az adatbázismotor-példány által definiált alapértelmezett kötegfolyamat-méretet az egyes adattömbsorok (5000 sor) sorainak számának szabályozásához. Mentse ezt az értéket az sqlRowsPerReadváltozóban
. Definiáljon egy változót az új adatforrás-objektumhoz, és adja át a korábban definiált argumentumokat a RxSqlServerData konstruktornak. Vegye figyelembe, hogy ez csak az adatforrás-objektumot hozza létre, és nem tölti fel. Az adatok betöltése külön lépés.
sqlFraudDS <- RxSqlServerData(connectionString = sqlConnString, table = sqlFraudTable, rowsPerRead = sqlRowsPerRead)
Pontozási adattábla létrehozása
Ugyanezekkel a lépésekkel hozza létre a pontozási adatokat tartalmazó táblát ugyanazzal a folyamattal.
Hozzon létre egy új R-változót, sqlScoreTable, a pontozáshoz használt tábla nevének tárolásához.
sqlScoreTable <- "ccFraudScoreSmall"Adja meg ezt a változót argumentumként az RxSqlServerData függvényhez egy második adatforrásobjektum, sqlScoreDSdefiniálásához.
sqlScoreDS <- RxSqlServerData(connectionString = sqlConnString, table = sqlScoreTable, rowsPerRead = sqlRowsPerRead)
Mivel már definiálta a kapcsolati sztringet és más paramétereket változóként az R-munkaterületen, újra felhasználhatja a különböző táblákat, nézeteket vagy lekérdezéseket képviselő új adatforrásokhoz.
Jegyzet
A függvény különböző argumentumokat használ egy adatforrás teljes táblán alapuló definiálásakor, mint egy lekérdezésen alapuló adatforrás esetében. Ennek az az oka, hogy az SQL Server adatbázismotorjának másképp kell előkészítenie a lekérdezéseket. Az oktatóanyag későbbi részében megtudhatja, hogyan hozhat létre adatforrás-objektumot EGY SQL-lekérdezés alapján.
Adatok betöltése SQL-táblákba az R használatával
Most, hogy létrehozta az SQL Server-táblákat, betöltheti az adatokat a megfelelő Rx függvény használatával.
A RevoScaleR csomag az adatforrástípusokra jellemző függvényeket tartalmaz. Szöveges adatok esetén használja RxTextData az adatforrás-objektum létrehozásához. A Hadoop-adatokból, ODBC-adatokból és egyebekből további függvények is létrehoznak adatforrás-objektumokat.
Jegyzet
Ehhez a szakaszhoz az adatbázison Execute DDL engedélyekkel kell rendelkeznie.
Adatok betöltése a betanítási táblába
Hozzon létre egy R-változót, ccFraudCsv, és rendelje hozzá a változóhoz a mintaadatokat tartalmazó CSV-fájl elérési útját. Ezt az adatkészletet RevoScaleRbiztosítja. A "sampleDataDir" az rxGetOption függvény
kulcsszója. ccFraudCsv <- file.path(rxGetOption("sampleDataDir"), "ccFraudSmall.csv")Figyelje meg a rxGetOptionhívását, amely a RevoScaleR-ban található rxOptions-hoz társított GET metódus. Ezzel a segédprogrammal beállíthatja és listázhatja a helyi és távoli számítási környezetekkel kapcsolatos beállításokat, például az alapértelmezett megosztott könyvtárat vagy a számításokhoz használni kívánt processzorok (magok) számát.
Ez az adott hívás a megfelelő könyvtárból szerzi be a mintákat, függetlenül attól, hogy hol futtatja a kódot. Próbálja meg például futtatni a függvényt az SQL Serveren és a fejlesztői számítógépen, és nézze meg, hogy miben különböznek az elérési utak.
Adjon meg egy változót az új adatok tárolásához, és a RxTextData függvénnyel adja meg a szöveges adatforrást.
inTextData <- RxTextData(file = ccFraudCsv, colClasses = c( "custID" = "integer", "gender" = "integer", "state" = "integer", "cardholder" = "integer", "balance" = "integer", "numTrans" = "integer", "numIntlTrans" = "integer", "creditLine" = "integer", "fraudRisk" = "integer"))A colClasses argumentum
fontos. Ezzel jelzi a szövegfájlból betöltött adatok egyes oszlopaihoz hozzárendelendő adattípust. Ebben a példában az összes oszlop szövegként lesz kezelve, kivéve a nevesített oszlopokat, amelyek egész számként vannak kezelve. Ezen a ponton érdemes szüneteltetni egy pillanatot, és megtekinteni az adatbázist az SQL Server Management Studióban. Frissítse az adatbázis tábláinak listáját.
Láthatja, hogy bár az R-adatobjektumok a helyi munkaterületen lettek létrehozva, a táblák nem lettek létrehozva az SQL Server-adatbázisban. Emellett a szövegfájlból nem töltődött be adat az R változóba.
Szúrja be az adatokat az rxDataStep függvény
meghívásával. rxDataStep(inData = inTextData, outFile = sqlFraudDS, overwrite = TRUE)Ha nem okoz problémát a kapcsolati sztring, rövid szünet után a következő eredményeknek kell megjelennie:
Összes megírt sor: 10000, Teljes idő: 0,466Sorok olvasása: 10000, Feldolgozott sorok összesen: 10000, Teljes adattömbidő: 0,577 másodperc
Frissítse a táblák listáját. Ha ellenőrizni szeretné, hogy az egyes változók a megfelelő adattípusokkal rendelkezik-e, és sikeresen importálták-e, kattintson a jobb gombbal a táblára az SQL Server Management Studióban, és válassza Az első 1000 sor kijelöléselehetőséget.
Adatok betöltése a pontozótáblába
Ismételje meg a lépéseket a pontozáshoz használt adatkészlet adatbázisba való betöltéséhez.
Először adja meg a forrásfájl elérési útját.
ccScoreCsv <- file.path(rxGetOption("sampleDataDir"), "ccFraudScoreSmall.csv")Az RxTextData függvénnyel lekérheti az adatokat, és mentheti őket a változóba, inTextData.
inTextData <- RxTextData(file = ccScoreCsv, colClasses = c( "custID" = "integer", "gender" = "integer", "state" = "integer", "cardholder" = "integer", "balance" = "integer", "numTrans" = "integer", "numIntlTrans" = "integer", "creditLine" = "integer"))Hívja meg az rxDataStep függvényt, hogy felülírja az aktuális táblát az új sémával és adatokkal.
rxDataStep(inData = inTextData, sqlScoreDS, overwrite = TRUE)Az inData argumentum határozza meg a használni kívánt adatforrást.
A outFile argumentum azt a táblát adja meg az SQL Serveren, ahová menteni szeretné az adatokat.
Ha a tábla már létezik, és nem használja a felülírás beállítást, az eredményeket vágás nélkül beszúrják.
Ha a kapcsolat sikeres volt, megjelenik egy üzenet, amely a befejezést és az adatok táblába való írásához szükséges időt jelzi:
Összes megírt sor: 10000, Teljes idő: 0,384Sorok olvasása: 10000, Feldolgozott sorok összesen: 10000, Teljes adattömbidő: 0,456 másodperc
További információ az rxDataStep-ről
rxDataStep egy hatékony függvény, amely több átalakítást is végrehajthat egy R-adatkereten. Az rxDataStep használatával is átalakíthatja az adatokat a cél által megkövetelt ábrázolássá: ebben az esetben az SQL Servert.
Igény szerint az adatokon is megadhat átalakításokat az R függvények használatával az rxDataStep