Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro: SQL Server 2016 (13.x) a novější verze
V této části průvodce se naučíte techniky generování grafů a map pomocí R s daty SQL Server. Vytvoříte jednoduchý histogram a pak vytvoříte složitější mapový graf.
Předpoklady
Tento krok předpokládá probíhající relaci R na základě předchozích kroků v tomto návodu. Používá připojovací řetězce a objekty zdroje dat vytvořené v těchto krocích. Ke spuštění skriptu se používají následující nástroje a balíčky.
- Rgui.exe ke spuštění příkazů jazyka R
- Management Studio pro spuštění T-SQL
- googMap
- Balíček GGMAP
- balíček mapproj
Vytvoření histogramu
Vygenerujte první graf pomocí funkce rxHistogram . Funkce rxHistogram poskytuje funkce podobné té v open-source R balíčcích, ale může běžet i v kontextu vzdáleného vykonávání operací.
# Plot fare amount on SQL Server and return the plot start.time <- proc.time() rxHistogram(~fare_amount, data = inDataSource, title = "Fare Amount Histogram") used.time <- proc.time() - start.time print(paste("It takes CPU Time=", round(used.time[1]+used.time[2],2), " seconds, Elapsed Time=", round(used.time[3],2), " seconds to generate plot.", sep=""))Obraz se vrací do grafického zařízení R pro vaše vývojové prostředí. Například v RStudio klikněte na okno Plot . V R Tools for Visual Studio se otevře samostatné grafické okno.
Note
Vypadá tvůj graf jinak?
To proto, že inDataSource používá pouze 1000 nejhorních řádků. Pořadí řádků pomocí TOP je nedeterministické bez klauzule ORDER BY, takže se očekává, že data a výsledný graf se mohou lišit. Tento konkrétní obrázek byl vytvořen z přibližně 10 000 řádků dat. Doporučujeme experimentovat s různými počty řádků, abyste získali různé grafy, a zaznamenávat si, jak dlouho trvá vrátit výsledky ve vašem prostředí.
Vytvořte mapový graf
Obvykle databázové servery blokují přístup k internetu. To může být nepohodlné při používání R balíčků, které potřebují stahovat mapy nebo jiné obrázky pro generování grafů. Existuje však řešení, které by vám mohlo pomoci při vývoji vlastních aplikací. V podstatě vygenerujete reprezentaci mapy na klientovi a pak na mapu překryjete body, které jsou uloženy jako atributy v tabulce SQL Server.
Definujte funkci, která vytváří objekt R plot. Vlastní funkce mapPlot vytváří rozptylový graf, který využívá místa vyzvednutí taxíků a zobrazuje počet jízd, které z každého místa začaly. Používá balíčky ggplot2 a ggmap , které by měly být již nainstalované a načtené.
mapPlot <- function(inDataSource, googMap){ library(ggmap) library(mapproj) ds <- rxImport(inDataSource) p <- ggmap(googMap)+ geom_point(aes(x = pickup_longitude, y =pickup_latitude ), data=ds, alpha =.5, color="darkred", size = 1.5) return(list(myplot=p)) }- Funkce mapPlot bere dva argumenty: existující datový objekt, který jste dříve definovali pomocí RxSqlServerData, a reprezentaci mapy předávanou klientem.
- V řádku začínajícím proměnnou ds se rxImport používá k načtení dat do paměti z dříve vytvořeného zdroje, inDataSource. (Tento zdroj dat obsahuje pouze 1000 řádků; pokud chcete vytvořit mapu s více datovými body, můžete ji nahradit jiným zdrojem.)
- Kdykoli používáte open-source R funkce, data musí být načtena do datových rámců v lokální paměti. Nicméně voláním funkce rxImport můžete běžet v paměti vzdáleného výpočetního kontextu.
Změňte výpočetní kontext na lokální a načtěte knihovny potřebné pro tvorbu map.
rxSetComputeContext("local") library(ggmap) library(mapproj) gc <- geocode("Times Square", source = "google") googMap <- get_googlemap(center = as.numeric(gc), zoom = 12, maptype = 'roadmap', color = 'color');Proměnná
gcuchovává sadu souřadnic pro Times Square, NY.Řádek začínající na
googmapvygeneruje mapu se zadanými souřadnicemi uprostřed.
Přepněte na výpočetní kontext SQL Server a vykreslte výsledky zabalením funkce grafu do rxExec, jak je zde znázorněno. Funkce rxExec je součástí balíčku RevoScaleR a podporuje provádění libovolných R funkcí v kontextu vzdáleného výpočtu.
rxSetComputeContext(sqlcc) myplots <- rxExec(mapPlot, inDataSource, googMap, timesToRun = 1) plot(myplots[[1]][["myplot"]]);Mapová data v
googMapjsou předána jako argument funkci mapPlot spouštěné vzdáleně. Protože mapy byly generovány ve vašem lokálním prostředí, musí být předány funkci, aby bylo možné vytvořit graf v kontextu SQL Server.Když se spustí řádek začínající na ,
plotvykreslená data jsou serializována zpět do lokálního prostředí R, abyste je mohli zobrazit ve svém R klientovi.
Note
Pokud používáte SQL Server ve Azure virtuálním stroji, můžete v tuto chvíli dostat chybu. Chyba nastává, když výchozí pravidlo firewallu v Azure blokuje přístup do sítě pomocí R kódu. Podrobnosti o opravě této chyby najdete v článku Instalace služeb Machine Learning (R) na Azure VM.
Následující obrázek ukazuje výstupní graf. Místa pro vyzvednutí taxíků jsou na mapě přidána jako červené tečky. Váš obrázek může vypadat jinak v závislosti na tom, kolik míst je ve zdroji dat, který jste použili.