Loading…

READY TO DEAL WITH YOUR DATA?

Get some tips on how to do that!
Start exploring

Power BI – pierwsze zabawy z R

Miałem ostatnio przyjemność w ramach konferencji SQLDay Lite 2015 prowadzić całodniowy warsztat poświęcony nowym technologiom Microsoft z obszarów BI i Big Data. Wiodącymi technologiami w moich demonstracjach były Power BI i wsparcie dla języka R w SQL Server 2016.

Przyznaję otwarcie, że zarówno Power BI, są ostatnio w kręgu moich zainteresowań technologią (oprócz oczywistego zainteresowania platformą SQL Server). Pomyślałem, że warto byłoby napisać kilka słów o moich zmaganiach z połączeniem R i Power BI.

Najnowsza wersja aplikacji Power BI Desktop (listopadowa) daje możliwość podłączania skryptów R jako źródeł danych. Oznacza to, że użytkownik znający język R może generować zestawy danych poprzez tworzenie obiektów data frame.

Przygotowanie do demo

Aby móc korzystać z duetu Power BI Desktop + R, wypada zainstalować następujące komponenty:

Demo

Jeden z przykładów zastosowania języka R, jaki pokazałem na SQLDay Lite, dotyczył prognozowania cen akcji firmy Microsoft przy użyciu algorytmu szeregów czasowych (metoda ARIMA). Dane wejściowe pobrałem w formie pliku CSV ze strony Yahoo Finance: http://finance.yahoo.com/q/hp?s=MSFT&a=01&b=1&c=2010&d=10&e=24&f=2015&g=m. Dane reprezentują historyczne ceny akcji począwszy od lutego 2010 (data dostępności Azure) do dnia bieżącego. Jak dokonać wizualizacji danych historycznych i prognozy na najbliższe 12 miesięcy? Po kolei.

Uruchamiamy Power BI Desktop, klikamy Pobierz Dane i z dostępnej listy źródeł danych wybieramy R Script (Beta).

image

Skrypt R do generowania zestawów danych, wygląda tak:

library(forecast);
msft <- read.csv("C:\\Temp\\MSFTStock.csv", header=T);
msft.ts <- ts(rev(msft[,5]), start=c(2010, 2), freq=12);
microsoft <- data.frame(closing = msft.ts);
microsoft.stl <- stl(microsoft$closing, s.window="periodic");
microsoft.f <- forecast(microsoft.stl, method="arima", h=12);
months <- seq(as.Date("2015/12/1"), by = "month", length.out = 12);
fcst <- data.frame(months, microsoft.f);
output1 <- data.frame(msft$Date, msft$Close);
colnames(output1) = c("Date", "Close");
output1["History or Forecast"] = "History";
output2 <- data.frame(fcst$months, fcst$Point.Forecast);
colnames(output2) = c("Date", "Close");
output2["History or Forecast"] = "Forecast";
output <- rbind(output2, output1);

Powyższy skrypt pobiera dane z pliku CSV (plik ma nagłówki kolumn), z kolumny przechowującej ceny z momentu zamknięcia sesji (piąta kolumna z kolei w zbiorze) tworzy szereg czasowy (z okresowością 12 miesięcy), dokonuje dekompozycji powstałego szeregu czasowego (metoda STL), by na koniec dokonać prognozy (forecast). Końcowe linie kodu to kosmetyka prowadząca do wyprodukowania finalnego zbioru danych o nazwie output. Zbiór ten zawiera dane historyczne (kolumna History or Forecast = History) oraz prognozowane (kolumna History or Forecast = Forecast).

W oknie Nawigator wybieramy tabelę output i klikamy Załaduj.

image

Do prezentacji danych można wykorzystać wykres warstwowy:

image

Lub wykres liniowy i kolumnowy skumulowany:

image

Różnicę widać gołym okiem – na wykresie warstwowym będzie widoczna przerwa między danymi historycznymi a prognozą.

Pobierz pliki demo – źródłowy .csv i plik .pbix dla aplikacji Power BI Desktop (44 KB)

Podsumowanie

Skrypty R jako źródła danych dają ogromne możliwości w pracy z danymi. Mnogość dostępnych bibliotek z szeroką gamą algorytmów statystycznych daje dużą swobodę w operowaniu danymi. Oczywiście, wymagane są dodatkowe umiejętności – znajomość języka R oraz stosowanych algorytmów. Jest się czego uczyć (w moim przypadku) :-)

Przydałoby się jeszcze, by można było w Power BI Desktop generować za pomocą skryptów R wizualizacje danych, ponieważ R słynie z tego, że umożliwia tworzenie ciekawych wykresów i nietuzinkowych prezentacji danych. Zresztą, społeczność nie śpi i dostrzega tę potrzebę: http://community.powerbi.com/t5/Best-Visual-Contest/PowerBI-and-R-ggplot2-based-graphics-integration/cns-p/7732. Oczywiście, można do generowania takich wizualizacji użyć usług R w SQL Server 2016 (CTP3) i prezentować powstałe wizualizacje za pomocą Reporting Services. Być może jeden z moich kolejnych wpisów będzie właśnie na ten temat :-)

Dajcie znać, jeśli uda Wam się coś ciekawego zamodelować i zwizualizować duetem Power BI + R. Potencjał jest moim zdaniem ogromny.

Leave a Reply