Jak vyhledat duplicitní řádky v tabulce v Power BI pomocí DAX

Úvodní obrázek

Při tvorbě Tabulárního modelu se můžeme setkat se situací, kdy se vyskytují duplicitní záznamy v tabulkách, ve kterých by měly být pouze záznamy jedinečné. Odstranit duplicitní záznamy v tabulkách můžeme více různými způsoby, ať už v Power Query nebo přímo ve zdroji, například na SQL Serveru. V tomto příspěvku si ukážeme velice jednoduchý způsob, jak můžeme vyhledat duplicitní řádky v tabulce, která je již nahraná v Tabulárním modelu, například v Power BI, v Power Pivot v Excelu nebo SSAS Tabular.

K tomuto tématu je k dispozici také video:

V následující části příspěvku si ukážeme jeden z možných způsobů, jak vyhledat duplicity v tabulkách nahraných v Power BI modelu.

Vyhledání duplicit v tabulce pomocí DAX

V příkladu budeme pracovat s tabulkou 'Produkty_duplicity', která je oproti originální verzi tabulky 'Product' ze cvičné databáze AdwentureWorks mírně upravena pro účely tohoto příspěvku. Tento upravený soubor je k dispozici ke stažení níže pod tímto příspěvkem.

Jak vyhledat duplicitní řádky v tabulce v Power BI pomocí DAX

Jak je možné vidět na obrázku výše, mezi tabulkou 'Produkty_duplicity' a tabulkou 'Sales' je relace M:N, protože tabulka 'Produkty_duplicity' obsahuje duplicitní řádky které znemožňují vytvoření standardní relace 1:N.

Pokud bychom chtěli vyhledat ty řádky, které se v tabulce 'Produkty_duplicity' opakují, můžeme použít přímo jazyk DAX a počítaný sloupec v této tabulce. V novém sloupci si jednoduše spočítáme, kolikrát se aktuální řádek vyskytuje v použité tabulce. V počítaném sloupci tedy budeme sčítat počet řádků ve stejné tabulce pomocí funkce COUNTROWS(). Pro tento výpočet pak vytvoříme filtr, který se bude skládat ze všech hodnot ze všech sloupců v aktuálním řádku tabulky, ve kterém bude výpočet vyhodnocen. Díky principu změny kontextu řádku na kontext filtru je takovýto výpočet velice jednoduchý.

Počítaný sloupec:

Počet výskytů =
CALCULATE
(
    COUNTROWS(Produkty_duplicity)
)

Výraz COUNTROWS(Produkty_duplicity) je vyhodnocen v kontextu filtru každého řádku, který je vytvořen funkcí CALCULATE(), a to díky změně kontextu řádku na kontext filtru. Pokud je výsledkem výše uvedeného výpočtu hodnota 1, znamená to, že aktuální záznam je v celé tabulce jedinečný. Pokud je v konkrétním řádku výsledná hodnota větší než 1, stejný záznam se v tabulce vyskytuje opakovaně. Tabulku si tedy můžeme seřadit sestupně podle nového počítaného sloupce, a snadno tak identifikovat duplicitní záznamy.

Jak vyhledat duplicitní řádky v tabulce v Power BI pomocí DAX 2

Na obrázku výše můžeme vidět, že v tabulce 'Produkty_duplicity' je jeden stejný řádek dvakrát. Pokud jeden z duplicitních řádků odstraníme, například v Power Query, můžeme mezi tabulkami vytvořit požadovanou relaci 1:M.

Jak vyhledat opakující se hodnoty v jednom sloupci

Pokud bychom chtěli zjistit počet stejných záznamů v konkrétních sloupcích, můžeme upravit filtr ve funkci CALCULATE(), například pomocí funkce ALLEXCEPT(). Následující výraz bude vracet v každém řádku tabulky počet záznamů se stejným názvem produktu.

Počítaný sloupec:

Počet verzí produktu =
CALCULATE
(
    COUNTROWS(Produkty_duplicity),
    ALLEXCEPT(Produkty_duplicity,Produkty_duplicity[Product])
)

Pomocí funkce ALLEXCEPT() odstraníme filtry vytvořené změnou kontextu řádku na kontext filtru, kromě filtrů ze sloupce uvedeného ve druhém argumentu funkce, v našem příkladu kromě sloupce s názvy produktů. Výsledkem nového počítaného sloupce je tedy počet výskytů produktů se stejným názvem.

Jak vyhledat duplicitní řádky v tabulce v Power BI pomocí DAX 4

Jak můžeme vidět na obrázku výše, v tabulce je poměrně hodně produktů se stejným názvem, a jednotlivé verze produktů se liší buď prodejní cenou, nebo náklady na výrobu.

Shrnutí

V příkladu uvedeném v tomto příspěvku bylo možné vidět, jak lze jednoduše vyhledat duplicitní záznamy v tabulkách nebo v jednotlivých sloupcích pomocí DAX vzorce. Pokud chceme odstranit duplicitní záznamy z tabulky, můžeme použít například nástroj Power Query, nebo opravit tabulky přímo ve zdroji, ze kterého data do Tabulárního modelu čerpáme.

Stáhnout soubor s řešením.
č. 47

Komentáře