Transformace dat pomocí Power Query v Power BI

Aplikace Power BI používá integrovaný nástroj ke zpracování dat s názvem Power Query. S tímto nástrojem se můžete mimo jiné setkat i v kancelářském softwaru MS Excel. Z prostředí Power BI Desktop se lze do rozhraní Power Query nejjednodušeji dostat přes ikonu Home → Transform Data. Uživatelské rozhraní sestává z jednoho okna, kde je v centrální části náhled na aktuálně zpracovaná data, nahoře je karta ikon pro běžné transformace a vpravo je posloupnost definovaných transformací. Entita v tomto prostředí se nazývá query a seznam těchto entit v rámci otevřeného projektu je v levém sloupci.

03-power-query-orientation.png Fig — Prostředí editoru Power Query. (1) Karta s odkazy na běžné operace; (2) seznam query v otevřeném Power BI projektu; (3) řádek vzorců; (4) aktuální pohled na data; (5) seznam aplikovaných transformací na data; (6) stavový řádek s metadaty.

V řádku vzorců (3) lze vidět kód v jazyku M sloužící k definici transformací. Tento jazyk je specifický pro Power Query a je založen na funkcionálním programování.


📝 Pro další práci bude využit projekt vytvořený v předchozím cvičení, využívající Přehled osob s prokázanou nákazou dle hlášení krajských hygienických stanic (v2).

Správa transformačního řetězce, klonování query

Query popisuje postup načtení a úpravy dat. Při obnovení dat se tento postup znovu vyhodnotí nad zdrojem. Změny provedené v Power Query neupravují původní CSV soubor, ale určují podobu výsledné tabulky.

Každá použitá operace je uváděna v pravé části uživatelského rozhraní. Kliknutím na různé kroky v seznamu lze zobrazit náhled datové tabulky v příslušné fázi. Pokud by chtěl uživatel některý z kroků smazat nebo změnit jeho parametry, lze k tomu použít ikonu křížku vlevo od názvu kroku, resp. ikonu ozubeného kola vpravo od názvu kroku. Je potřeba si ale dát pozor na kroky následující, které pravděpodobně předpokládají určitou strukturu nebo vlastnost dat. Nové transformace lze také vkládat mezi jednotlivé kroky a není nutné je umisťovat na konec posloupnosti transformací.

Q1: Jaké je momentální pořadí transformací (5) nad načteným CSV souborem v projektu?

Prozkoumejte, jak se změní data při přepnutí na některou z předchozích transformací.

Užitečná může být možnost naklonovat query nebo vytvořit query, která se bude na jinou odkazovat. To lze provést přes nabídku po kliknutí pravým tlačítkem myši na název query v seznamu vlevo. Volba Duplicate vytvoří kopii bez provázání, Reference se bude odkazovat na výsledný dataset po všech úpravách. Pokud by později došlo ke změně transformačního řetězce v referované query, projeví se změny i ve všech navázaných.

※ Doporučuji pro následující pokusy vytvořit pomocí Reference novou query odkazující na načtená data. Původní query ponechte s jednotlivými případy, protože ji budeme potřebovat v dalších cvičeních. Pokud chcete nový příklad začít opět nad původními daty, vytvořte z původní query další referenci.

Výběr sloupců a řádků

V sekci Home → Manage Columns jsou dvě ikony pro základní transformaci měnící dimenzionalitu dat — odstranění atributů (sloupců). Rozdíl mezi nimi je pouze v tom, jakým způsobem se sloupce zvolí. Ikona Choose Columns nabídne seznam atributů a zaškrtávacím políčkem uživatel indikuje ty, které mají zůstat. Oproti tomu Remove Columns odstraní momentálně vybrané sloupce, případně je v podnabídce možnost výběr logicky negovat.

Pro potřebu redukce řádků (záznamů) existuje dvojice ikon v sekci Home → Manage Rows, první z nich je pozitivní, tj. nechá záznamy vyhovující zvolené podmínce, druhá je negativní, tedy smaže záznamy vyhovující podmínce. Podmínky zde nemohou být příliš komplexní. Lze odstranit horních, resp. dolních N řádků, řádky obsahující chybu, řádky prázdné nebo řádky v nějakém ohledu duplicitní. Duplicitou se rozumí kombinace hodnot ve vybraných sloupcích. V řešeném datasetu by při selekci atributů pohlavi a kraj_nuts_kod (kraj, NUTS3) a volbě Remove Duplicates zbylo jen 30 záznamů – jeden muž a jedna žena pro každý kraj (vč. nevyplněného kraje).

※ I když ve své podstatě není nezbytné redukovat dimenzionalitu dat již v tomto kroku, je to vhodné kvůli úspoře výpočetního času a paměti. Typicky tato redukce bývá jednou z prvních operací v řetězci transformací.

Q2: Jakým způsobem se různé pokyny k transformaci přepíší do jazyka M?

Filtrování záznamů, změna datového typu, přejmenování atributů

Kromě horní karty s ikonami je v uživatelském rozhraní i několik jiných aktivních prvků. V záhlaví datové tabulky jsou u jména atributu dvě tlačítka. Levé z nich slouží jako přepínač datových typů. Vhodné nastavení datových typů je důležité pro správnou funkcionalitu vizualizací a agregací. Pokud by atribut s číselným charakterem byl definován jako text, nepůjde jeho hodnoty numericky agregovat a změní se i způsob jeho řazení.

Filtrovací ikona vpravo od názvu atributu skrývá podobnou nabídku jako v prostředí MS Excel. Nachází se zde možnost data seřadit podle hodnoty v příslušném sloupci a vyfiltrovat záznamy dle hodnoty v daném sloupci. Filtraci lze provést určením příslušného pravidla (číslo v rozmezí od–do, text začínající určitým řetězcem, datum vzdálené maximálně X dnů od dneška, ...) nebo zaškrtnutím konkrétních hodnot. Je potřeba si dát pozor, že ve výpisu hodnot nemusí být uvedeny všechny, které se nacházejí v datasetu. Nástroj se orientuje pouze podle prvních 1000 záznamů a je možné vynutit Load more pro zpracování celého datasetu. Počet hodnot, které lze takto vypsat, je navíc omezen. Vyfiltrovaná data budou opět odstraněna z query, stejně jako v případě odstraňování řádků.

Pro přejmenování atributu stačí dvakrát kliknout na název, aby se zobrazilo pole pro úpravu.

Kontrola kvality dat

Před agregováním je vhodné prozkoumat, jaké hodnoty se ve sloupcích skutečně nacházejí. Power Query k tomu nabízí na kartě View tři nástroje:

※ Ve výchozím nastavení se profilování provádí pouze nad prvními 1000 řádky. Kliknutím na informaci Column profiling based on top 1000 rows ve spodní části editoru lze přepnout na celý dataset. U větších dat může výpočet chvíli trvat.

Zvolte query s původními daty a prozkoumejte sloupce vek, pohlavi a datum.

Q3: Obsahují sloupce chybějící hodnoty? Jaké jsou nejnižší a nejvyšší věky a jaké období data pokrývají?

Označení hodnoty jako platné ještě neznamená, že je věcně správná. Například neobvykle vysoký věk může být platným celým číslem, ale přesto vyžaduje ověření.

Chybějící hodnota null, prázdný text, nula a chyba při převodu datového typu mají různý význam. Nulový věk například může označovat dítě mladší jednoho roku; neznámý věk tímto způsobem nahrazovat nelze. Před odstraněním nebo nahrazením problematických hodnot je potřeba zjistit jejich význam a zvážit, jak změna ovlivní výsledek analýzy.

Agregování záznamů

Nástroj nabízí dvě agregační operace, které nějakým způsobem slučují podobné záznamy a vypočítávají pro každou skupinu souhrnnou hodnotu. První z nich je operace Group By, která by měla být známa z jazyka SQL. Příslušná ikona je Transform → Group By. Po stisknutí se objeví dialog, ve kterém je potřeba zvolit atribut, podle kterého se budou data slučovat, a operaci aplikovanou na vybraný sloupec. V režimu Advanced má uživatel oproti režimu Basic možnost pracovat s více atributy.

03-power-query-groupby.png Fig — Operace Group By k získání počtu případů a průměrného věku podle krajů a pohlaví.

Q4: Jaký je praktický rozdíl mezi Count Distinct Rows a Count Rows? V jakém případě vrátí tyto agregační funkce různý výsledek?

Q5: Jaký byl počet nakažených v jednotlivých okresech v Plzeňském kraji v dubnu 2020?

Odpověď CZ0321 - Domažlice - 236;
CZ0322 - Klatovy - 70;
CZ0323 - Plzeň-město - 60;
CZ0324 - Plzeň-jih - 29;
CZ0325 - Plzeň-sever - 9;
CZ0326 - Rokycany - 5;
CZ0327 - Tachov - 32;

※ Položky, ke kterým není v datech žádný záznam, se ve výsledku operace Group By nezobrazují.

Pivotování a odpivotování sloupců

Druhým agregačním mechanismem je pivotování sloupců. Při označení sloupce a zvolení Transform → Pivot Column je v dialogu nutné vybrat sloupec se sumarizovanými hodnotami a zvolit příslušnou funkci. Po potvrzení dojde k operaci, při které se místo původního sloupce vytvoří N nových sloupců, jeden pro každou unikátní hodnotu vyskytující se v původním sloupci. Řádky budou redukovány tak, aby zbyly pouze unikátní kombinace hodnot zbývajících atributů. V nově vytvořeném sloupci pak budou hodnoty odpovídající sumarizované veličině pro příslušnou kombinaci atributů.

Například uvažujme dataset s atributy datum, vek, pohlavi a kraj_nuts_kod. Po označení atributu pohlavi k pivotování volíme atribut vek a agregaci počtem záznamů. Výsledná tabulka obsahuje původní sloupce datum a kraj_nuts_kod. Kromě toho vznikly dva sloupce – M a Z, ve kterých jsou hodnoty počtu nových případů v daném kraji a dni.

K operaci Pivot Column existuje i obrácená (nikoliv reverzní ve smyslu získání původních hodnot) operace Transform → Unpivot Columns. Je potřeba označit sloupce, které odpovídají kategoriím budoucího atributu. Pro každou hodnotu ve vybraných sloupcích vznikne samostatný řádek; hodnoty null se vynechávají. Počet výsledných řádků je proto nejvýše součinem počtu vstupních řádků a počtu odpivotovaných sloupců.

03-power-query-pivot.png

K uvědomění

Q6: Co je to query v kontextu Power Query?

Q7: V čem se liší výsledek operace Group By a operace Pivot Column?

Q8: Jaký je rozdíl mezi možnostmi duplikovat a referencovat query? Příklady použití?


Materiál k cvičení KIV/INS · týden #4 · ZS 2026/2027

Autor: Yuki Kryl · poslední úprava: 13. 10. 2026

Využití AI: GPT-6 Astra via Codex pro jazykové a formátovací úpravy, dále pro diskusi nad obsahem a strukturou cvičení.