Použití funkcí modifikátoru filtru

Dokončeno

Při použití CALCULATE funkce můžete předat funkce pro úpravu filtru, které umožňují dosáhnout více než přidávání samotných filtrů.

Odebrání filtrů

REMOVEFILTERS K odebrání filtrů z kontextu filtru použijte funkci DAX jako CALCULATE výraz filtru. Můžete odebrat filtry z jednoho nebo více sloupců nebo ze všech sloupců jedné tabulky.

Poznámka

Funkce REMOVEFILTERS je relativně nová. V předchozích verzích jazyka DAX jste filtry odebrali pomocí funkce jazyka ALL DAX nebo variant, včetně ALLEXCEPT funkcí a jazyka ALLNOBLANKROW DAX. Tyto funkce se chovají jako modifikátory filtru i jako funkce, které vracejí objekty tabulky s různými hodnotami. O těchto funkcích se teď zmiňujeme proto, že pravděpodobně narazíte na dokumentaci a ukázky vzorců, které pomocí nich filtry odebírají.

V následujícím příkladu přidáte do tabulky Sales novou míru, která vyhodnocuje míru Revenue,ale odebere filtry z tabulky Sales Territory . Naformátujte míru jako měnu se dvěma desetinnými místy.

Revenue Total Region = CALCULATE([Revenue], REMOVEFILTERS('Sales Territory'))

Do maticového vizuálu na stránce 2 v sestavě přidejte míru Revenue Total Region (Celkové výnosy podle oblasti). Matice vizuálu se seskupí podle tří sloupců tabulky Sales Territory u řádků: Group (Skupina), Country (Země) a Region (Oblast).

Obrázek ukazující matici s názvem Reseller Revenue (Výnosy prodejce), která má sloupce Group (Skupina), Country (Země) a Region (Oblast) seskupené na řádcích a souhrny ve sloupcích Revenue (Výnosy) a Revenue Total Region (Celkové výnosy podle oblasti). Hodnota Revenue Total Region (Celkové výnosy podle oblasti) je stejná pro všechny skupiny řádků.

Všimněte si, že všechny hodnoty ve sloupci Revenue Total Region (Celkové výnosy podle oblasti) jsou stejné. Jedná se o hodnotu celkových výnosů.

I když tento výsledek sám o sobě není užitečný, když ho použijete jako jmenovatele v poměru, vypočítá procento celkového součtu. Proto nyní přepíšete definici míry Revenue Total Region (Celkové výnosy podle oblasti) následující definicí. (Tato nová definice změní název míry a deklaruje dvě proměnné. Nezapomeňte míru naformátovat jako procento se dvěma desetinnými místy.)

Revenue % Total Region =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalRegionRevenue =
    CALCULATE(
        [Revenue],
        REMOVEFILTERS('Sales Territory')
    )
RETURN
    DIVIDE(
        CurrentRegionRevenue,
        TotalRegionRevenue
    )

Ověřte, že maticový vizuál teď zobrazuje hodnoty Revenue % Total Region (Celkové % výnosů podle oblasti).

Obrázek ukazuje maticový vizuál s názvem Reseller Revenue (Výnosy prodejce), který má sloupce Group (Skupina), Country (Země) a Region (Oblast) seskupené na řádcích a souhrny ve sloupcích Revenue (Výnosy) a Revenue % Total Region (Celkové % výnosů podle oblasti).

Nyní vytvoříte další míru, ale tentokrát vypočítáte poměr výnosů pro oblast vydělený výnosy dané země.

Před dokončením tohoto úkolu si všimněte, že hodnota Revenue % Total Region (Celkové % výnosů podle oblasti) v oblasti Southwest (Jihozápad) je 22,95 %. Prozkoumejte kontext filtru pro tuto buňku. Přepněte do zobrazení dat a pak v podokně Pole vyberte tabulku Sales Territory (Prodejní oblast ).

Použijte následující filtry sloupců:

  • Group (Skupina) – North America (Severní Amerika)
  • Country (Země) – United States (Spojené státy americké)
  • Region (Oblast) – Southwest (Jihozápad)

Obrázek ukazuje filtry tabulky Power BI Desktopu pro tabulku Sales Territory (Prodejní oblast). Filtry jsou použité u: (1) Group = North America (Skupina = Severní Amerika), (2) Country = United States (Země = Spojené státy) a (3) Region = Southwest (Oblast = Jihozápad).

Všimněte si, že filtry omezují tabulku pouze na jeden řádek. Pokud chcete vypočítat poměr výnosů oblasti k výnosům země, vymažte filtr ze sloupce Region (Oblast).

Obrázek ukazuje kontextovou nabídku sloupce; příkaz Vymazat filtry je zvýrazněný.

Všimněte si, že nyní existuje pět řádků, z nichž každý patří do země United States (Spojené státy americké). Když tedy vymažete filtry sloupce Region (Oblast), ale zachováte filtry u sloupců Country (Země) a Group (Skupina), budete mít nový kontext filtrů, který je určený pro zemi dané oblasti.

V následující definici míry si všimněte, jak můžete vymazat nebo odebrat filtr ze sloupce. V logice DAX se jedná o malou a drobnou změnu, která se provádí ve vzorci míry Revenue % Total Region (Celkové % výnosů podle oblasti): Funkce REMOVEFILTERS teď odebere filtry ze sloupce Region (Oblast ) místo všech sloupců tabulky Sales Territory (Oblast prodeje ).

Revenue % Total Country =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalCountryRevenue =
    CALCULATE(
        [Revenue],
        REMOVEFILTERS('Sales Territory'[Region])
    )
RETURN
    DIVIDE(
        CurrentRegionRevenue,
        TotalCountryRevenue
    )

Přidejte míru Revenue % Total Country (Celkové % výnosů podle země) do tabulky Sales (Prodej ) a naformátujte ji jako procento se dvěma desetinnými místy. Novou míru přidejte do maticového vizuálu.

Obrázek ukazuje maticový vizuál s názvem Reseller Revenue (Výnosy prodejce), který má sloupce Group (Skupina), Country (Země) a Region (Oblast) seskupené na řádcích a souhrny ve sloupcích Revenue (Výnosy), Revenue % Total Region (Celkové % výnosů podle oblasti) a Revenue % Total Country (Celkové % výnosů podle země). Pouze hodnoty Revenue % Total Country (Celkové % výnosů podle země) pro United States (Spojené státy americké) netvoří 100 %.

Všimněte si, že všechny hodnoty, s výjimkou hodnot pro oblasti Spojených států amerických, tvoří 100 procent. Důvodem je to, že ve společnosti Adventure Works se pro Spojené státy americké používají oblasti, ale pro jiné země ne.

Poznámka

Tabulkové modely nepodporují nepravidelné hierarchie, což jsou hierarchie s proměnlivou hloubkou. Proto se běžně při návrhu opakují nadřazené hodnoty (nebo jiné nadřazené prvky) na nižších úrovních hierarchie. Například Austrálie nemá oblast, takže se hodnota země/oblasti opakuje jako název oblasti. Vždy je lepší ukládat smysluplnou hodnotu místo hodnoty BLANK.

Dalším příkladem je poslední míra, kterou vytvoříte. Přidejte míru Revenue % Total Group (Celkové % výnosů podle skupiny) a naformátujte ji jako procento se dvěma desetinnými místy. Potom novou míru přidejte do maticového vizuálu.

Revenue % Total Group =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalGroupRevenue =
    CALCULATE(
        [Revenue],
        REMOVEFILTERS(
            'Sales Territory'[Region],
            'Sales Territory'[Country]
        )
    )
RETURN
    DIVIDE(
        CurrentRegionRevenue,
        TotalGroupRevenue
    )

Obrázek ukazuje maticový vizuál s názvem Reseller Revenue (Výnosy prodejce), který má sloupce Group (Skupina), Country (Země) a Region (Oblast) seskupené na řádcích a souhrny ve sloupcích Revenue (Výnosy), Revenue % Total Region (Celkové % výnosů podle oblasti), Revenue % Total Country (Celkové % výnosů podle země) a Revenue % Total Group (Celkové % výnosů podle skupiny).

Když odeberete filtry ze sloupců Region (Oblast ) a Country (Země ) v tabulce Sales Territory (Prodejní oblast), míra vypočítá výnosy z oblasti jako poměr výnosů skupiny.

Zachování filtrů

Funkci DAX můžete použít KEEPFILTERS jako výraz filtru ve CALCULATE funkci pro zachování filtrů.

Pokud chcete zjistit, jak se tato úloha provádí, přepněte na stránku 1 sestavy. Pak upravte definici míry Revenue Red (Výnosy z červených tržeb) tak, aby používala KEEPFILTERS funkci .

Revenue Red =
CALCULATE(
    [Revenue],
    KEEPFILTERS('Product'[Color] = "Red")
)

Obrázek ukazuje vizuál tabulky se třemi sloupci: Color (Barva), Revenue (Výnosy) a Revenue Red (Výnosy z červených produktů). Zobrazí se devět řádků a celkový součet. Ve sloupci Revenue Red (Výnosy z červených produktů) nemají hodnotu BLANK jen řádek Red (Červené produkty) a řádek celkového součtu.

Ve vizuálu tabulky si všimněte, že existuje pouze jedna hodnota Revenue Red (Výnosy z červených produktů). Důvodem je to, že výraz logického filtru zachovává existující filtry ve sloupci Color v tabulce Product . U ostatní barev je hodnota BLANK, protože kontexty a výrazy filtru jsou u těchto dvou filtrů zkombinované. Černá a červená barva se protínají, a protože obojí nemůže být TRUE současně, výraz se nefiltruje podle žádných řádků produktu. Je možné, že oba červené filtry můžou být TRUE současně, což vysvětluje, proč se zobrazuje hodnota Revenue Red (Výnosy z červených).

Použití neaktivních relací

Neaktivní relace modelu může šířit filtry pouze tehdy, USERELATIONSHIP když se funkce DAX předá funkci jako výraz CALCULATE filtru. Když použijete tuto funkci, abyste zahrnuli neaktivní relace, aktivní relace se automaticky změní na neaktivní.

Projděte si příklad definice míry, která používá neaktivní relaci k výpočtu míry Revenue (Výnosy) podle kalendářních dat expedice:

Revenue Shipped =
CALCULATE (
    [Revenue],
    USERELATIONSHIP('Date'[DateKey], Sales[ShipDateKey])
)

Úprava chování relace

Chování relace modelu při vyhodnocování výrazu můžete upravit tak, že funkci DAX předáte CROSSFILTER jako filtrovací výraz CALCULATE . Jedná se o pokročilou funkci.

Funkce CROSSFILTER může změnit směr filtru (z obou na jeden nebo z jednoho na oba) a dokonce zakázat relaci.