Úprava kontextu filtru

Dokončeno

K úpravě CALCULATE kontextu filtru ve vzorcích můžete použít funkci DAX. Syntaxe funkce CALCULATE je následující:

CALCULATE(<expression>, [[<filter1>], <filter2>]…)

Funkce vyžaduje předání výrazu, který vrací skalární hodnotu a tolik filtrů, kolik potřebujete. Výrazem může být míra (což je pojmenovaný výraz) nebo jakýkoli výraz, který lze vyhodnotit v kontextu filtru.

Filtry mohou být logické nebo tabulkové výrazy. Je také možné předat funkce úprav filtru, které poskytují další kontrolu při úpravě kontextu filtru.

Pokud máte více filtrů, vyhodnocují se pomocí logického operátoru AND , což znamená, že všechny podmínky musí být TRUE současně.

Poznámka

Funkce CALCULATETABLE DAX provádí přesně stejnou funkci jako CALCULATE funkce s tím rozdílem, že upravuje kontext filtru použitý u výrazu, který vrací objekt tabulky. V tomto modulu vysvětlení a příklady používají CALCULATE funkci, ale mějte na paměti, že tyto scénáře by se mohly vztahovat i na CALCULATETABLE funkci.

Použití logických filtrů výrazů

Logický filtr výrazů je výraz, který se vyhodnotí jako TRUE nebo FALSE. Logické filtry se musí řídit následujícími pravidly:

  • Můžou se odkazovat jen na jeden sloupec.
  • Nemůžou se odkazovat na míry.
  • Nemůžou používat funkce, které prohledávají nebo vrací tabulku obsahující agregační funkce, jako je SUM.

V tomto příkladu vytvoříte míru. Nejprve stáhněte a otevřete soubor Adventure Works DW 2020 M06.pbix. Potom do tabulky Sales (Prodej ) přidejte následující míru, která filtruje míru Revenue (Výnosy ) pomocí filtru logických výrazů pro červené produkty.

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

Do vizuálu tabulky na stránce 1 v sestavě přidejte míru Revenue Red (Výnosy z červených produktů).

Obrázek ukazuje tabulku se třemi sloupci: Region (Oblast), Revenue (Výnosy) a Revenue Red (Výnosy z červených produktů). Tabulka zobrazuje 10 řádků a celkový součet.

V tomto dalším příkladu následující míra filtruje míru Revenue (Výnosy) podle více barev. Všimněte si použití operátoru IN následovaného seznamem hodnot barev.

Revenue Red or Blue = CALCULATE([Revenue], 'Product'[Color] IN {"Red", "Blue"})

Následující míra filtruje míru Revenue (Výnosy) podle drahých produktů. Drahé výrobky jsou výrobky, jejichž katalogová cena je vyšší než 1 000 USD.

Revenue Expensive Products = CALCULATE([Revenue], 'Product'[List Price] > 1000)

Použití filtrů tabulkových výrazů

Filtr tabulkových výrazů použije objekt tabulky jako filtr. Může to být odkaz na tabulku modelu; pravděpodobně se ale jedná o funkci DAX, která vrací objekt tabulky.

Běžně se FILTER používá funkce DAX k použití složitých podmínek filtru, včetně těch, které nelze definovat výrazem logického filtru. Funkce FILTER je klasifikovaná jako funkce iterátoru, takže byste předali tabulku nebo výraz tabulky a výraz, který se má vyhodnotit pro každý řádek této tabulky.

Funkce FILTER vrátí objekt tabulky s přesně stejnou strukturou, jakou tabulka předala. Jeho řádky jsou podmnožinou řádků, které byly předány, což znamená řádky, kde se výraz vyhodnotil jako TRUE.

Následující příklad ukazuje výraz filtru tabulky, který používá FILTER funkci :

Revenue High Margin Products =
CALCULATE(
    [Revenue],
    FILTER(
        'Product',
        'Product'[List Price] > 'Product'[Standard Cost] * 2
    )
)

V tomto příkladu FILTER funkce filtruje všechny řádky tabulky Product, které jsou v kontextu filtru. Každý řádek produktu, jehož katalogová cena přesahuje dvojnásobek jeho standardní ceny, se zobrazí jako řádek filtrované tabulky. Míra Revenue ( Výnosy ) se proto vyhodnocuje pro všechny produkty, které funkce vrací FILTER .

Všechny výrazy filtru, které jsou předány funkci CALCULATE , jsou výrazy filtru tabulky. Výraz logického filtru je zkrácený zápis pro zlepšení prostředí pro zápis a čtení. Interně Microsoft Power BI převede výrazy logického filtru na výrazy filtru tabulky, které se potom převedou na definici míry Revenue Red (Výnosy z červených produktů).

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

Chování filtru

Při přidání výrazů filtru do funkce dojde ke dvěma možným standardním výsledkům CALCULATE :

  • Pokud sloupce (nebo tabulky) nejsou v kontextu filtru, přidají se do kontextu filtru nové filtry pro vyhodnocení výrazu CALCULATE .
  • Pokud jsou sloupce (nebo tabulky) již v kontextu filtru, stávající filtry budou přepsány novými filtry, aby se výraz vyhodnotil CALCULATE .

Následující příklady ukazují, jak funguje přidání výrazů filtru do CALCULATE funkce.

Poznámka

V žádném z příkladů nejsou u vizuálu tabulky použity žádné filtry.

Stejně jako v předchozí aktivitě se míra Revenue Red (Výnosy z červených produktů) přidala do vizuálu tabulky, která provede seskupení podle oblasti a zobrazí výnosy.

Obrázek ukazuje tabulku se třemi sloupci: Region (Oblast), Revenue (Výnosy) a Revenue Red (Výnosy z červených produktů). Tabulka zobrazuje 10 řádků a celkový součet.

Vzhledem k tomu, že ve sloupci Color (Barva ) v tabulce Product (Produkt ) není použit žádný filtr, vyhodnocení míry přidá nový filtr pro kontext filtru. V prvním řádku je hodnota 2 681 324,79 USD pro červené produkty prodávané v oblasti Austrálie.

Přepnutí prvního sloupce vizuálu tabulky z oblasti na color bude mít jiný výsledek, protože sloupec Color v tabulce Product je teď v kontextu filtru.

Obrázek ukazuje tabulku se třemi sloupci: Color (Barva), Revenue (Výnosy) a Revenue Red (Výnosy z červených produktů). Tabulka zobrazuje 10 řádků a celkový součet. Hodnota Revenue Red (Výnosy z červených produktů) je stejná pro každý řádek.

Vzorec míry Revenue Red (Výnosy z červených) vyhodnocuje míru Revenue (Výnosy ) přidáním filtru ve sloupci Color (barva na červenou) v tabulce Product . Potom v tomto vizuálu, který se seskupuje podle barvy, vzorec míry přepíše kontext filtru novým filtrem.

Tento výsledek může nebo nemusí být tím, co chcete. V další lekci se seznámíte s KEEPFILTERS funkcí DAX, což je funkce pro úpravu filtru, kterou můžete použít k zachování filtrů, nikoli k jejich přepsání.