SQL Server-adatobjektumok létrehozása az RxSqlServerData használatával (SQL Server és RevoScaleR oktatóanyag)

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

  1. 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"
    
  2. 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.

  3. Ha szeretné, adja meg rowsPerRead, hogy az egyes kötegekben hány sor adat legyen beolvasva.

    sqlRowsPerRead = 5000
    

    Bá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 .

  4. 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.

  1. 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"
    
  2. 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

  1. 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.

  2. 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.

  3. 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.

  4. 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

  5. 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

  1. 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")
    
  2. 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"))
    
  3. 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 rxDataStepaz argumentumokban. Ezekre a műveletekre az oktatóanyag későbbi részében talál példákat.

Következő lépések