Výpočet souhrnných statistik v R (tutoriál pro SQL Server a RevoScaleR)

platí pro: SQL Server 2016 (13.x) a novější verze

Toto je 5. tutoriál ze série RevoScaleR o tom, jak používat funkce RevoScaleR se SQL Server.

Tento tutoriál využívá zavedené datové zdroje a výpočetní kontexty vytvořené v předchozích tutoriálech k provozu výkonných R skriptů. V tomto tutoriálu budete používat lokální a vzdálené serverové výpočetní kontexty pro následující úkoly:

  • Přepněte výpočetní kontext na SQL Server
  • Získejte souhrnné statistiky o vzdálených datových objektech
  • Vypočíte lokální shrnutí

Pokud jste dokončili předchozí tutoriály, měli byste mít tyto vzdálené výpočetní kontexty: sqlCompute a sqlComputeTrace. Do budoucna budete používat will sqlCompute a lokální výpočetní kontext v dalších tutoriálech.

Použijte R IDE nebo RGUI pro spuštění R skriptu v tomto tutoriálu.

Vypočítejte souhrnné statistiky na vzdálených datech

Než můžete vzdáleně spustit jakýkoli R kód, musíte specifikovat vzdálený výpočetní kontext. Všechny následující výpočty probíhají na počítači SQL Server specifikovaném v parametru sqlCompute.

Výpočetní kontext zůstává aktivní, dokud ho nezměníte. Nicméně všechny R skripty, které nemohou běžet v kontextu vzdáleného serveru, se automaticky spustí lokálně.

Chcete-li zjistit, jak výpočetní kontext funguje, vygenerujte souhrnné statistiky na zdroji dat sqlFraudDS na vzdáleném SQL Server. Tento objekt datového zdroje byl vytvořen v tutoriálu dva a představuje tabulku ccFraudSmall v databázi RevoDeepDive.

  1. Přepněte výpočetní kontext na sqlCompute vytvořený v předchozím tutoriálu:

    rxSetComputeContext(sqlCompute)
    
  2. Zavolejte funkci rxSummary a předejte požadované argumenty, jako je vzorec a datový zdroj, a přiřaďte výsledky proměnné sumOut.

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

    Jazyk R poskytuje mnoho souhrnných funkcí, ale rxSummary v RevoScaleR podporuje provádění v různých vzdálených výpočetních kontextech, včetně SQL Server. Pro informace o podobných funkcích viz Data summaries using RevoScaleR.

  3. Vytiskněte obsah sumOut do konzole.

    sumOut
    

    Poznámka:

    Pokud se zobrazí chyba, počkejte několik minut, než se provádění dokončí, a teprve poté příkaz spusťte znovu.

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

Vytvořte místní shrnutí

  1. Změňte výpočetní kontext tak, abyste veškerou práci dělali lokálně.

    rxSetComputeContext ("local")
    
  2. Při extrakci dat z SQL Serveru můžete často dosáhnout lepšího výkonu zvýšením počtu řádků načítaných při každém čtení, za předpokladu, že se zvětšená velikost bloku vejde do paměti. Spusť následující příkaz pro zvýšení hodnoty parametru rowsPerRead na datovém zdroji. Dříve byla hodnota rowsPerRead nastavena na 5000.

    sqlServerDS1 <- RxSqlServerData(
       connectionString = sqlConnString,
       table = sqlFraudTable,
       colInfo = ccColInfo,
       rowsPerRead = 10000)
    
  3. Zavolejte metodu rxSummary u nového zdroje dat.

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

    Skutečné výsledky by měly být stejné jako při spuštění rxSummary v kontextu počítače SQL Server. Operace však může být rychlejší nebo pomalejší. Hodně záleží na připojení k databázi, protože data jsou přenášena na váš lokální počítač k analýze.

  4. Přepněte zpět na vzdálený výpočetní kontext pro několik dalších tutoriálů.

    rxSetComputeContext(sqlCompute)
    

Další krok