29. září 2015

Analysis services – výběr vhodného typu modelu

Do SQL Serveru 2008 byla volba jednoduchá, Analysis services podporovaly pouze model multidimenzionální a nebylo moc z čeho vybírat. Časem se to ale začalo komplikovat, prvně přišel PowerPivot poté Tabular a jak to tak bývá, čím víc možností, tím těžší výběr. Klienti a účastníci kurzů se mě často ptají, potažmo i historicky ptali v dobách začátků PowerPivot. Je PowerPivot lepší než SSAS? To teď máme zrušit staré multidimenzionální modely a přebouchat veškerou logiku do PowerPivotu? A obdobné dotazy dostávám s tabularem. Má cenu předělávat stávající multidimenzionální řešení do tabularu? Nejen na tyto dotazy by měl odpovědět tento článek.
Průřez typy
Multidimenzionální model
Dostupnost – dostupný od verze SQL Serveru 2005 v té podobě v jaké jej vidíme dnes v edici standard a vyšších
Historicky vzniknul v době, kdy ještě nebyla tak dostupná operační paměť, tudíž se hledaly způsoby jak efektivněji uložit data na disku. Pro dosažení vysokého výkonu se přišlo s úložištěm MOLAP, do „živých“ dat se dá koukat díky úložišti ROLAP. Coby nejstarší model je nejlépe zdokumentovaný, nejrozšířenější, umí řekl bych 100% funkcí a je to ten ke kterému se srovnává.
Jedinou nevýhodou multidimenzionálního modelu je jeho relativní složitost. Při tvorbě je potřeba nastavit docela dost věcí, aby byl model nastaven „optimálně“. Pro výpočty, dotazování, zabezpečení se používá jazyk MDX. Naučit se MDX si žádá nějaký čas a přece jen pro vývojáře zvyklé pracovat s placatými tabulkami a teorií množin, jedná se o přechod bolestný :) I proto jsem začal psát na blogu MDX tutorial, jehož první díl najdete zde http://www.neoral.cz/2015/05/mdx-tutorial-1-uvod.html
Tudíž jedinou nevýhodou multidimenzionálního modelu je jeho relativní složitost a z toho plynoucí vysoké nároky na vývojáře, aby to bylo udělané dobře, v případě některých kalkulací aby to vůbec bylo udělané :) I když i to se dá vyřešit stylem. Pokud to nevím, tak jim řeknu, že to nejde :)
PowerPivot
PowerPivot poprvé spatřil světlo světa někdy kolem roku 2010 v dobách Excelu 2010 a SQL Server 2008 R2. Jendá se o zjednodušené Analysis services v Excelu, která se dá provozovat i serverově. Jedná se na pozadí také o tabulární model. Funguje to tak, že v Excelu vytvoříte model a o tento se můžete podělit tím, že hotový dokument včetně vizualizací vypublikujete do dokumentové knihovny SharePointu. Licenční nároky na serverové řešení jsou z těch vyšších. Budete potřebovat minimálně BI edici SQL Serveru a Sharepoint Enterprise (o zobrazení se starají Excel Services). Alternativou může PowerBI v Office 365
Při tvorbě modelu se data načtou do paměti, kde se nad nimi provádí operace. Pro tvorbu výpočtů se používá jazyk DAX, který je pro tvorbu výpočtů výrazně jednodušší než MDX (zápis vypadá jako Excelový vzorec). Klíčová omezení jsou maximální velikost souboru, který se dá otevřít v prohlížeči tedy 2GB. Tedy Modelem je vlastně Excelový soubor a tento je také jednotkou zabezpečení. Nedají se zde tvořit role kde v rámci jednoho modelu uvidí různí uživatelé různá data jako v případě serverových modelů. Dále je zde problém s kompatibilitou verzí. Model, který vytvoříte v Excelu 2010 vás po otevření v Excelu 2013 vyzve k upgradu. A zpětně ve 2010 již model nemůžete editovat. Stejně tak člověk bez nainstalovaného doplňku nemůže data z modelu číst. PowerPivot se dá načíst do Visual studia jako tabulární projekt a tímto závislost na nutnosti mít nainstalovaný doplněk odpadá, dají se řešit role, partitioning... Funkční omezení jsou shodná s Tabularem
Tabulární model
SQL Server 2012 přišel s možností nainstalovat tabulární instanci analysis services. Je postaven na stejných principech, jako PowerPivot, ale nepotřebujete k němu SharePoint a jedná se o serverové řešení bližší multidimenzionálnímu modelu. Ve zkratce Tabular kombinuje jednoduchost PowerPivotu a výhody serverového modelu. Pro rychlost dat načítá data do paměti (v surové podobě jak jsou ve zdroji, neaplikují se zde žádné agregace). Typ úložiště může být buď in memory, nebo direct query,případně kombinace obojího. Tabular umí cca 80% funkcí, kde funkční omezení jsou následující.
·        podpora pouze vazby 1:N, dá se ohnout aby dělal vazbu 1:1 pouze s jednosměrnou filtrací.
·        parent child hierarchie sice jsou k dispozici, ale pouze přes DAX funkce. Kde musíte pro kažodu úroveň zvlášť napsat vzorec. Tedy pro 50 úrovní by se jednalo o 50 vzorců, které byste museli napsat. Oproti tomu Multidimenzionální model si je schopen rekurzivně načíst všechny úrovně sám
·        hůře se zde pracuje s týdenní časovou logikou, což je dáno způsobem, jakým se definuje kalendář (americký vs evropský týden)
·        nedají se vytvářet počítané členy v dimenzích (chybí mi časové kalkulace v dimenzi, které fungují na všechny měřítka)
·        nedají se zde nastavovat defaultní membery, uživatel by mohl omylem zagregovat i to, co nemá
·        nejde provádět Writeback
·        překlady dat se musí provádět přes DAX
·        KPI indikátory nemají možnost definovat trendové šipky, jestli se jedná o nárůst, nebo pokles
Shrnutí, porovnání, scénáře
Multideminzionální model umí všechno, Tabular s PowerPivotem ne. První stěžejní otázka zda má smysl předělávat stávající fukční vyhovující řešení z multidimenzionálu do PowerPivotu/Tabularu? Nedává to absolutně žádný smysl. Nepřinese to nic navíc, naopak můžeme přijít o některé klíčové funkce a můžete dokonce pohořet s výkonem. Tabular drží data 1:1 vůči zdroji v paměti a teprve pak nad nimi provádí výpočty.
Nad PowerPivotem a Tabularem má smysl uvažovat v případě nového vývoje. Po PowerPivotu sahám v situacích, kdy potřebuji model, který má v rukou uživatel a je schopen si ho sám spravovat, případně aktualizovat data. Přece jen na co dělat pro tří členný tým serverový model. A kdyby řešení mělo přerůst z lokálního řešení na serverové, můžu jej jednoduše zmigrovat do tabularu. PowerPivot taky s oblibou používám na prototypování, abych s klíčovým uživatelem probral funkčnost. Přece jen vývoj jde rychle a čím dřív dostanu zpětnou vazbu tím lépe. Problém je, že dokud uživatel nevidí, nedá dobrou zpětnou vazbu.
Pokud chci serverové řešení kde bude kontrola na straně IT/BI týmu. Rozhodovací strom vypadá zhruba následovně (ne nutně v daném pořadí)
Jakou má klient verzi a edici SQL Serveru. Pokud se jedná starší 2012 a/nebo standard edici, je „odsouzen“ k multidimenzionálnímu modelu. Což nemusí být nutně špatně
Nebude mi chybět některá z vyjmenovaných funkcí? Zejména defaulty, many to many vazby, práce s týdnem, parent child hierarchie?
Velikost dat, jsem schopen nacpat celý model do paměti a když to udělám, bude to dost rychlé? Multidimenzionální model přestože bere data z disku může být rychlejší, protože data předagregovává. Z 10 milionů řádků pro jeden den se stane jedna buňka. Sečíst 365 buněk za rok z disku může být rychlejší, než udělat stejnou operaci na 3,65 miliardami řádků v paměti. Tabulární instance se bude taky delší dobu restartovat, musí data načíst z disku do paměti.
Pokud jsem došel až sem, můžu si zvolit v čem to budu dělat raději :)
Závěr

Tabulární model a PowerPivot multidimenzionální model nenahrazují. Mohou být vhodnou alternativou v závislosti na aplikaci, kterou řešíte. Každopádně jsou jednodušší na naučení se. Nicméně pokud jste se již prokousali „multidimenzionálním peklem a MDX jazykem“ můžete u něj klidně zůstat. Jste-li SSAS nepoznamenaní, tabular může být alternativa. Alternativa, která má však své hranice o kterých je dobré vědět. Osobně v řešeních kde potřebuji vědět, že je neprůstřelné sahám zpravidla po multidimenzionálním modelu, pro „aplikační“ lokální modely po PowerPivotu.

9. září 2015

Novinky v SSRS 2016 CTP 2.3

Dobré ráno s novým článkem o BI, tentokrát o novinkách v Reporting Services SQL Serveru 2016, který je aktuálně ve fázi CTP (Comunity Technology Preview) 2.3 Pro ty z Vás, kteří rovnou zkusí skočit na manažerské shrnutí v sekci závěr můžu říct, dnes není potřeba postupovat tímto způsobem, článek je krátký :) Dnešní článek píši protože jsem na Twitteru napsal, že jej napíšu v záchvatu euforie, že jsou nějaké novinky v SSRS. Berte jej také prosím s nadsázkou, veškeré informace jsou sice pravdivé ale přece jen psané subjektivně :)
Když jsem se ze záznamů přednášek z konference Ignite dozvěděl, že dojde k nalití nové krve do této prastaré technologie byl jsem nadšený. Přece jen my, kteří SSRS používáme, čekáme několik let a několik verzí SQL Serveru na novinky jako na smilování.
Drobné ohlédnutí do historie SSRS
Update z 2005 na 2008 (starším akcím se věnovat nebudu, tohle není cesta do pravěku)
masivní update, nezávislost nové verze na IIS, grafy předělány z vizualizací „styl pravěk“  do vizualizací „styl 20 tého století“ (grafy které vypadaly jako vystřižené z Office 2003 skok na grafy podobné Office 2007), přibývá nová vizualizace budík (a kdo by budíky neměl rád)
2008 -> 2008 R2
Přibyly nám nové grafické komponenty jako například mapa, databars, sparklines a indicators, zbavili jsme se některých nepříjemností ve vývojových nástrojích. 2008 R2 bych označil za poslední masivní update. V této edici jsme mohli také poprvé pracovat s PowerView, přestože PowerView nepovažuji  za produkčně použitelnou technologii. Z omalovánek jménem PowerView sice rychle vypadnou relativně pěkné vizualizace, ale technologie, ve které nejde přepsat titulek grafu... V grafu nejde změnit barva výseče a celově máme téměř nulovou kontrolu nad vizuálními prvky. PowerView je podle mě mrtvá větev vývoje, tohle řeší PowerBI desktop. Tento článek však neměl být o PowerView, ale o SSRS
2012
Nic zásadního
2014
Nic zásadního
Aktuální stav
K poslednímu většímu vylepšení/rozšíření SSRS tedy došlo v roce 2010 ve verzi SQL Serveru 2008 R2. Proto totální euforie při očekávání ohlášených 2016-kových novinek. Předchozí CTP nepřinesly nic zásadního, přestože jsem zatím instaloval každou verzi. Poté vidím na Twitteru něco co vypadá naprosto úžasně CTP 2.3 se screenshotem něčeho, co jsem v SSRS zatím neviděl. Říkám si, to je ono, už to přišlo. Instaluji. Mám s tím trochu problémy, nedá se udělat upgrade, musíte odinstalovat staré CTP a nainstalovat nové. Vývojové nástroje zatím pokulhávají, Data Tools do Visual Studia zatím neobsahují vývojové nástroje pro novou verzi. Chci-li vyzkoušet nové prvky musím z Report Manageru spustit Report Builder. Report Builder je v nových barvách, místo Office bílé máme novou sexy šedou barvu.... Vypadá to, že v této verzi CTP byly SSRS opravdu překopány do něčeho nového. Euforie a potřeba ohmatat si tuto novou technologii
Náhodné ohmatávání (technologie)
Píšu select, dělám klasickou tabulku určenou primárně pro export do excelu a zkouším klasické triky, které nefungovaly v verzích předchozích. Zapínám ve vlastnostech tablixu opakování hlavičky při tisku a aby první řádek držel na obrazovce při rolování. Funkce která nefungovala od verze SQL Serveru 2008... v SQL Server 2016 CTP 2.3 nefunguje dál a musí se obejít přes advanced mode a oklikání vlastností FixedData, Repeat On New Page. Nenechám si rozhodit úsměv a testuji dál. Ukládám report na server a zkouším otevřít v IE. Nový renderer se mě ptá: „Vidíte report pořádně? Pokud ne, nechte zpětnou vazbu, tohle je Preview verze“ Report vidím dobře, stejně jako tlačítko pro tisk. Zkusím stejný report otevřít ve Firefoxu. Stejný dotaz zda vidím report dobře. Report ano, tlačítko pro tisk reportu dobře nevidím. Ve Firefoxu a Chrome se nezobrazovalo a stále nezobrazuje. Neočekávám tedy ani lepší renderování například na mobilních zařízeních
Říkám si, přece když ten Report Builder vypadá tak nově a moderně, musí zde být něco nového. Zkouším klasický sloupcový graf. Vypadá stejně „klasicky“ jako vypadal ve verzi 2008 R2. Nezbývá než se podívat do dokumentace, co by mělo být nového a nacházím dva nové typy grafů Tree Map a Sunburst. Tree Map zobrazuje dlaždice s největší dlaždicí pro kategorii s největším podílem až po nejmenší. Tento typ Grafu má v sobě již nějakou dobu Power BI Desktop. Jak to vypadá se můžete podívat na obrázku 1

Druhý typ vizualizace který přibyl je graf typu sunburst. Tento typ grafu si můžete prohlédnout na obrázku 2

Po přečtení dokumentace k jednotlivý verzím a publikaci reportů na web vidím další příjemnou funkci pauza pro subscription. Není potřeba zakazovat v SQL Server agentovi job se strašidelný názvem, tato funkce se dá provést i v report manageru :)
Závěr
Co se zatím změnilo.
Report Builder má šedé pozadí místo bílého. Je to pěkné, ale kvůli této „vychytávce“ bych nové reporting services nekoupil. Nové 2 typy grafů (sunburst, treemap), pauzování subscriptions v report manageru.
Co se zatím nezměnilo.
Přetrvávají chyby předchozích verzí. Například zobrazení reportů v alternativních prohlížečích, nefunkční zatržítka pro opakování řádků při tisku tabulek, ukotvení na obrazovce a podobně. Vizualizace zůstává stejná jako v 2008 R2.

SQL Server 2016 až do verze CTP 2.3 nepřináší žádné zásadní novinky v SSRS. 2 nové typy grafů a šedé pozadí v Report Builderu to nevytrhnou. Nicméně jako vývojář si uvědomuji, že resuscitace 5 let nedýchající mrtvoly si žádá čas. Na obhajobu společnosti Microsoft musím říct, že v žádném CTP neuváděli “jedná se o edici, která způsobí revoluci v reportingu” Asi si budu muset dát pár verzí CTP oraz a počkat si na finální produkt, abych viděl jestli se technologie posunula, nebo ne.

1. září 2015

Data Mining vs. Machine Learning

Minulý týden mi vyšel článek na MSDN na téma Data Mining vs. Machine Learning. Jedná se o lehce modifikovanou verzi předchozího článku a Azure Machine Learningu. Porovnávám obě technologie a popisuji, v čem je ML jiný, než DM

http://blogs.msdn.com/b/vyvojari/archive/2015/08/27/data-mining-vs-machine-learning.aspx