27. května 2016

Power BI - R integrace

V dubnu 2015 Microsoft koupil společnost Revolution Analytics. Určitě se na tomto strategickém nákupu podepsal Josepsh Sirosh (v současnosti Corporate Vice President Data Group, v minulosti CTO Core Retail Amazonu, jeho vášní je Machine Learning a věnuje se oblasti Advanced Analytics od roku 1990). Nyní společnost Microsoft integruje R do svých různých nástrojů přes Azure ML, SQL Serveru a Power BI. V dnešním článku bych Vás rád uvedl do R, jak zapadá do MSFT platformy a ukázal možnosti R v Power BI.
Co je R?
Kromě toho, že  to je další písmeno (už v MSFT BI platformě máme M a R), se jedná o programovací jazyk a software pro statistické výpočtya analalýzu. Je velmi oblíbený mezi statistiky a data minery jak pro vývoj statistického softwaru, tak pro analýzu. Jedná se o imterpretovaný programovací jazyk (spouští příkazy příjmo bez předchozí kompilace). O R se můžete dočíst mimo jiné na https://www.r-project.org/
V R se dá pracovat s libovolnými daty, která jdou popsat matematicky. No a zeptejte se matematiků, co jde matematicky popsat :) Prakticky vše. Proto se R dá kromě svého jádra rozšiřovat o různé balíčky, které poskytují možnosti nakládat s určitou oblastí dat. Napřílad vizualizace, zpracování obrazu, zvuku, statistické moduly. R i rozšiřující balíčky se dají stáhnout z CRAN pro CZ http://mirrors.nic.cz/R/ Na R projektu najdete také manuály https://cran.r-project.org/manuals.html. R je open source a i vy se můžete podílet na vývoji tohoto jazyku.
Revolution Analytics a R
R vzniklo jako jazyk pro analýzu dat na desktopu, načtete data do paměti a zpracováváte jedním jádrem procesoru. Což je pro jednoduchou statistiku dostačující. Pro analýzu velkých objemů dat je ale jedno jádro a paměť jednoho PC dost omezující. Společnost Revolution Analytics povýšila R na Enterprise nástroj a umožnila analýzu nad Hadoopem a Enterprise Data Warehouse platformami od největších hráčů na trhu, který je škálovatelný a umí využít možnosti těchto strojů.
MSFT a R
A poté Microsoft Revolution Analytics koupil. Takže i konkurenční platformy využívající R vlastně musí použít chtě nechtě produkt Microsoftu. Jaké jsou aktuálně produkty MSFT spojené s R?
Microsoft R Server
  • dříve známý jako Revolution R for Enterprise
  • dostupný na Linux i Windows
  • Specializované konektory pro SQL Server, Hadoop, Oracle, Teradata...
Azure ML
  • používá R interně
SQL Server
  • volání R zevnitř SQL Serveru (v využitím paměti serveru a více jader) přes uloženou proceduru
Power BI
Power BI a R
V Power BI můžeme R použít dvěmi způsoby. Buď jako zdroj, že data načteme ne tradičním konektorem, ale právě prostřednictvím R. Po cestě můžeme použít veškeré matematické a transformační možnosti jazyka. Na počítači, kde máte Power BI Desktop musíte mít R naistalované bokem od Power BI desktopu. Power BI Desktop v sobě samotném R engine nemá. Pokud byste chtěli data aktualizovat, musíte mít R naistalovanou Personal Gateway na stejném PC jako R.
R jako zdroj dat
V dialogu get data můžete vybrat mezi další R Script. Uživatelské rozhraní je pouze okénko bez intellisense, kam se tak akorát hodí vložit skript, který jste dříve napsali a odladili v RStudiu (https://www.rstudio.com/ což je IDE pro R podobně jako Management Studio pro SQL Server).
Skript načítající data z csv souboru by vypadal následovně.
BikeData <- read.csv('C:/Users/neoraj01/Desktop/Study/Learning R/Dan/BikeData.csv')
Lomítka jsou „Linux style“
R vizualizace
Protože matematicky se dá popsat i spousta grafů a objektů obecně, další co můžeme v Power BI použít jsou právě R vizualizace. Data můžete načíst klasicky SQL Dotazem, případně vyklikat přes Power Query. Já jsem si například napsal dotaz nad AdventureWorksDW2012, který vrátí prodeje za jednotlivé měsíce vždy k prvnímu dni v měsíci
SELECT
OrderDate = datefromparts(Orderdatekey/10000,OrderDateKey%10000/100,1)
,Sales = sum(f.salesamount)
FROM dbo.FactInternetSales f
GROUP BY
datefromparts(Orderdatekey/10000,OrderDateKey%10000/100,1)
order by 1

Při vložení R vizualizace jsem zaškrtnul pole Sales a Order Date. Dole se zobrazí lišta s R script editorem.
Šedě podbarvená je předvyplněná část, která tvoří data.frame (v podstatě tabulku), kde data deduplikuje. Bíle podbarvené je to co jsem napsal já. Definuji vektory x a y pro vykreslení na osách. Funkce plot mi vykreslí graf. Funkce abline proloží přímkou popsanou lineárním modelem závislosti y na x. Barva červená.
Jak dlouho mi to trvalo dostat se až do tohoto stavu? Cca hodinu, je graf pěkný? Ani ne, ale začátek je vždycky nejhorší :) Když už víte, co tam přesně napsat, je to docela pohoda.
Další graf za použití knihovny ggplot2. R skript nad demo datasetem Iris (kytičky)
Graf
Závěr

R je pro mě něco nového, nemám s ním předchozí zkušenost. Jedná se ale určitě o velmi zajímavou oblast, která mi dává smysl studovat. Zvlášť pokud chcete rozkrýt souvislosti na první pohled nezřejmé, věnovat se predikcím budoucího vývoje. Graf mi sice trval získat hodinu, ale už teď vidím možnosti, že právě predikce do budoucna by se nad datasetem udělat dala. Jen vědět, co napsat do R skriptu. K samotné analýze by stačilo RStudio, ale pokud bychom se chtěli podělit s ostatními. Power BI ja jako způsob dobrý kandidát. Teď se jen naučit jeden nový jazyk a to na čem je postaven (matematika, statistika). Z pohledu integrace R do produktů společnosti Microsoft se určitě jedná o zcela zásadní strategický nákup a osobně se těším na další objevitelské putování.

3 komentáře:

  1. Díky za článek, který pro běžné smrtelníky mimo jiné hezky vysvětluje, jaký je rozdíl mezi Rkem a Microsoft R Open (Revolution Analytics). Často se setkávám totiž s názorem, že Rko je Microsoftím produktem, tak bych si jen dovolil připomenout, že tomu tak není - klasické Rko je open source.
    Co se týče času potřebného pro vytvoření Rkového grafu v Power BI, těm, co s Rkem dělají běžně, trvá pár minut, ostatním doporučuji najít analytika, který jim s těmito grafy pomůže nebo nastudovat některou z mnoha návodných knih. Za tu námahu to stojí - v Rku se dá totiž udělat prakticky jakákoliv vizualizace.
    Leoš

    OdpovědětVymazat
  2. Díky Leoši,
    taky mi to za to stojí, tak budu ve volném čase studovat, ať mi to poté trvá kratší dobu :)

    Jirka

    OdpovědětVymazat
  3. Hi, Great.. Tutorial is just awesome..It is really helpful for a newbie like me.. I am a regular follower of your blog. Really very informative post you shared here. Kindly keep blogging. If anyone wants to become a .Net developer learn from Dot Net Training in Chennai. or learn thru ASP.NET Essential Training Online . Nowadays Dot Net has tons of job opportunities on various vertical industry.
    or Javascript Training in Chennai. Nowadays JavaScript has tons of job opportunities on various vertical industry.

    OdpovědětVymazat