30. července 2015

PowerBI desktop

V průběhu března jsem Vás informoval o dostupnosti komunitního preview pro veřejnost aplikace Power BI designer. Jedná se o deseigner PowerBI vše v jednom nezávislý na MS Office. Článek jsem psal zde: http://www.neoral.cz/2015/05/powerbi-nove-generace.html  V pátek 24.7.2015 jsme se dočkali „ostré verze“. PowerBI designer se nám přejmenoval na PowerBI Desktop. Změna názvu naštěstí není změnou jedinou. Výrazně se posunuly i funkce. Je PowerBI Desktop produkčně použitelný? Spoiler na začátek. Podle mě ano.
PowerBI Desktop můžete stáhnout z webu www.powerbi.com Zde po registraci, také máte k dispozici portálové řešení s datasety, reporty a dashboardy. Mezi položkami ke stažení přibyla nová verze PowerBI Gateway pro propojení on premise prostředí s portálem. Také jsou již k dispozici mobilní aplikace na platformy Windows, Android i iOS. Někteří možná ocení, že PowerBI desktop je dostupný v 42 jazycích včetně češtiny a slovenštiny.
Novinky v načítání dat
Načítání dat probíhá stále ala PowerQuery. PowerBI Desktop obsahuje konektory, které PowerQuery v sobě zatím nemá. Například Google Analytics, CRM Online, Git Hub, Zendesk a další. Přibyly některé nové transformace. Extrakce z textu od začátku, konce či z prostředku textu. U transformace Merge dotazů je možno definovat typ Joinu. 
Novinky v oblasti modelování
Od května můžeme přidávat DAX measures na agregované úrovni a DAX počítané sloupce. V nové verzi bylo překopáno diagramové zobrazení a zobrazení mřížky. Zobrazení mřížky (data view) obsahuje vyhledávač sloupců, sloupce lze skrýt ze zobrazení reportu. Zde mi malinko chybí možnost vybrat více sloupců zároveň a hromadně je skrýt. Zatím musíme po jednom (což je u 30ti sloupců otrava). Také by se hodila možnost vypnout automatickou sumu u číselných sloupců (jako jsou roky, či klíče). V reportu suma vypnout jde. V diagramovém zobrazení jdou zatím dělat pouze relace.
Novinky v oblasti vizualizace
Zde je novinek nejvíce a u některých skáču hlavou ke stropu s jásavým voláním „konečně“. To co nešlo a chybělo v PowerView, PowerBI desktop umí. Můžeme konečně uživatelsky měnit popisky grafů, map a dalších grafických prvků (Částka by město nevypadalo úplně dobře). V grafech, mapách atd můžeme měnit barvy (přece jen u dema s volbami modří komunisté vypadali taky trochu divně :) Celkově se rozšířily fomátovací možnosti lištou po pravé straně. Náhled designeru si můžete prohlédnout na obrázku analýzy návštěvnosti článků načtených z mého blogu přes Google analytics konektor. Dále přibyly nové typy grafů a datových regionů (Area chart, Waterfall, Donut, Matrix). Do reportů jdou vkládat vlastní textová pole a obrázky. Přibyla podpora pro hyperlinky.

Obecná vylepšení
Tlačítko zpět a vpřed se hodí i v jiných aplikacích. Designer si pamatuje poslední otevřené soubory a přímo z PowerBI Desktop můžeme publikovat hotové reporty do PowerBI.com. První vlaštovkou možnosti nasazení do on premise prostředí je Pyramid Server (Pyramid Analytics). Po publikaci do PowerBI.com se report objeví mezi reporty a můžete si vybrané prvky „přišpendlit“ na dahsboard. Zde je možno ukotvit i výsledky funkce otázky a odpovědi. PowerBI a jeho otázky a odpovědi budou podporovány v rámci Cortana Analytics (http://www.microsoft.com/en-us/server-cloud/cortana-analytics-suite/overview.aspx) tudíž se ve Windows 10 můžeme těšit i na hlasové rozpoznávání v rámci této funkce :) Aplikace pro mobily je taky poměrně příjemná a automatické aktualizace na webu PowerBI.com funkční bez dramatického nastavování. Nyní můžu sledovat návštěvnost Blogu (a mnohé další věci) s denní aktualizací na svém mobilu s Androidem a byl jsem mile překvapen jednoduchostí. To vše zdarma.
Slovo závěrem

Měsíční update PowerBI Desktopu považuji za stěžejní. Došlo k překlenutí mezi fází: „Je to dobré na hraní“ do fáze „Dá se to používat“. Kompletní seznam novinek v kontextu „Tak jde čas“ si můžete prohlédnout zde https://support.powerbi.com/knowledgebase/articles/489224-what-s-new-in-the-latest-power-bi-desktop-update Pár věcí sice ještě chybí (nenašel jsem například 2 osy v grafech), ale pokud Microsoft udrží tempo jakým produkt rozšiřuje, bude to příjemné :) Možná i časem vyměním Reporting Services. PowerView jsem už vyměnil určitě. Takže doporučuji nainstalovat a zkoušet :) 

24. července 2015

Úvod do Azure Machine Learning

Součástí Analytických služeb SQL Serveru je již po několik verzí Data Mining (od 2000). Azure Machine Learning je na druhou stranu pro veřejnost poměrně nová záležitost (z preview verze se překlenulo na začátku roku 2015). Nabízí se tedy několik otázek. Jaký je vlastně rozdíl mezi Data Miningem a Machine Learningem. Není Azure Machine Learning jen nový marketingový název pro starý Data Mining převlečený do Azure? K čemu by tahle technologie mohla být dobrá a bude mi k něčemu i když nejsem datový věděc?
Na začátek definice obou pojmů
Data Mining (DM)
Data Mining je pokročilá statistická analýza dat, která zkoumá historická data za účelem objevení korelací a vazeb mezi daty.
Data Miningová funkčnost je součástí analytických služeb SQL Serveru. Tedy pro tvorbu řešení budete potřebovat SSAS, Visual Studio pro design řešení a Management Studio pro psaní DMX (Data Mining eXtensions)
Machine Learning (ML)
Machine Learning je definován jako technologie, které používá prediktivní modely, které se učí z dat za účelem předvídat budoucí chování, výstupy, trendy. Jiná definice by mohla znít, že se jedná o: “Počítačové systémy, které se stávají chytřejší na základě předchozí zkušenosti.” Kde zkušenost může být brána z historických dat, nebo lidských vstupů.
Rozdílem v definici mezi DM a ML tedy je, že ML se systém může učit z předchozí zkušenosti. Hranice mezi tím, co je DM a ML je ale tenká :)
Kde se ML používá a jaké jsou scénáře použití
·        Prodej a marketing
o   forecasting prodejů
o   forecasting poptávky
o   cílená reklama
·        Finance a risk management
·        Segmentace zákazníků
·        Doporučení zboží
·        Fraud detection (odhalování podvodů)
·        Předpověd počasí
·        Analýza lidské řeči
o   sentiment analýza spokojenosti zákazníků
o   detekece SPAMu
·        a další.
Azure ML klíčové vlastnosti
Azure Machine learning je služba v MS Azure. Oproti SQL Server Data Miningu nebudeme potřebovat SQL Server, stačí nám Azure Subscription a libovolný internetový prohlížeč. Při tvorbě řešení se začíná tvorbou Machine Learning Workspace v Azure Portálu https://manage.windowsazure.com/ Když ML Workspace hotov, můžeme se přihlásit do ML Studia, které najdeme na adrese https://studio.azureml.net Zde se tvoří Experimenty. Experiment můžeme tvořit nad demo daty, nebo daty vlastními. Data můžeme importovat jako csv, textový soubor, načíst z databáze, nebo jiných podporovaných zdrojů. Proces analýzy dat máme možnost ovlivnit od začátku do konce transformacemi, nebo i vlastními skripty (R nebo Python). Experiment se dá vypublikovat jako webová služba a k této můžeme přistupovat z externích aplikací.
Tvorba experimentu
Když klikneme na velké plusko, vyskočí na nás možnost tvořit Experimenty, Datasety, Moduly. Když se podíváme na Experimenty je tu solidní základna ukázek. Najdeme zde například aplikace jako je sentiment analýza tweetů (o sentiment analýze přes PowerBI jsem psal zde http://www.neoral.cz/2015/06/sentiment-analyza-pres-powerbi.html), příklady z analýzy retailu, fraud detection, doporučení restaurací, filmů a mnohé další. Pokud by Vám pro inspiraci nestačily ukázky od Microsoftu, můžete kouknout do galerie na tvorbu komunity https://gallery.azureml.net/ Pro milovníky vína je zde například „Wine quality predictor“ Takže až při dlouhých teplých letních večerech nebudete vědět co dělat, můžete se věnovat Machine Learningu :)
Když zvolíme prázdný experiment, tvorba experimentu připomíná SQL Server Integration Services. Do prázdné plochy experimentu můžeme drag & drop  přetahovat datasety, transformace, moduly a tyto mezi sebou spojovat a konfigurovat.
Na závěr jde vypublikovat experiment jako webovou službu s vstupními a výstupními parametry. Webovou službu poté může volat aplikace a tímto ML využívat.
Experiment “Movie recommender”
Zde stručně textově popisuji proces, který taktéž můžete shlédnout na videu https://youtu.be/5AAxrjbVtCg

Ve vyhledávači můžeme najít zdrojový dataset Movie ratings, který obsahuje 4 sloupce UserID, MovieID, Rating a Timestamp. Už nyní by se dalo jít na transformaci Project Columns, kde vybereme jen relevantní sloupce UserID, MovieID a Rating, které očekává Train Matchbox Recommender. Dalo by se ale dohledat i název filmu z druhého datasetu IMDB Movie Titles přes „Join“. Transformace Split rozdělí dataset na část pro trénování a část pro testování přesnosti, aby se ML mohl učit. Score Matchbox Recomender slouží k samotnému doporučení. Zde se dá zvolit kolik filmů chceme minimálně  a maximálně doporučit.

Závěr
Machine Learning posouvá hranice a hlavně dostupnost analýzy zase o něco dál. Jako největší přednosti Machine Learningu spatřuji. Nenáročnost – jediné co potřebujete pro tvorbu jsou Azure subscription a internetový prohlížeč. Rozšiřitelnost – můžete vystačit s “klikacími” komponentami, ale můžete psát pro analýzy dat vlastní skripty. Svůj výtvor můžete vystavit jako webovou službu a tuto volat z aplikace. Tedy pokud jste datový věděc, umíte psát R skripty a vytvořit řešení , které bude užitečné pro širší spektrum lidí. Vystavte svůj výtvor a vydělejte na něm peníze. Nejste datový věděc? Přesto můžete používat výtvory jiných. To dělá z Machine Learningu technologii pro všechny.
Další zdroje informací

7. července 2015

MDX tutorial 4 – Aplikace MDX v SSRS

V minulých dílech tutorialu jsme si ukázali, jak si napsat svůj vlastní MDX dotaz. Stejně tak jsme si ukázali, jak pracovat s funkcí currentmember a tvořit vlastní počítané členy (článek: http://www.neoral.cz/2015/05/mdx-tutorial-3-pocitane-cleny.html). Aby naše snažení přineslo i nějaké hmatatelné ovoce, ukažme si jak vlastní dotaz dostat do reportu v SSRS (SQL Server Reporting Services). Některé věci je lepší jednou ukázat, než se snažit psát dlouhé popisy. Tvorba reportu je jednou z nich. Celý proces jsem zaznamenal se slovním komentářem a můžete jej sledovat zde https://youtu.be/RFX84weMqA8.

Video není jen o MDX, ale ukazuji i pár tipů a triků pro práci s parametry v Reporting Services. Při nahrávání jsem zapomněl namapovat do hlavního dotazu parametr SUBCATEGORY. Princip je stejný jako u parametru CATEGORY a nedostatek jsem napravil alespoň v textu článku.
Pojďme tedy tvořit report z kostky. Výsledkem našeho snažení bude report analýzy prodejů v čase s parametry Kategorie a Podkategorie produktů.
Co budeme potřebovat? V prvé řadě dataset pro hlavní report. 
Zdrojový select pro hlavní dataset bez parametru vypadá:
SELECT
       {[Measures].[Reseller Sales]
       ,[Measures].[Internet Sales]}
ON COLUMNS,
NON EMPTY
       {[Dim Date].[Year].[Year]}*
       [Dim Date].[Quarter].[Quarter]*
       [Dim Date].[Month].[Month]
ON ROWS
FROM [MDX Tutorial]
Pokud chceme dotaz parametrizovat, narazíme na dva problémy. Zaprvé MDX jazyk nezná nic jako deklaraci proměnných.  Zadruhé Reporting Services budou hodnotu parametru podsouvat do SSAS zdroje jako text. Textovou hodnotu můžeme převést na člena funkcí StrToMember nebo na množinu prvků funkcí StrToSet. Pro parametry většinou použijete funkci StrToSet. Složitější je řešení problému s chybějící deklarací. Pokud se na parametr odvolávám, nejdou mi načíst pole v designeru, takže si chystám dataset tak aby se dal ladit v Management Studiu. Nachystám si něco jako defaultní filter a parametr ve funkci StrToSet dočasně zakomentuji. Hodnoty parametrů se zpravidla píšou do Subselectů kvůli omezení, že jedna hierarchie v MDX může figurovat pouze na jedné ose.
Spustitelný dotaz z SSMS (SQL Server Management Studio) kopíruji do schránky
SELECT
       {[Measures].[Reseller Sales]
       ,[Measures].[Internet Sales]}
ON COLUMNS,
non empty
       {[Dim Date].[Year].[Year]}*
       [Dim Date].[Quarter].[Quarter]*
       [Dim Date].[Month].[Month]
ON ROWS
FROM
(SELECT [Dim Product].[Category].&[Bikes]/*StrToSet(@CATEGORY)*/ ON COLUMNS FROM
[MDX Tutorial]
)
pravé tlačítko na datový zdroj Analysis Services, query designer (přímo psát nejde), přepnutí ikonkou s trojúhelníkem z design módu do textového, náhrada dotazu mým skriptem ve schránce, ok. To by mělo načíst seznam polí na záložce fields. Tlačítko Fx mě dostane do dotazu v textovém režimu, kde můžu umazat komentáře a získat dotaz
SELECT
       {[Measures].[Reseller Sales]
       ,[Measures].[Internet Sales]}
ON COLUMNS,
non empty
       {[Dim Date].[Year].[Year]}*
       [Dim Date].[Quarter].[Quarter]*
       [Dim Date].[Month].[Month]
ON ROWS
FROM
(SELECT StrToSet(@CATEGORY) ON COLUMNS FROM
(SELECT StrToSet(@SUBCATEGORY) ON COLUMNS FROM
[MDX Tutorial]
)
)
Parametry CATEGORY a SUBCATEGORY musím vytvořit manuálně. Zbývá napsat dva datasety, kterými budu parametry plnit.
Syntaxe datasetu plnící jednopoložkový  parametr CATEGORY by mohla vypadat následovně
WITH MEMBER ParameterValue AS
       [Dim Product].[Category].currentmember.uniquename
MEMBER ParameterLabel AS
       [Dim Product].[Category].currentmember.name
SELECT
       {ParameterValue
       ,ParameterLabel}
ON COLUMNS,
nonempty(
       {[Dim Product].[Category].members}
       ,{[Measures].[Reseller Sales],[Measures].[Internet Sales]}
       )
ON ROWS
FROM [MDX Tutorial]

Počítaný člen ParameterValue vrací unikátní identifikaci každého záznamu, ParameterLabel se odkazuje na name column, zde by se dalo použít i MEMBER_CAPTION což je jméno po aplikaci translations pokud v kostce existují. Výraz na řádcích vratí všechny členy atributové hierarchie včetně All membera, ale pouze ty kategorie, které se prodávaly.
Dataset pro parametr SUBCATEGORY je ekvivalentní, jen s odkazem na předchozí parametr.
WITH MEMBER ParameterValue AS
       [Dim Product].[Subcategory].currentmember.uniquename
MEMBER ParameterLabel AS
       [Dim Product].[Subcategory].currentmember.name
SELECT
       {ParameterValue
       ,ParameterLabel}
ON COLUMNS,
nonempty(
       {[Dim Product].[Subcategory].[Subcategory]}
       ,{[Measures].[Reseller Sales],[Measures].[Internet Sales]}
       )
ON ROWS
FROM [MDX Tutorial]
WHERE StrToSet(@CATEGORY)
Hotový report si můžete stáhnout zde
Závěr:

Článek shrnuje tvorbu parametrizovaného Reporting Services reportu vytvořéného nad daty z OLAP kostky, pro nějž jsme si napsali všechny dataset. Všechny kouzla jsou vidět na videu, článek slouží spíš jako doplněk kvůli dohledání „jak ten skript vypadal“