Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: SQL Server 2016 (13.x) i nowsze wersje
To jest drugi samouczek z serii tutoriali RevoScaleR, jak korzystać z funkcji RevoScaleR z SQL Server.
Ten samouczek to kontynuacja tworzenia bazy danych: dodawania tabel i ładowania danych. Jeśli DBA stworzył bazę danych i logował się w tutorialu numer dwa, możesz dodawać tabele za pomocą R IDE, np. RStudio, lub wbudowanego narzędzia, np. Rgui.
Z R połącz się z SQL Server i użyj funkcji RevoScaleR do wykonywania następujących zadań:
- Tworz tabele do danych treningowych i predykcji
- Ładuj tabele z danymi z lokalnego pliku .csv
Przykładowe dane to symulowane dane dotyczące nadużyć związanych z kartami kredytowymi (zbiór danych ccFraud), podzielone na zbiór treningowy i scoringowy. Plik danych jest dołączony do RevoScaleR.
Użyj R IDE lub Rgui , aby wykonać te zadania. Upewnij się, że używasz plików wykonywalnych R dostępnych w tym miejscu: C:\Program Files\Microsoft\R Client\R_SERVER\bin\x64 (either Rgui.exe jeśli używasz tego narzędzia lub R IDE wskazującego na C:\Program Files\Microsoft\R Client\R_SERVER). Posiadanie stacji roboczej klienta R z tymi plikami wykonywalnymi jest wymagane w tym samouczku.
Stwórz tabelę danych treningowych
Przechowuj parametry połączenia z bazą danych w zmiennej R. Poniżej znajdują się dwa przykłady prawidłowych ciągów połączeń ODBC dla SQL Server: jeden z logowaniem SQL, a drugi dla uwierzytelniania zintegrowanego z systemem Windows.
Pamiętaj, aby odpowiednio zmodyfikować nazwę serwera, nazwę użytkownika i hasło.
Logowanie sql
sqlConnString <- "Driver=SQL Server;Server=<server-name>; Database=RevoDeepDive;Uid=<user_name>;Pwd=<password>"Uwierzytelnianie Windows
sqlConnString <- "Driver=SQL Server;Server=<server-name>;Database=RevoDeepDive;Trusted_Connection=True"Określ nazwę tabeli, którą chcesz utworzyć, i zapisz ją w zmiennej R.
sqlFraudTable <- "ccFraudSmall"Ponieważ instancja serwera i nazwa bazy danych są już określone jako część ciągu połączenia, po połączeniu obu zmiennych w pełni kwalifikowana nazwa nowej tabeli ma postać instance.database.schema.ccFraudSmall.
Opcjonalnie określ parametr rowsPerRead, aby kontrolować, ile wierszy danych jest odczytywanych w każdej partii.
sqlRowsPerRead = 5000Chociaż ten parametr jest opcjonalny, jego ustawienie może skutkować bardziej efektywnymi obliczeniami. Większość ulepszonych funkcji analitycznych w RevoScaleR i MicrosoftML przetwarza dane w częściach. Parametr rowsPerRead określa liczbę wierszy w każdym bloku.
Możesz potrzebować poeksperymentować z tym ustawieniem, żeby znaleźć odpowiednią równowagę. Jeśli wartość jest zbyt duża, dostęp do danych może być powolny, jeśli nie ma wystarczająco dużo pamięci do przetwarzania danych w blokach o tej wielkości. I odwrotnie, w niektórych systemach, jeśli wartość rowsPerRead jest zbyt mała, wydajność także może się obniżyć.
Jako wartość początkową użyj domyślnego rozmiaru procesu wsadowego zdefiniowanego przez instancję silnika bazy danych, aby kontrolować liczbę wierszy w każdym chunku (5 000 wierszy). Zapisz tę wartość w zmiennej sqlRowsPerRead.
Zdefiniuj zmienną dla nowego obiektu źródła danych i przekaż wcześniej zdefiniowane argumenty konstruktorowi RxSqlServerData . Należy zauważyć, że to tworzy tylko obiekt źródłowy danych i nie wypełnia go. Ładowanie danych to osobny etap.
sqlFraudDS <- RxSqlServerData(connectionString = sqlConnString, table = sqlFraudTable, rowsPerRead = sqlRowsPerRead)
Utwórz tabelę danych punktacji
Stosując te same kroki, stwórz tabelę zawierającą dane punktacyjne w tym samym procesie.
Stwórz nową zmienną R, sqlScoreTable, aby przechowywać nazwę tabeli używanej do punktacji.
sqlScoreTable <- "ccFraudScoreSmall"Podaj tę zmienną jako argument dla funkcji RxSqlServerData, aby zdefiniować drugi obiekt źródłowy danych, sqlScoreDS.
sqlScoreDS <- RxSqlServerData(connectionString = sqlConnString, table = sqlScoreTable, rowsPerRead = sqlRowsPerRead)
Ponieważ już zdefiniowałeś parametry połączenia i inne parametry jako zmienne w przestrzeni roboczej R, możesz je ponownie wykorzystać do nowych źródeł danych reprezentujących różne tabele, widoki lub zapytania.
Note
Funkcja używa innych argumentów do definiowania źródła danych na podstawie całej tabeli niż do źródła danych opartego na zapytaniu. Wynika to z faktu, że silnik bazy danych SQL Server musi przygotowywać zapytania inaczej. Później w tym tutorialu nauczysz się, jak stworzyć obiekt źródła danych na podstawie zapytania SQL.
Ładuj dane do tabel SQL za pomocą R
Teraz, gdy utworzyłeś tabele SQL Server, możesz załadować do nich dane za pomocą odpowiedniej funkcji Rx.
Pakiet RevoScaleR zawiera funkcje specyficzne dla typów źródeł danych. Dla danych tekstowych użyj RxTextData do wygenerowania obiektu źródłowego danych. Istnieją dodatkowe funkcje do tworzenia obiektów źródłowych danych z danych Hadoop, danych ODBC i innych.
Note
W tej sekcji musisz mieć uprawnienia Execute DDL w bazie danych.
Załaduj dane do tabeli treningowej
Stwórz zmienną R, ccFraudCsv, i przypisz tej zmiennej ścieżkę do pliku CSV zawierającego przykładowe dane. Ten zbiór danych jest udostępniony w RevoScaleR. "sampleDataDir" to słowo kluczowe w funkcji rxGetOption .
ccFraudCsv <- file.path(rxGetOption("sampleDataDir"), "ccFraudSmall.csv")Zwróć uwagę na wywołanie rxGetOption, czyli metody GET powiązanej z rxOptions w RevoScaleR. Użyj tego narzędzia do ustawiania i listy opcji związanych z lokalnymi i zdalnymi kontekstami obliczeniowymi, takich jak domyślny katalog współdzielony lub liczba procesorów (rdzeni) do wykorzystania w obliczeniach.
To konkretne wywołanie pobiera próbki z właściwej biblioteki, niezależnie od tego, gdzie uruchamiasz kod. Na przykład spróbuj uruchomić tę funkcję na SQL Server i na komputerze deweloperskim, i zobacz, jak różnią się ścieżki.
Zdefiniuj zmienną do przechowywania nowych danych i użyj funkcji RxTextData , aby określić źródło danych tekstowych.
inTextData <- RxTextData(file = ccFraudCsv, colClasses = c( "custID" = "integer", "gender" = "integer", "state" = "integer", "cardholder" = "integer", "balance" = "integer", "numTrans" = "integer", "numIntlTrans" = "integer", "creditLine" = "integer", "fraudRisk" = "integer"))Argument colClasses jest ważny. Używasz go do wskazania typu danych, który przypisać każdej kolumnie danych załadowanej z pliku tekstowego. W tym przykładzie wszystkie kolumny są traktowane jako tekst, z wyjątkiem nazwanych kolumn, które są traktowane jako liczby całkowite.
W tym momencie warto na chwilę się zatrzymać i obejrzeć swoją bazę danych w SQL Server Management Studio. Odśwież listę tabel w bazie danych.
Widać, że chociaż obiekty danych R zostały utworzone w twojej lokalnej przestrzeni roboczej, tabele nie zostały utworzone w bazie SQL Server. Ponadto żadne dane nie zostały załadowane z pliku tekstowego do zmiennej R.
Wstaw dane, wywołując funkcję rxDataStep function.
rxDataStep(inData = inTextData, outFile = sqlFraudDS, overwrite = TRUE)Zakładając, że nie ma problemów z parametrami połączenia, po krótkiej chwili powinieneś zobaczyć wyniki podobne do tych:
Łączna liczba zapisanych wierszy: 10000, Łączny czas: 0,466Odczytane wiersze: 10000, Łączna liczba przetworzonych wierszy: 10000, Łączny czas fragmentu: 0,577 sekundy
Odśwież listę tabel. Aby zweryfikować, czy każda zmienna ma poprawne typy danych i została pomyślnie zaimportowana, możesz także kliknąć prawym przyciskiem myszy w tabeli w SQL Server Management Studio i wybrać Wybierz Top 1000 wierszy.
Załaduj dane do tabeli punktacji
Powtórz kroki, aby załadować zbiór danych użyty do punktacji do bazy danych.
Zacznij od podania ścieżki do pliku źródłowego.
ccScoreCsv <- file.path(rxGetOption("sampleDataDir"), "ccFraudScoreSmall.csv")Użyj funkcji RxTextData , aby pobrać dane i zapisać je w zmiennej inTextData.
inTextData <- RxTextData(file = ccScoreCsv, colClasses = c( "custID" = "integer", "gender" = "integer", "state" = "integer", "cardholder" = "integer", "balance" = "integer", "numTrans" = "integer", "numIntlTrans" = "integer", "creditLine" = "integer"))Wykonaj funkcję rxDataStep, aby nadpisać aktualną tabelę nowym schematem i danymi.
rxDataStep(inData = inTextData, sqlScoreDS, overwrite = TRUE)Argument inData definiuje źródło danych do wykorzystania.
Argument outFile określa tabelę w SQL Server, w której chcesz zapisać dane.
Jeśli tabela już istnieje i nie używasz opcji nadpisania , wyniki są wstawiane bez skracania.
Ponownie, jeśli połączenie się powiodło, powinieneś zobaczyć komunikat informujący o zakończeniu i czasie potrzebnym na zapisanie danych w tabeli:
Łączna liczba zapisanych wierszy: 10000, Łączny czas: 0,384Odczytane wiersze: 10000, Łączna liczba przetworzonych wierszy: 10000, Łączny czas fragmentu: 0,456 sekundy
Więcej o rxDataStep
rxDataStep to potężna funkcja, która może wykonywać wiele transformacji na ramce danych R. Możesz także użyć rxDataStep do konwersji danych na reprezentację wymaganą przez cel: w tym przypadku SQL Server.
Opcjonalnie możesz określić transformacje danych, używając funkcji R w argumentach do rxDataStep. Przykłady tych operacji przedstawiono później w tym samouczku.