14. prosince 2016

Power BI po více než roce v produkci

tak se jmenovala přednáška, kterou jsem nabídnul pro úplně první SQL Saturday konanou na území ČR. Akce se konala 3.12.2016. Nicméně témata bylo nabídnout o dost více vepředu. Dnešní blog bude pro ty, kteří se přednášky nemohli zúčastnit. Ale také bude pro ty, kteří na přednášce byli a zajímá je, jak telenovela pokračuje/dopadla. Dopředu ale musím říct, že telenovely nikdy nekončí, vždy jen pokračují. Jenom sem tam někdo umře na 20 dílů, aby poté ožil. Protože těch 20 dílů, to celé byl jen sen.
Úvod
Když jsem vymýšlel téma na přednášku, několik měsíců dopředu, chtěl jsem téma nadčasové. U technologie jako Power BI vybrat téma, které bude aktuální i za půl roku je docela výzva. Co je však vždy aktuální je vlastní zkušenost. Do takového tématu může člověk dostat cokoliv přes souhrn vlastností, kam se produkt za rok posunul včetně toho, co se líbí/nelíbí. Časování tomu nahrávalo. SQL Saturday týden po Black Friday (pátek po Díkuvzdání, svátek konzumu) – nejkritičtějším dnu v našem retailovém byznysu. Vloni jsem shrnul zkušenosti v článku Power BI – zkušenosti z praktického nasazení zde: http://www.neoral.cz/2015/11/power-bi-zkusenost-z-praktickeho.html
Letos jsme znali svého nepřítele (omezení produktu dopředu). Byli jsme o rok chytřejší a produkt o rok dospělejší. Plán byl udělat to celé lépe na základě zkušeností :)
Drobný úvod z pohledu důležitosti dne pro náš byznys. V průběhu Black Friday se v průběhu jednoho dne prodají několikanásobné objemy v porovnání s dny normálními. Je to v podstatě takový další týden v roce. Uživatelé ze strany byznysu chtějí intradenně sledovat co se děje s prodeji a pokud bude někde nalezen problém, analyzovat detailněji s čím konkrétně problém je, aby se dala hledat příčina a potenciálně řešení. Vymyslím si jeden příklad, abych nastínil modelově situaci. Člověk odpovědný za produktovou kategorii „Bílé zboží“ zjistí, že při meziročním srovnání za ekvivalentní čas prodejů je 2% níž, než loni. Zajímá ho, o kterou obchodní oblast se jedná. Zjišťuje největší problém u ledniček. Cena sama o sobě mnoho nepoví. Koukne na prodané kusy. Vidí, že se jedná o konkrétní značku. Kde se stala chyba? Jedná se o problém s dostupností zboží (málo jsme naskladnili). Máme zboží dost, špatně nastavená cena... Může v průběhu dne změnit cenu a podpořit prodej této problematické značky. Ve zkratce řečeno, intradenní mission critical reporting ve snaze být s daty zpožděný co nejméně a aby mohli reagovat i lidé mimo firmu (na prodejnách). Reporty měly být dostupné odkudkoliv.
Co jsme měli loni
Power BI dashboard postavený metodou využívající import dat na úroveň produktu Merchandise area (velké televize, malé televize, ledničky, sušičky, ...). Aktualizace probíhala přes personal gateway. Musel jsem duplikovat některé grafy (nemožnost drillthrough). Docela hojně jsme používali vlastní vizualizace.
Problémy z loňska
na které jsme narazili na Black Friday a poté při dennodením používání dashboardu. Limit 8 aktualizací za den a nemožnost spolehnout se na scheduler. Nemožnost sladit aktualizaci dashboardu s ETL. Ve špičce jsme tedy skončili tak, že jsme dashboard aktualizovali ručně. Tento byl také vysdílen v „My workspace“, takže nulová možnost sdílení administrace (jinak než nasdílením hesla). V průběhu roku jsme spoléhaly na automatizovanou aktualizaci 8 krát denně (semtam se něco pokazilo a opravilo bez zjevné příčiny). V průběhu roku se několikrát stalo, že vlastní vizualizace zmizeli, člověk musel stáhnout poslední verzi, naimportovat do reportu a tento znovu vypublikovat. Dashboard se ale uživatelům líbil, ale na backendu bylo spousta práce... Práce kterou jsme si chtěli odpoustit v novém roce.
Plán na letošek
zbavit se protivných aktualizací na které se nedalo přesně spolehnout (aktualizace probíhá co nejblíže specifikovanému času, dle vytížení služby se může spustit později, navíc nám nestačilo 8x za den). Použít živé připojení, které přinese jednak možnost vynutit security model a jít až na detail produktu. Použít nové funkce na straně vizualizací, jako například drillthrough, podmíněné formátování, optimalizaci reportu pro mobil a další, že to ani všechno nevyjmenuji. Dále bylo v plánu vyhnout se vlastním vizualizacím z důvodu „mizení“. Ponechal jsem jen scroller.
Technicky jsem to implementovali tak, že jsem vytvořil extra SSAS kostku v multidimenzionálním provedení a zahrnul veškerou logiku potřebnou pro dashboard v této kostce. Umožní nám to recyklovat logiku do různých nástrojů (SSRS, Excel, Power BI) a být tak blízko reálnému času, jak nám jen ETL dovolí. Kostka obsahovala role vynucující row level security. Dashboard byl nasdílen do sdíleného pracovního prostoru, kvůli sdílení administrace.
Vytvořili jsme 3 dashboardy, jeden hlavní a dvě odvozené lehce modifikované verze. Vývoj kostky, dashboardů a testování s tím spojené si vzalo několik týdnů. Dashboardy vypadaly opravdu dobře a měl jsem z nich dobrý pocit...
Jak to šlo
a to až do úterý 22.11 odpoledne. Před peakem jsme se přesunuli s částí týmu do Londýna do hlavního sídla firmy, abychom mohli prezentovat dashboardy uživatelům a být jim k ruce pokud bude potřeba. Bohužel komunikace přes Power BI Enterprise Gateway začala nepředvídatelně padat. Lítaly nám chybové hlášky, kolečko se točilo, točilo a nedotočilo. Když dotočilo, tak chybová zpráva, ale bez popisu chyby. Začalo ladění nejprve se supportem z Microsoft UK. Na případu se vystřídalo několik lidí, což zpomalovalo komunikaci. Postupem času se nám podařilo vybranými kanály poměrně rychle probouchat až k Power BI Gateway týmu v US. Poté se začal troubleshooting vyvíjet trochu lépe, to ale předbíhám. Na straně naší infrastruktury jsme měli vše podchycené z pohledu disaster recovery. V podstatě mirrorovanou konfiguraci všech serverů. Nainstalovali jsme druhou gateway, kterou jsme neměli dopředu. Ale bohužel nefungovala komunikace ani přes tuto bránu. Server byl dostupný ze všech ostatních nástrojů (SSRS, Excel napojený na kostku, Power BI desktop), tudíž jsem podezříval problém na straně Power BI. Kouknu do Office 365 na service health a skutečně vidím u Power BI „service degradation“ a že by to mělo být vše v pohodě 24.11 odpoledne US času.... To je trochu blízko pátku na to abych byl v klidu. S UK supportem jsme v úterý večer a v noci nebyli schpni najít řešení problému. Bylo potřeba přijít s plánem B a to velmi rychle. Reporting pro uživatele přistupující k datům z firmy jsme podchycený měli  (SSRS a Excel). Jak ale poskytnout za dané situace uživatelům data mimo firmu (manažerům jezdícím po obchodech atd.). Na nasazování nové technologie není čas.
Plán je následující:
a)      snažit se rozchodit live connection
b)     udělat verzi reportu, která bude používat data import (jak loni) aktualizovat přes bránu
c)      pokud bude u bodu b problém s aktualizací bránou, aktualizovat v Power BI desktopu a přepisovat soubor
d)     to snad nebude potřeba
23.11 ve středu dávám cvičení Dashboard in a day. Logiku, kterou jsem implementoval měsíc do kostky a která byla dopředu otestována, přebouchávám do reportu používajícího data import. Metodu jednoduše přepnout nejde už kvůli výpočtům. Takže co jsem psal v MDX, přepisuji do DAXu no prostě pěkné cvičeníčko. Já jsem zaneprázdněn plánem B, občas přepínám k troubleshootingu plánu A, na callech se supportem bohužel musí vysedávat šéfová
24.11 ve čtvrtek, brána chvíli jede, chvíli ne, nicméně jí nikdo nevěří, že pojede v onen další kritický den. Musíme se rozhodnout s čím do toho další den půjdeme. Volíme verzi import
25.11 pátek Black Friday je tu. Ze 3 dashboardů jsem stihnul předělat pouze ten hlavní, aby využíval data import odvokzené verze jsou stále jako live connection. Brána bohužel zlobí. Byl jsem dedikován na podporu uživatelů z produktové kategorie bílé zboží. Na dotazy odpovídám z Power BI desktopu a nakonec otvírám Excel napojený na kostku. Všechny dotazy jsem zodpovídat ve velmi rychlém tempu, uživatelé spokojeni. Mezitím ostatní se věnují dalším týmům. S refreshem se tak nějak střídáme a ano museli jsme sklouznout i k plánu C, aktualizace přes bránu zlobí stejně jako živé připojení. A co hůř v pátek večer kolem 10té hodiny dostáváme hlášku, že aktualizace nemohla proběhnout na straně service z důvodu překročení horního limitu paměti. Problém je s vykreslováním kumulovaného grafu za posledních 5 hodin. Narazili jsme zde na nezdokumentovaný limit. Report s importem dat měl velikost pouhých 300 MB a 3 dny dat (Black Friday letos, loni a 2 roky zpět). Nicméně data v DAX dotazu přesáhla maximální velikost dat povolenou na straně service. Takže plán d byl nakonec potřeba a vyřešili jsme to dočasně smazáním onoho grafu. Evidentně můj DAX dotaz nebyl dostatečně efektivní :) Na ladění ve středu nějak nebyl čas. Konečně onen den končí. Ustáli jsme největší špičku. Na backendu spousta práce, ale uživatelé se dostali k informacím, ke kterým potřebovali a na frontendu snad nepoznali moc rozdíl.
26.11. přesun zpátky do Brna vyloženě v „Power BI náladě“. V týdnu přede mnou tři Power BI prezentace :) WUG Online, přednáška na konferenci iLikeSharePoint a SQL Saturday v Praze. Nejlepší ze všeho téma na SQL Saturday Praha – Power BI after more than year in production. A co tam jako teď budu vykládat?
V ten den kdy jsme Power BI nejvíce potřebovali se pokazilo skutečně co mohlo, což jsme dali vědět i produktovému týmu. Na naší straně v tu chvíli nepanovala velká důvěra, že si můžeme dovolit riskovat používat tuto technologii dál. Šéfová napsala manažerovi týmu, se kterým minulý rok na Data Insights Summitu v Seattle prezentovala naše řešení z loňska jak se cítíme s ohledem na používání Power BI do budoucna. Zorganizoval se call kde se probrala situace, Power BI team měl viditelně jasný cíl vyřešit náš společný problém a pracovali opravdu velmi tvrdě a intenzivně na řešení včetně callu v šílené časy, aby se s námi spojili (velký časový posun). Dokonce k nám poslali i jednoho člověka z produktového týmu do kanceláře, aby s námi řešil problém onsite.
Všechno to byla jedna velká a zajímavá zkušenost, ladit funkci brány přímo s produktovým týmem. Dozvěděl jsem se mnohé o tom jak gateway funguje stejně jako service na druhé straně. Mé obavy o tom, že kód ze strany Microsoftu je generován tak často, že prakticky znamožňuje pořádné testování u zákazníka byly trochu uklidněny. Dozvěděl jsem se také pár bodů o tom jak funguje release cyklus. Pokud tedy máte stejnou obavu jako já, vězte že změny jsou napřed nasazovány do Microsoft interního tenantu, kde jsou asi týden. Microsoft testuje nástroje prvně interně a věřím, že když dashboard nejede a stěžuje si Satya Nadela, tak takové eskalace nejsou příjemné :) Poté změny jsou nasazeny do regionů v US a teprve po nějaké době to upečou až k nám do regionu North Europe. Takže kód je testovaný docela zeširoka, než se to dostane až k nám. Testování nových verzí na straně zákazníka je však druhá věc.
V průběhu ladění jsme zkoušeli všechno možné, privátní buildy gateway, podrobnější logování dokonce i nový tenant v UK. Bez konzistentního úspěchu.
Minulé úterý 6.12 přišla v průběhu ladění spásná myšlenka. Zkusit na bráně změnit komunikaci z TCP na HTTPS. Výchozí mód komunikace brány je tzv. AutoDetect. Začne na TCP a pokud se 10 minut nedobouchá, přepíná sám na https. U nás byl však problém, že některé dotazy prošly, ale ne všechny, takže k přepnutí na HTTPS nedošlo vůbec. Po přepnutí na HTTPS brána začala konzistentně fungovat. HTTPS jede, přepneme zpátky na AutoDetect, nejede, přepneme na HTTPS jede, AutoDetect nejede, HTTPS jede. Tento test v průběhu 15 minut mluvil jasně. HTTPS vynucení rozchodilo naši gateway. A fungovalo to celý týden v kuse. Tak jsem začal psát tento blog, že máme konečně rozuzlení zápletky. Fungovalo to až do pondělka 12.12. No mě už z toho asi... Cca 24 hodin to nefungovalo včera v průběhu ladění po restartu service po konfigurační změně opět jede. Otázka je, jestli pojede. Další velká špička (Boxing Day 26.12 před námi) a to bude většina manažerů pracovat z domu, takže Power BI.
Závěr

Jak je na mě vidět nejen z mého blogu vidět, já mám Power BI docela rád :) Nicméně to co se děje v posledních 3 týdnech způsobuje, že nejsem v úplné Power BI náladě, jestli mi rozumíte :) Produkt je to dobrý, vypadá to dobře, dostupnost odkudkoliv, relativně cenově dostupné, rychle přibývající funkce, komunita... to všechno hovoří pro. Ono tempo vývoje je ale dvousečné. Někdo provede nějakou změnu na straně service a vy o tom ani nevíte, natož jestli to mohlo způsobit váš problém. Obráceně máte dlouho problém a ten časem vyšumí a vy opět nevíte, jestli někdo něco změnil. Dalo by se trochu paušalizovat, že jak do svých nástrojů přidáte nějakou cloudovou službu, tak nemáte plnou kontrolu... Jasně v principu by to mělo fungovat, ale... Byť naše telenovela pokračuje, velmi si cením podpory ze strany produktového týmu vyřešit náš problém. Doufám, že se tak s konečnou platností podaří co nejdříve. Už tak se nám podařilo společnými silami vylepšit produkt (odhalili jsme cestou několik bugů, které sice nezpůsobovali náš problém, ale byly tam). Možná je problém někde v naší síti, nebo někde na půli cesty. No uvidíme. Hlavní lekce pro všechny. Pokud je pro vás aplikace kritická, mějte plán B a to i v případě, že využíváte cloudovou službu. A ta by přece měla fungovat. PS: Až to bude fungovat a zjistíme, čím to bylo. Dám update.

27. října 2016

Power BI on premises v SSRS

Pár týdnů zpátky na konferenci Microsoft Ignite byla zveřejněna informace, že tým Reporting Services již intenzivně pracuje na integraci Power BI do Reporting Services. Nečekal jsem ale, že dostaneme první verzi k otestování pár týdnů na to. Právě probíhá PASS Summit a přišla další skvělá novinka. Technické preview k vyzkoušení pro veřejnost již ve čtvrtek 27.10. Není proto náhoda, že je skoro půlnoc a já sedím u počítače testuji a píšu článek :)
Verze k otestování je zatím k dispozici pouze jako virtuálka v Azure, ale verze ke stažení bude snad následovat brzy. Do vyhledávače stačí napsat SQL Server Reporting Services Technical Preview.
Obsahuje předinstalované Reporting Services, Power BI Desktop, Databázový engine a Analytické služby. Zatím je možno publikovat Power BI repoty právě s živým připojením proti Analytickým službám a to jak v Multidimenzionálním, tak tabulárním provedení.
Tvorba virtuální stanice je relativně jednoduchá (pokud vymyslíte dostatečně složité heslo). Nejlevnější konfigurace, která mi byla nabídnuta přijde na cca 120 Eur za měsíce, takže nezapomeňte po testování vypnout.
Nicméně až to naběhne, můžete rovnou napsat do prohlížeče http:\\localhost\reports a jste v Report Manageru. Tam vás přivítají, mimo jiné, 3 ukázkové reporty Power BI reporty. nebo si v desktopu můžete vytvořit vlastní přes živé připojení na lokální SSAS. Vytvořil jsem si soubor Test. Tento vypublikoval do galerie Report Manageru.
Otvírám report přímo v prohlížeči a nekecali... Funguje to :)
Report se otevřel a reaguje.
Napadá mě, zda budou vidět Power BI reporty a statistiky z nih v databázi Report Serveru v tabulkách Catalog a Execution Log. Jsou tu a v Execution logu vidím jak dlouho se načítal dataset v milisekundách z SSAS.
Závěr
Power BI se vám líbí, ale nemůžete je používat, protože je to cloud? Svítá na lepší časy. Integrace s SSRS vypadá slibně. Zatím jen připojení na analytické služby, ale přibydou další. Otázky jsou, jestli se dočkají i uživatelé standardní edice. Jakou formou bude probíhat update SSRS, pokud máte už SQL 2016 bez Power BI a celkově jakým způsobem budou poskytovány aktualizace. Tohle jsou ale otázky na jiné dny. Dnes jsem si radost udělal, tak si ji těmito otázkami nebudu kazit a půjdu raději spát :)


25. října 2016

Power BI – Záložka analytics a forecasting

Jednou z nových funkcí v zářiové aktualizaci Power BI desktopu byla funkce Forecasting. Zatím ve fázi Preview, ale nová aktualizace Desktopu je za rohem. Dnešní článek ve zkratce shrne, v jaké fázi se Forecastování v Power BI desktopu dnes nachází. V prvé řadě preview funkce je potřeba povolit v nastavení Desktopu. Menu file (nepopsané, ale stejná pozice jako v Office), Options & Settings, Options, Preview features, zaškrtnout forecasting
Dostupnost pro vizualizace
Forecasting probíhá na záložce „Analytics“, která umožňuje v současné chvíli následující možnosti linek
  • Trendová linka (proložení přímkou)
  • konstanta na X ose
  • konstanta na Y ose
  • Minimum
  • Maximum
  • Průměr
  • Percentil
  • Forecast
Záložka analytics v liště vizaulizací vypadá následovně
Práce s linkami a křivkami není dostupná pro všechny vizualizace. Plná podpora je dostupná v následujících objektech.
  • Area chart
  • Line chart
  • Scatter chart
  • Clustered Column Chart
  • Clustered Bar Chart
Práce s konstatní linkou je k dispozici v následujících dalších vizualizacích
  • Stacked Area
  • Stacked Bar, Stacked Column
  • 100 % Stacked Bar, Stacked Column
Práce s proložením přímkou
  • non-stacked line
  • clustered column chart
Nulová podpora pro objekty
  • matrix, tabulka
  • koláč, koblih (Pie, Donut)
Pojďme se podívat na nějaké
Ukázky
Na následujícím snímku vidíte jednoduché proložení přímkou a konstantní čáru na ose Y.
U proložené přímky je možnost kombinovat více řad (combine series) tzn, i když máte vykreslené dva průběhy, s vyplým přepínačem máte každý průběh proložený jednou přímkou. Když zapnete kombinovat, pro oba průběhy máte jedno proložení.
Konstantní linka, na obrázku červená, můžete zadat hodnotu konstanty. Zde mi chybí možnost odkázat se na pole z datasetu, například Target, aby bylo poznat, zda plán plníme/neplníme. Třeba/snad se dočkáme v dalších verzích.
Linky minima a maxima můžete vybrat s kontextem konkrétního měřítka. Jste ale omezeni pouze na měřítka, která máte v grafu.
Proložení přímkou a zobrazení základních statistických veličin se však dá jen stěží říkat Forecast. Takže jak je na tom samotné předvídání budoucnosti?
Můžete zadat, kolik bodů byste chtěli předvídat. Kolik posledních ignorovat, jaký confidence level nastavit a pokud data mají sezénnost, tak jakou. Funkce Forecast se zobrazuje pouze pokud máte v grafu jen jednu řadu.
V grafu vidíme skutečný průběh zelenou barvou. Černá přerušovaná čára je odhadnutý forecast pro následující tři hodiny. Šedá plocha je odhadovaný interval do kterého by měly data spadnout i při očekávané chybě 5%.
Nyní se nabízí otázka, co se bude dít s akciemi Dixons Carphone v následujícíh dnech? :)
Asi vadí díry způsobené víkendy. Tak někdy příště, až funkce třeba nebude preview :)
Závěr

Záložka Analytics je v plenkách, stejně jako možnosti předvídání budoucnosti. Proložení průběhů linkami se určitě hodí. Chybí mi zde však možnost odkázat se na measure buď obecně (konstantní čára), nebo bez nutnosti zobrazovat bázové měřítko jako řadu. Jsme však ve fázi preview, tak uvidíme co se bude dít dál. Vypadá to však slibně.

18. října 2016

Power BI – Live connection vs. Import, comparison and limitations

Some of the data sources have option both to import data as well as use live connection. But there is no easy method to change it once you already built your report. So you should rather carefully decide which method you’re going to use upfront. To make this decision right, it is good to know limitations of each method. Purpose of this blog post is to cover these limitations.
First what kind of license are you going to need? If you’ll use live connection, you’ll need Pro license for all end users consuming report/dashboard. If you’ll import data from on premises data source through gateway, you’ll need Pro License again. If your data are accessible without gateway, but you want to refresh them more often, then once a day, Pro License is required too. If you want to stay with free Power BI license, you’ll need to use data Import method only and avoid on premises data sources, refresh data maximally once a day.
Data import
Data import can be used against any data source type. Current Power BI service limitation published file size is 1 GB. Data are loaded to file using column store compression. If you’ll read for report purposes just data required for usage in visuals this is not limiting too much. Even with Power BI Pro license you are limited to 8 refreshes per day. Times can be scheduled either at full hour or half past full. Scheduled time is approximate. When will refresh actually happen depends on service utilization. If you need to refresh data, more often consider using live connection. When using import, data are stored in Power BI file/service. Therefore, there is no need to setup permissions on data source side (service account for load is enough) and you can share data publically or with people outside organization. On the other hand, all data are stored on Power BI. So if you have requirement for Row Level Security, you need to implement it on Power BI side. If you need same logic applied for multiple reports, you have to duplicate it in all the reports. Same applies to calculations, if you need same measure in multiple reports, you need to recreate it every time.
Live connection
There are more limitations for live connection in place. It doesn’t work against all data sources. Current list can be seen here https://powerbi.microsoft.com/en-us/documentation/powerbi-refresh-data/#live-connections-and-directquery-to-on-premises-data-sources
You are also limited to just one data source/database you selected. You can’t combine data from multiple data sources anymore. If you are connected to SQL Database, you can still create logical relationships between objects from that database as well as measures and calculated columns. When you are connected to SQL Server Analysis Services, you are limited just to report layout and even can’t make calculated columns or measures. When connected to SSAS, you could also reach some licensing limitations. Power BI issues DAX queries against SSAS and this isn’t supported in Standard edition of SQL Server before SQL Server 2016. When using live connection, users have to have access to underlying data source. This means you can’t share outside of your organization or publically. Other way around, when you set up security once, all reports using live connection to the same source have the same security model applied automatically. Similarly, you can prepare your data model carefully with all measures and calculated columns on data source side. All reports from the same data source can benefit of it. Refresh frequency is unlimited. Power BI simply shows data as they are in database. However, be careful using live connection against highly transactional OLTP systems. If you suffer from performance problems now, analytical workloads from Power BI won’t help it. Consider enabling features on data source side like Operational Analytics in SQL Server 2016.
Summary

Both methods have limitations, developer should be aware upfront. For import it is mainly refresh frequency, data size and necessity to duplicate same logic (calculations, security) in multiple reports. That could be helped by templates, but if you need to change logic of calculation, you need to change it in multiple reports again. For live connection, not all data sources are supported. If you pick one, then you’re limited just to that one data source for report. If logic is setup on source side, all reports can benefit. My personal preference is use live connection against SSAS models, have the model centralized and maintain logic in one place. For SQL Databases where I don’t have model, I prefer import and use Power BI as a model and vizualization.

Power BI – práce s geografií a mapami

Zdravím Vás u dalšího článku ze světa Power BI snad se samopopisným názvem. Kompletní seznam článků najdete v rozcestníku http://www.neoral.cz/2016/10/power-bi-rozcestnik.html. Dnes se budu zabývat zobrazením dat s návazností na geografii. Jaké máme možnosti? Začnu ve zkratce možnostmi Excelu, poté se podíváme na Power BI Desktop
Power View
Doplněk Excelu Power View umožňoval zobrazit geograficky jako první z Power BI rodiny. O vyhledání se staraly Bing maps. Hledat jste mohli buď podle popisu lokace, nebo zeměpisné šířky a délky (longitude, latitude). Do pole lokace šlo umístit sice několik polí, ale nástroj hledal pouze podle prvního klíče. Drilování ze státu na města zde nefunguje. Takže než mít samostatné atributy, stát, město, adresa. Bylo ideální mít složenou adresu z částí do adresy celé, tak aby ji našel Bing správně. Pokud stačil detail město, bylo potřeba upřesnit stát/okres, aby Bing našel „to správné“ město ve správném kraji/státě :)
3D Map (dříve Power Map)
Excelový doplněk, který umožňuje data opět vizualizovat geograficky. Změny v mapě lze přehrát v čase a střídající se scény uložit jako video. Můžeme podstrčit i vlastní mapový podklad.
Power BI Desktop
Zde máme možností pro práci s geografií mnohem více díky vestavěným vizualizacím i rozšířením o vizualizace vlastní.
Map
Základní mapa využívá Bing maps stejně jako Power View. Hledání probíhá na základě slovního popisu lokace, nebo zeměpisné šířky a délky. Narozdíl od Power View, můžeme do popisu vložit více polí, což umožní hierarchicky drilovat.
Region map
Vyhledání na základě Bing Maps pro územní celky regionů a států. Pokud vyberete stát, rovnoměrně se vybarví. Neudělá se bublina kdesi náhodně jako u „Map“. Taktéž funguje drilování hierarchie.
Shape Map
Shape map obsahuje několik předdefinovaných šablon pod nimiž je Geojson popisující geografii například pro Spojené Státy, Velkou Británii, Německo a další. Můžete ale vložit i vlastní popis geografie v json formátu
Zobrazení probíhá na základě párování dat geo klíče v datech a geo klíče v json popisu mapy.
ArcGIS Map (Preview)
ArcGIS je Geografický Informační Systém pro práci s mapovými podklady a geografií. Můžete zde jednoduše vybírat několik bodů zároveň. Lze zvolit, zda chcete lokalitu mapovat jako body, nebo region. Měnit podklad (tmavá, světlá), téma mapy (body, bubliny, heat mapa).
Aby map nebylo málo, máme pro zobrazení geografických informací následující vlastní vizualizace
Custom Visuals
Vlastní vízualizace najdete ke stažení v galerii: https://app.powerbi.com/visuals
Synoptic panel od SQLBI
Vítěz soutěže o nejlepší vlastní vizualizaci. Kromě ukázkových rozložení z galerie přes obchod, letadlo, až po lidské tělo si můžete namalovat vlastní podklad na stránce http://synoptic.design/
Globe Map
3D mapa pro Power BI Desktop jako vlastní vizualizace s možnosí použít několik vrstev. Například sloupcový graf můžete kombinovat s heat mapou podobně jako v 3D Map v Excelu.
Závěr

Mapy jsou zdá se populární. Možná i proto jim bylo v Power BI věnováno tolik pozornosti. Vybere si snad každý. Ať potřebujete najít konkrétní adresu jako bod, nebo vlastní mapový podklad výrobní haly/obchodu/skladu, v Power BI najdete vhodnou vizualizaci. V rámci české Power BI User Group plánuji na tohle téma přednášku, kde ukážu možnosti jednotlivých vizualizací.

14. října 2016

Power BI – rozcestník

Protože množství Power BI článků nabobtnalo. Pro zjednodušenou navigaci přináším rozcestník článk, který budu pravidelně aktualizovat. Přidávám také tag „00 Power BI Rozcestník“, abyste při opakované návštěvě byli schopni rozcestník najít. Pořadí .je od nejnovějšího článku po nejstarší
SSRS reporty v Power BI službě (12.11.2018) - http://www.neoral.cz/2018/11/ssrs-reporty-v-power-bi-sluzbe.html
Záznam přednášky - Reportovací platforma společnosti Microsoft (30.8.2018) - http://www.neoral.cz/2018/08/zaznam-prednasky-reportovaci-platforma.html
SQL Server Bootcamp 2017 a 2018 - záznamy přednášek (23.8.2018) - http://www.neoral.cz/2018/08/sql-server-bootcamp-2017-2018-zaznamy.html
Publikace Power BI reportu do SharePointu Online (30.7.2018) - http://www.neoral.cz/2018/07/publikace-power-bi-reportu-do.htmlKompozitní modely (24.7.2018) - http://www.neoral.cz/2018/07/kompozitni-modely.html
Proč nepoužívat Publish to web (9.7.2018) - http://www.neoral.cz/2018/07/power-bi-proc-nepouzivat-publish-to-web.html
WUG Days 2018 - Záznamy (20.6.2018) - http://www.neoral.cz/2018/06/wug-days-2018-zaznamy.html
Inkrementální plnění (18.5.2018) - http://www.neoral.cz/2018/05/power-bi-inkrementalni-plneni.html
Roadmap jaro 2018 (26.3.2018) - http://www.neoral.cz/2018/03/power-bi-roadmap-jaro-2018.html
Stránka jako tooltip (15.3.2018) - http://www.neoral.cz/2018/03/power-bi-stranka-jako-tooltip.html
Globální slicery (23/2/2018) - http://www.neoral.cz/2018/02/power-bi-globalni-slicery.html
Monitoring využití reportů (14.2.2018) - http://www.neoral.cz/2018/02/power-bi-monitoring-vyuziti-reportu.html
Analýza nákupního košíku s SQL Serverem a Power BI (9.2.2018) - http://www.neoral.cz/2018/02/analyza-nakupniho-kosiku.html
Časové kalkulace v DAX problém otevřeného období (30.6.2017) - http://www.neoral.cz/2017/06/casove-kalkulace-v-dax-problem.html
Power BI Premium a změny v Power BI Free (4.5.2017) - http://www.neoral.cz/2017/05/power-bi-premium-zmeny-v-power-bi-free.html
Power BI - Power BI – relative dates a mesures u live connection proti SSAS (3.5.2017) - http://www.neoral.cz/2017/05/power-bi-relative-dates-mesures-u-live.html
Power BI - Power BI Service jako zdroj (28.4.2017) - http://www.neoral.cz/2017/04/power-bi-service-jako-zdroj-dat.html
Power BI - Jak na načítání daz z webu (10.3.2017) - http://www.neoral.cz/2017/03/power-bi-jak-na-nacitani-dat-z-webu.html
Power BI - nejen novinky v produktu říjen 2016-únor 2017 (3.3.2017) http://www.neoral.cz/2017/03/power-bi-nejen-novinky-v-produktu-rijen.html
Power BI Auditing (14.2.2017) http://www.neoral.cz/2017/02/power-bi-auditing.html
Power BI On Premises v Reporting Services k dispozici ( 18.1.2017) http://www.neoral.cz/2017/01/power-bi-on-premises-v-reporting.html
Power BI po více než roce v produkci (14.12.2016) http://www.neoral.cz/2016/12/power-bi-po-vice-nez-roce-v-produkci.html
Power BI on premises v SSRS (27.10.2016) - http://www.neoral.cz/2016/10/power-bi-on-premises-v-ssrs.html
Záložka analytics a forecasting (25.10.2016) - http://www.neoral.cz/2016/10/power-bi-zalozka-analytics-forecasting.html
Práce s geografií a mapami (18.10.2016) – http://www.neoral.cz/2016/10/power-bi-prace-s-geografii-mapami.html 
Different approach to Dynamic Row Level Security (EN 10.10.2016) – http://www.neoral.cz/2016/10/different-approach-to-dynamic-row-level.html
Update červenec, srpen, září 2016 (3.10.2016) – http://www.neoral.cz/2016/10/power-bi-update-cervenec-srpen-zari-2016.html
Co je ve verzi zdarma a za co naopak zaplatíte (15.7.2016) – http://www.neoral.cz/2016/07/power-bi-co-je-ve-verzi-zdarma-za-co.html
Workspaces & sdílení obsahu a správy (12.7.2016) – http://www.neoral.cz/2016/07/power-bi-workspaces-sdileni-obsahu.html
Power BI Interest Group (2.5.2016) – http://www.neoral.cz/2016/05/power-bi-interest-group.html
Novinky a výhled do dubna 2016 (29.3.2016) – http://www.neoral.cz/2016/03/power-bi-novinky-vyhled-do-dubna-2016.html
Enterprise Gateway a Direct Query proti SSAS (16.3.2016) – http://www.neoral.cz/2016/03/power-bi-enterprise-gateway-direct.html
Veřejné sdílení reportů (3.2.2016) – http://www.neoral.cz/2016/02/power-bi-verejne-sdileni-reportu.html
Power BI v Excelu, Excel v Power BI (9.12.2015) – http://www.neoral.cz/2015/12/power-bi-v-excelu-excel-v-power-bi.html
Zkušenost z praktického nasazení (29.11.2015) – http://www.neoral.cz/2015/11/power-bi-zkusenost-z-praktickeho.html
Novinky Říjen, Listopad 2015 (22.11.2015) – http://www.neoral.cz/2015/11/power-bi-novinky-rijen-listopad-2015.html
Konektory na „On premise“ zdroje a zabezpečení dat (12.10.2015) – http://www.neoral.cz/2015/10/power-bi-konektory-na-on-premise-zdroje.html
Power BI Desktop (30.7.2015) – http://www.neoral.cz/2015/07/powerbi-desktop.html
Jak se zbavit funkce VLOOKUP (SVYHLEDAT), DAX funkce pro detailní výpočty (28.6.2015) – http://www.neoral.cz/2015/06/jak-se-zbavit-funkce-vlookup-svyhledat.html
Power Pivot DAX a časové funkce 1. část (12.6.2015) – http://www.neoral.cz/2015/06/powerpivot-dax-casove-funkce-1-cast.html
Sentiment analýza přes Power BI (10.6.2015) – http://www.neoral.cz/2015/06/sentiment-analyza-pres-powerbi.html
Power BI nové generace (8.5.2015) – http://www.neoral.cz/2015/05/powerbi-nove-generace.html
SharePoint list jako zdroj pro Power BI  – http://www.neoral.cz/2015/05/sharepoint-list-jako-zdroj-pro-powerbi.html
Data Management Gateway – krok za krokem – http://www.neoral.cz/2015/05/data-management-gateway-krok-za-krokem.html
Power BI nástroje, dostupnost napříč verzemi – http://www.neoral.cz/2015/05/powerbi-nastroje-dostupnost-napric.html



Power BI – Alerty

Dnešní rychlo blog je o tom, jak nastavit alerty v Power BI service. Jedná se o celkem užitečnou funkci. Představte si, že chcete být upozorněni, pokud číslo/KPI (klíčový ukazatel businessu) přesáhne nějakou kritickou hodnotu. Alert je přesně to. Daty řízená notifikace, která Vás upozorní ve web service, mobilní aplikaci či dokonce emailem.
Nastavuje se v Dashboardu a funguje na 3 typy dlaždic (Tiles). A to karta (Card), KPI, Gauge (tachometr) stejně jako zleva na obrázku.
Nastavení je jednoduché. Kliknete na trojtečku v pravém horním rohu dlaždice. Rozbalí se následující možnosti a ikonka se zvonečkem.
Následně můžete přidat pravidlo, zda chcete kontrolovat, pokud hodnota vyroste nad/klesne pod definovanou hranici. Stejně jako frekvenci kontroly denně/po hodině.
Hlídací pes je nastaven, teď stačí čekat až se zakousne. Takhkle vypadá zakousnutý do emailu.
Zakousnutý do web service.
A takhle na mobilní aplikaci
Závěr:
Alerty jsou určitě užitečná funkce. Hlídací pes, který hlídá a zaštěká, pokud se klíčový ukazatel byznysu dostane přes kritickou hranici. V porovnání verze zdarma vs placená jsem se nedočetl, že by Alerty byly pouze v placené verzi. Nicméně neměl jsem tohle možnost zatím vyzkoušet. V režimu import fungovaly alerty bez problémů. V době psaní článku testuji, zda bude reagovat i přes živé připojení proti SSAS Multidimensional. Napíšu sem poté krátkou aktualizaci. Tuším, že by mohl mít problém v tomto případě kvůli kontextu impersonace. Zatím dvě hodiny nic nepřichází

11. října 2016

Different approach to Dynamic Row Level Security

There were already written few blog posts both about Row Level Security. I would like to add one more about this topic. I use this pattern for several years in SQL Server Analysis Services. Biggest advantage of this approach is, that you don’t have to fight with table relationships, which can be sometimes tricky to make work correctly.
To follow with steps, you can download sample file, which uses Adventure Works Sample Data.
File can be downloaded here:
https://drive.google.com/file/d/0B9ZohZ1CALKZOFZBRG9YZERWakk/view?usp=sharing
Introduction
Let’s have a look at the report and scenario. Adventure Works sales products, that are grouped to categories. Common requirement is to limit data in report, so category manager would see just his/her category. So if I want to grant access just to “Bikes” I could write DAX row filter
DAX formula:
[Category] = “Bikes”
This could work for few categories. But if you have 40. Role membership would be hard to maintain. Same thing can be handled by one role using configuration table.
Solution
For purpose of blog post, I will enter data manually using “Enter Data” option. You can replace data in table with real user names and email addresses. In real life I use for this configuration SQL Server Master Data Services, but any table would do.
Table security can stay unrelated


What I’ll need is to create calculated column to DimProduct table. Let’s call it Security_Category using function lookupvalue searching in security configuration table.
DAX formula
Security_Category = LOOKUPVALUE(security_mapping[CATEGORY],security_mapping[CATEGORY],[Category],security_mapping[USER],"domain\username")
first column is the value I want to return, second is searched column, third value I want to find, fourth second column to be searched, fifth value.
Arguments 4,5 are here to restrict access to particular user if we had multiple users in same configuration table.
DAX filter needs to be evaluated as true value. I can check if anything was found by function ISBLANK function
DAX formula
Security_Category = ISBLANK(LOOKUPVALUE(security_mapping[CATEGORY],security_mapping[CATEGORY],[Category],security_mapping[USER],"domain\username"))
Formula returns now true, where records weren’t found. I need it oppositely and can switch logical value using function NOT
DAX formula
Security_Category = NOT(ISBLANK(LOOKUPVALUE(security_mapping[CATEGORY],security_mapping[CATEGORY],[Category],security_mapping[USER],"domain\username")))
As next step I can create new role Dynamic Security in Power BI desktop and apply Row Filter on DimProduct table referencing calculated column with formula from previous step.
I can check what if visible to role members using View as role Dynamic Security.
To make it really dynamic, I will replace static value “domain\username” with function USERNAME() in formula.
DAX formula:
Security_Category = NOT(ISBLANK(LOOKUPVALUE(security_mapping[CATEGORY],security_mapping[CATEGORY],[Category],security_mapping[USER],USERNAME())))
Function USERNAME behaves differently in desktop where it returns username in format “domain\username” and when published to powerbi.com where it returns email address username@domain.com
Therefore before publihing replace column USER with column EMAIL in DAX formula
Security_Category = NOT(ISBLANK(LOOKUPVALUE(security_mapping[CATEGORY],security_mapping[CATEGORY],[Category],security_mapping[EMAIL],USERNAME())))
Conclusion
In this blog post I covered how to implement dynamic security in Power BI without relationships in data model using DAX formulas. Let me know if you have any questions or comments

Jiri