Logický operátor IN můžeme mimo jiné použít pro sestavení filtru ve funkci CALCULATE(). Na levé straně logického operátoru se nachází sloupce, ve kterých chceme najít hodnoty z tabulky uvedené na pravé straně operátoru. Hodnot v tabulce na pravé straně může být více, což je hlavní rozdíl oproti standartním operátorům typu rovná se, nerovná se a atd., kde nastavujeme filtr vždy pouze na jednu hodnotu.
Příklad použití operátoru IN ve funkci CALCULATE
Příklady v tomto příspěvku jsou vytvořeny ve cvičném Power BI souboru Adventure Works DW 2020.pbix, který je volně dostupný ke stažení na internetu. Odkaz na stažení souboru s řešením můžete najít níže pod tímto příspěvkem.
Měřítko:
Následují příklady použití operátoru IN pro vytvoření filtrů ve funkci CALCULATE().
Filtrování jednoho sloupce pomocí IN operátoru
Měřítko:
Na levé straně filtru je název sloupce obsahující barvy produktů, ve kterém hledáme hodnoty z tabulky uvedené na pravé straně operátoru IN. Tabulka na pravé straně operátoru IN je vytvořena pomocí konstruktoru tabulky. Konstruktor tabulky se v jazyku DAX sestavuje pomocí složených závorek {}. Obě nová měřítka můžeme vložit do tabulky s kategoriemi produktů v řádcích.
Měřítko [Prodeje] vrací v každém řádku tabulky sumu prodejů za produkty v dané kategorii. Měřítko [Prodeje černých a modrých produktů] vrací v každém řádku tabulky hodnotu představující prodeje produktů v dané kategorii, ale pouze produktů v černé a modré barvě.
Stejně jako u ostatních logických filtru ve funkci CALCULATE(), také filtry vytvořené pomocí operátoru IN přepisují vnější filtry nastavené na stejný sloupec.
Měřítko [Prodeje černých a modrých produktů] nyní ignoruje vnější filtry z řádků tabulky a vrací vždy sumu prodejů za modré a černé produkty. Hodnota měřítka je v každém řádku tabulky stejná, protože logický filtr nastavený uvnitř měřítka [Prodeje černých a modrých produktů] přepíše všechny vnější filtry ze sloupce použitého pro logický filtr, které jsou aktivní v době vyhodnocení měřítka.
Operátor IN s funkcí KEEPFILTERS
Měřítko:
Nyní bude měřítko vyhodnoceno v logickém AND vztahu se všemi vnějšími filtry, včetně filtrů nastavených na stejný sloupec, který je součástí logického filtru explicitně definovaného uvnitř funkce CALCULATE().
Nové měřítko [Prodeje černých a modrých produktů KEEPFILTERS] vrací v prvním řádku tabulky sumu za prodeje černých produktů. Ve druhém řádku tabulky vrací měřítko sumu za prodeje modrých produktů. Pro ostatní barvy se filtry působící z řádků tabulky a filtr nastavený uvnitř měřítka vylučují, a výsledkem měřítka je hodnota BLANK. V řádku souhrnů výsledek měřítka představuje sumu prodejů pro modré a černé produkty.
Negace operátoru IN
Měřítko:
Pokud vložíme nové měřítko [Prodeje kromě černých a modrých produktů] do původní tabulky s kategoriemi produktů v řádcích, můžeme vidět, že hodnota měřítka [Prodeje] odpovídá součtu měřítek [Prodeje černých a modrých produktů] a [Prodeje kromě černých a modrých produktů].
Filtrování více sloupců pomocí IN operátoru
Měřítko:
Nové měřítko můžeme vložit do vizuálu tabulky s fiskálními roky v řádcích a s dalším měřítkem [Prodeje], které vrací sumu prodejů v aktuálním kontextu vyhodnocení, bez explicitně definovaných filtrů uvnitř měřítka.
Pokud v průřezu s kategoriemi produktů vybereme kategorie "Bikes" a "Clothing", a v průřezu s barvami vybereme barvy "Black" a "Blue", výsledek obou měřítek bude stejný.
Filtry v průřezech ovlivňují pouze výsledek měřítka [Prodeje]. Měřítko [Prodeje produktů (černé, modré, kola, oblečení)] tyto filtry ignoruje, protože se jedná o filtry nastavené na stejné sloupce, které jsou použity v logickém filtru uvnitř měřítka. Výsledky obou měřítek se shodují, protože filtry nastavené v průřezech jsou stejné, jako filtry nastavené uvnitř měřítka [Prodeje produktů (černé, modré, kola, oblečení)].
Pokud v průřezech nastavíme filtry například na kategorii "Clothing" a barvu "Blue", výsledek měřítka [Prodeje] bude představovat v každém řádku tabulky prodeje modrých produktů z kategorie oblečení, v kontextu aktuálního fiskálního roku. Měřítko [Prodeje produktů (černé ,modré, kola, oblečení)] opět tyto filtry z průřezů ignoruje.
Stejně jako u všech ostatních filtrů ve funkci CALCULATE(), i v tomto případě můžeme změnit chování filtrů pomocí funkce KEEPFILTERS() tak, aby nedocházelo k přepsání vnějších filtrů nastavených na stejné sloupce, ale k jejich průniku.
Filtrování pomocí operátoru IN a dynamických tabulek
Měřítko:
Filtr v měřítku [Prodeje ostatní barvy] bude vracet všechny barvy, kromě těch, které uživatel vybere v průřezu.
Měřítko [Prodeje] vrací v každém řádku tabulky sumu prodejů produktů v dané kategorii a v barvách "Black" a "Blue". Měřítko [Prodeje ostatní barvy] vrací sumu prodejů produktů v dané kategorii podle aktuálního řádku tabulky ve všech barvách, kromě černé a modré barvy vybrané v průřezu.
Pozn. Poslední příklad s měřítkem vracejícím prodeje za všechny ostatní barvy, než které vybere uživatel v průřezu, může být vytvořen i jednodušeji bez operátoru IN, příklad je pouze ilustrativní s cílem zobrazit různé možnosti použití funkce IN.
Shrnutí
Komentáře
Okomentovat