Obliczanie statystyk podsumowujących w R (samouczek SQL Server i RevoScaleR)

Dotyczy: SQL Server 2016 (13.x) i nowsze wersje

To jest piąty samouczek z serii RevoScaleR, jak korzystać z funkcji RevoScaleR z SQL Server.

Ten samouczek wykorzystuje ustalone źródła danych i konteksty obliczeniowe stworzone w poprzednich tutorialach do uruchamiania zaawansowanych skryptów R. W tym samouczku wykorzystasz lokalne i zdalne konteksty obliczeniowe serwera do następujących zadań:

  • Zmień kontekst obliczeniowy na SQL Server
  • Uzyskaj podsumowanie statystyk dotyczących zdalnych obiektów danych
  • Obliczaj lokalne podsumowanie

Jeśli ukończyłeś poprzednie tutoriale, powinieneś mieć te zdalne konteksty obliczeniowe: sqlCompute i sqlComputeTrace. Od tej pory w kolejnych samouczkach będziesz używać sqlCompute oraz lokalnego kontekstu obliczeniowego.

Użyj R IDE lub Rgui , aby uruchomić skrypt R w tym tutorialu.

Oblicz statystyki podsumowania danych zdalnych

Zanim będziesz mógł uruchomić jakikolwiek kod R zdalnie, musisz określić zdalny kontekst obliczeniowy. Wszystkie kolejne obliczenia odbywają się na komputerze SQL Server określonym w parametrze sqlCompute.

Kontekst obliczeniowy pozostaje aktywny, dopóki go nie zmienisz. Jednak wszelkie skrypty R, które nie mogą działać w kontekście zdalnego serwera, będą działać automatycznie lokalnie.

Aby zobaczyć, jak działa kontekst obliczeniowy, wygeneruj podsumowanie statystyk ze źródła danych sqlFraudDS na zdalnym SQL Server. Ten obiekt źródłowy został utworzony w drugim samouczku i reprezentuje tabelę ccFraudSmall w bazie danych RevoDeepDive.

  1. Zmień kontekst obliczeniowy na sqlCompute utworzony w poprzednim samouczku:

    rxSetComputeContext(sqlCompute)
    
  2. Wywołaj funkcję rxSummary i przekaż wymagane argumenty, takie jak wzór i źródło danych, i przypisz wyniki zmiennej sumOut.

    sumOut <- rxSummary(formula = ~gender + balance + numTrans + numIntlTrans + creditLine, data = sqlFraudDS)
    

    Język R oferuje wiele funkcji podsumowujących, ale rxSummary w RevoScaleR obsługuje wykonywanie w różnych zdalnych kontekstach obliczeniowych, w tym w SQL Server. Informacje o podobnych funkcjach można znaleźć w podsumowaniach danych z użyciem RevoScaleR.

  3. Wydrukuj zawartość sumOut na konsoli.

    sumOut
    

    Note

    Jeśli pojawi się błąd, poczekaj kilka minut na zakończenie wykonania przed ponowną próbą wykonania polecenia.

Results

Summary Statistics Results for: ~gender + balance + numTrans + numIntlTrans + creditLine
Data: sqlFraudDS (RxSqlServerData Data Source)
Number of valid observations: 10000

 Name  Mean    StdDev  Min Max ValidObs    MissingObs
 balance       4075.0318 3926.558714            0   25626 100000
 numTrans        29.1061   26.619923 0     100 10000    0           100000
 numIntlTrans     4.0868    8.726757 0      60 10000    0           100000
 creditLine       9.1856    9.870364 1      75 10000    0          100000
 
 Category Counts for gender
 Number of categories: 2
 Number of valid observations: 10000
 Number of missing observations: 0

 gender Counts
  Male   6154
  Female 3846

Stwórz lokalne podsumowanie

  1. Zmień kontekst obliczeniowy, aby całą pracę wykonywał lokalnie.

    rxSetComputeContext ("local")
    
  2. Podczas wyodrębniania danych z SQL Server często można uzyskać lepszą wydajność, zwiększając liczbę wierszy wyodrębnianych dla każdego odczytu, zakładając, że większy rozmiar bloku można pomieścić w pamięci. Wykonaj następujące polecenie, aby zwiększyć wartość parametru rowsPerRead na źródle danych. Wcześniej, wartość rowsPerRead była ustawiona na 5000.

    sqlServerDS1 <- RxSqlServerData(
       connectionString = sqlConnString,
       table = sqlFraudTable,
       colInfo = ccColInfo,
       rowsPerRead = 10000)
    
  3. Wywołaj rxSummary dla nowego źródła danych.

    rxSummary(formula = ~gender + balance + numTrans + numIntlTrans + creditLine, data = sqlServerDS1)
    

    Rzeczywiste wyniki powinny być takie same jak przy uruchamianiu rxSummary w kontekście komputera SQL Server. Jednak operacja może być szybsza lub wolniejsza. Wiele zależy od połączenia z bazą danych, ponieważ dane są przesyłane do lokalnego komputera do analizy.

  4. Przełącz się z powrotem do kontekstu zdalnego środowiska obliczeniowego na potrzeby kolejnych samouczków.

    rxSetComputeContext(sqlCompute)
    

Następny krok