Kdykoliv na školení Power BI přijde někdo z controllingu, tak se ta otázka objeví zhruba do první hodiny: „A jak se v tom dají upravovat čísla?" BI bylo odjakživa primárně o zobrazování. Nikoliv o editaci. Vojta Šíma, se kterým natáčím podcast Cesta do Fabricu, to říká na svých školeních na rovinu: přišli jste z Excelu, tak pojem buňka tady neexistuje — na to zapomeňte.
V posledním díle podcastu jsme s Vojtou prošli celou historii tady té funkcionality — od prehistorie přes mezistupně až po Fabric Planning. Tenhle post to shrnuje i s technickými detaily, které se do podcastu nevešly.
Potřeba zapisovat data zpět do modelu není nová. V době SSAS Multidimensional — na jehož engine je Power BI postaveno — to existovalo pod názvem writeback. Pod measure group vznikly minimálně 2 partitions: jedna zobrazovala aktuální data z databáze, druhá držela změny a zapisovala je do databázové tabulky. Uživatel mohl zapisovat buď přes MDX příkazy (k tomu existovaly nástroje třetích stran), nebo od Excelu 2010 přímo z kontingenční tabulky připojené na multidimenzionální model.
Záludnost spočívala v alokaci. Pokud člověk plánoval na vyšší úrovni hierarchie — třeba na úrovni roku a produktové kategorie — musela se ta čísla zhmotnit na detailní úrovni. Rovnoměrná alokace mohla v horším případě vygenerovat statisíce až miliony řádků. Podle toho, kolik bylo možných kombinací. Kdo tohle zažil v produkci, ví, o čem mluvím.
V době Power BI a SSAS Tabular (2. generace) Microsoft na writeback dlouho nativní odpověď neměl. Takže kdo potřeboval zapisovat — třeba jen komentáře — sáhl po Power Apps. Formulářové aplikace, které uměly zapsat do libovolné destinace. Nicméně Power Apps má pro mě strmou křivku učení. A licenční model? SharePoint list byl zdarma. Přímý zápis do SQL databáze byl placený konektor.
Paralelně s tím přišly Translytical Task Flows — Power BI funkcionalita, která ve spolupráci s User Data Functions (UDF) ve Fabricu umožňuje writeback přímo z Power BI prostředí. Pojmenování je trochu chaos, protože ve stejnou dobu vyšly i User Defined Functions v DAXu — a obojímu se říká UDF. Interně si to rozlišujeme jako UDFA (Fabric item) vs. UDFX (DAX).
UDF je v podstatě libovolný Python kód — typicky právě zápis zpět do zdroje. Uživatel klikne na řádek v reportu, napíše komentář do textového pole, a během vteřiny je to v databázi. Není to jako klikat přímo do buňky v Excelu. Je to textové pole, které je furt na stejném místě bez ohledu na to, kde kliknete. Ale je to nejbližší věc, co Power BI momentálně nabídlo — a pro komentáře nebo jednoduché přírůstky to funguje.
Plan item je nový item ve Fabricu, který vypadá a chová se jako Excel. Máte tam pivotku, do které se kliká. Pojem buňka existuje. Připojíte se na existující sémantický model, data jsou živá, a více lidí se dívá na stejné místo. Žádné sdílené excely na SharePointu, žádné posílání příloh mailem.
Plan item nabízí tři typy sheetů:
- Planning sheet — klasický forecasting a budgeting. Připojíte se na sémantický model, vykonstruujete pivotku, a v režimu scénáře přepisujete čísla. Ta reálná data v pozadí se nemění — scénář je váš sandbox.
- Power Table sheet — správa master dat. Typický příklad: kurzovní lístek. Britská pobočka plánuje v GBP, konsolidace je v EUR — Power Table sheet to umí vzít v potaz.
- Intelligence sheet — vizuální vrstva přímo v Plan itemu. Waterfally, progress bary, grafy scénářů. Teoreticky nemusíte výsledky exportovat do Power BI reportu — je to integrovaný frontend.
Writeback v Plan itemu slouží k uložení naplánovaných dat pro další komponenty — sémantický model, pipeline, reporting. Aktuálně jde writeback pouze do SQL databáze ve Fabricu. Lakehouse ani warehouse zatím ne.
Jak se data zapíší závisí na zvoleném módu:
- Long (default) — 1 řádek za 1 buňku. Pokud máte rok, měsíce a 10 produktů, tak to vynásobte. Hodně řádků. Stejný princip jako historická alokace v multidimenzionálu.
- Wide — sloupcový formát, méně řádků. Atributy se stanou sloupci. Víc připomíná strukturu pivotky.
- Long with changes — přidává preview value a latest value k každé změně. Máte historii, ale i víc dat.
Podle dokumentace Plan item sám o sobě nic nestojí — Microsoft za něj neúčtuje žádné extra CU ani licence. Realita na pozadí je ale trochu jiná.
Celá pravda: každý Plan item automaticky vyrobí Fabric SQL Database, která ukládá veškerá metadata a operace. SQL databáze zadarmo není. Vojta si měřil hodinu aktivního klikání a vrtění v Plan itemu — řádově 1 000 CU. Na F2 kapacitě máte denní budget 172 800 CU (86 400 sekund × 2). Hodina plánování denně je tedy zhruba 0,5 % denního budgetu.
K tomu přičtěte, že SQL databáze dotáčí CU ještě nějakou dobu po operaci — reálně to může být 15–20 000 CU i víc. Výsledek: nezruinuje vás to. Ale není to zadarmo. A pro planning, který probíhá typicky v špičkách — jednou za měsíc nebo za kvartál — dává smysl kapacitu při potřebě škálovat nahoru a po skončení planningového cyklu zase dolů.
Jazyk formul v Plan itemu je prakticky Excel. IF, SUM, COUNT — nic nového. Jedna drobnost, která ale plannery potěší: pokud chcete zvýšit hodnotu o 9 %, napíšete +9 %. Systém si to přepočítá sám. Nemusíte si pamatovat, že to je ×1,09. Ocení to i lidé, kteří trojčlenku ovládají, ale radši ji neřeší.
Kontext, jak Planning vůbec vznikl: Microsoft tuhle funkcionalitu nenaprogramoval od nuly. Integroval řešení firmy Lumel (přibližně 400 zaměstnanců), která historicky dodávala custom vizuály pro writeback a plánování v Power BI. Nešlo o akvizici — šlo o partnerství, kde Lumel integroval svůj produkt přímo do Fabricu. Výhoda pro obě strany: Microsoft nabídne nativní plánovací nástroj jako součást platformy, Lumel neřeší procurement a certifikační procesy u každého zákazníka zvlášť. Pokud jste někdy zažili debatu s nákupním oddělením o schválení nástroje třetí strany, tak víte, proč to byl pro obě strany no-brainer.
Plan item je aktuálně v preview. Defaultně vypnutý — musíte ho explicitně zapnout v admin portálu. Po zapnutí počítejte se zpožděním 15–20 minut, než se aktivuje. Dostupnost závisí na regionu. West Europe funguje — Vojta testoval. Pokud máte tenant jinde, ověřte si seznam podporovaných regionů v dokumentaci předtím, než zákazníkovi slíbíte demo.
Dnešní post vám měl ukázat cestu od historického SSAS writeback přes Power Apps a Translytical Task Flows až po Fabric Planning. Je to první nativně integrovaná odpověď v Power BI ekosystému na otázku z controllingu, která mě provází od začátku kariéry.
Celou historii jsme s Vojtou Šímou probrali v podcastu Cesta do Fabricu — pokud dáváte přednost mluvenému slovu, poslechněte si ho tam.
Žádné komentáře:
Okomentovat