Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:
Počítaný sloupec
Počítaná tabulka
míra
vizuální
Vyhodnotí výraz v upraveném kontextu filtru.
Poznámka
K dispozici je také funkce CALCULATETABLE. Provádí přesně stejné funkce, s výjimkou toho, že upravuje kontext filtru použitý u výrazu, který vrací objekt tabulky.
Syntax
CALCULATE(<expression>[, <filter1> [, <filter2> [, …]]])
Parametry
| Semestr | Definice |
|---|---|
expression |
Výraz, který se má vyhodnotit. |
filter1, filter2,… |
(Volitelné) Logické výrazy nebo výrazy tabulky, které definují filtry nebo modifikační funkce filtru. |
Výraz, který použijete jako první parametr, funguje jako míra.
Filtry můžou být:
- Logické výrazy filtru
- Výrazy filtru tabulky
- Funkce úprav filtru
Pokud používáte více filtrů, můžete je vyhodnotit pomocí logického operátoru AND (&&), což znamená, že všechny podmínky musí být TRUE, nebo logickým operátorem OR (||), což znamená, že podmínka může být pravdivá. Další informace najdete v tématu DAX Logické operátory operátorů>.
Logické výrazy filtru
Logický filtr výrazů je výraz, který se vyhodnotí jako TRUE nebo FALSE. Musí dodržovat několik pravidel:
Může odkazovat na sloupce z jedné tabulky.
Nemůže odkazovat na míry.
Nemůže použít vnořenou CALCULATE funkci.
Nemůžete použít funkce, které prohledávají nebo vracejí tabulku, pokud je nepředáte jako argumenty agregačním funkcím.
Může obsahovat agregační funkci, která vrací skalární hodnotu. Příklady:
Total sales on the last selected date = CALCULATE ( SUM ( Sales[Sales Amount] ), 'Sales'[OrderDateKey] = MAX ( 'Sales'[OrderDateKey] ) )
Výraz filtru tabulky
Filtr výrazů tabulky použije objekt tabulky jako filtr. Může se jednat o odkaz na tabulku modelu, ale s větší pravděpodobností se jedná o funkci, která vrací objekt tabulky. Pomocí funkce můžete použít FILTER komplexní podmínky filtru, včetně těch, které nemůžete definovat pomocí logického výrazu filtru.
Modifikační funkce filtru
Modifikační funkce filtru umožňují provádět více než jednoduše přidávat filtry. Při úpravě kontextu filtru vám poskytnou další ovládací prvek.
| Funkce | Účel |
|---|---|
| REMOVEFILTERS | Odeberte všechny filtry nebo filtry z jednoho nebo více sloupců tabulky nebo ze všech sloupců jedné tabulky. |
| ALL 1, ALLEXCEPT, ALLNOBLANKROW | Odeberte filtry z jednoho nebo více sloupců nebo ze všech sloupců jedné tabulky. |
| KEEPFILTERS | Přidejte filtr bez odebrání existujících filtrů ve stejných sloupcích. |
| USERELATIONSHIP | Zapojte neaktivní relaci mezi souvisejícími sloupci, v takovém případě se aktivní relace automaticky stane neaktivní. |
| CROSSFILTER | Změňte směr filtru (z obou na jeden nebo z jednoho na oba) nebo zakažte relaci. |
1 Funkce ALL a její varianty se chovají jako modifikátory filtru i jako funkce, které vracejí objekty tabulky. Pokud váš nástroj tuto funkci podporuje REMOVEFILTERS , použijte ji k odebrání filtrů.
Návratová hodnota
Hodnota, která je výsledkem výrazu.
Poznámky
Když zadáte výrazy filtru, funkce upraví kontext filtru tak, CALCULATE aby vyhodnotil výraz. Pro každý výraz filtru existují dva standardní výsledky, pokud není výraz filtru zabalený do KEEPFILTERS funkce:
- Pokud sloupce nebo tabulky nejsou v kontextu filtru, přidají se do kontextu filtru nové filtry pro vyhodnocení výrazu.
- Pokud už jsou sloupce nebo tabulky v kontextu filtru, stávající filtry se přepíší novými filtry, aby se výraz vyhodnotil CALCULATE .
CALCULATE Použití funkce bez filtrů dosáhne konkrétního požadavku. Přemísní kontext řádku na kontext filtru. Tento přechod se vyžaduje, když je potřeba vyhodnotit výraz (ne míru modelu), který shrnuje data modelu v kontextu řádku. K tomuto scénáři může dojít ve vzorci počítaného sloupce nebo při vyhodnocení výrazu ve funkci iterátoru. Při použití míry modelu v kontextu řádku je přechod kontextu automatický.
-
Tato funkce není podporována pro použití v režimu DirectQuery při použití v počítaných sloupcích nebo pravidlech zabezpečení na úrovni řádků (RLS).
Příklady
Příklady v tomto článku můžete použít s ukázkovým modelem Adventure Works DW 2020 Power BI Desktopu. Pokud chcete model získat, podívejte se na DAX ukázkový model.
Následující definice míry tabulky Sales vytvoří výsledek výnosů, ale pouze pro produkty, které mají modrou barvu.
Blue Revenue =
CALCULATE ( SUM ( Sales[Sales Amount] ), 'Product'[Color] = "Blue" )
| Kategorie | Částka prodeje | Modré výnosy |
|---|---|---|
| Příslušenství | 1 272 057,89 Kč | 165 406,62 Kč |
| Kola | 94 620 526,21 Kč | 8 374 313,88 Kč |
| Oděv | 2 117 613,45 Kč | 259 488,37 Kč |
| Součásti | 11 799 076,66 Kč | 803 642,10 Kč |
| celkem | 109 809 274,20 | 9 602 850,97 USD |
Funkce CALCULATE vyhodnotí součet tabulky SalesSales Amount (Částka prodeje) sloupec v upraveném kontextu filtru. Do tabulky Product table Color se přidá nový filtr nebo filtr přepíše libovolný filtr, který už je u sloupce použitý.
Následující definice míry Sales tabulky vytvoří poměr prodeje oproti prodeji pro všechny prodejní kanály.
Revenue % Total Channel =
DIVIDE (
SUM ( Sales[Sales Amount] ),
CALCULATE (
SUM ( Sales[Sales Amount] ),
REMOVEFILTERS ( 'Sales Order'[Channel] )
)
)
| Kanál | Částka prodeje | Revenue % Total Channel |
|---|---|---|
| internet | 29 358 677,22 Kč | 26,74% |
| Distributor | 80 450 596,98 Kč | 73,26% |
| celkem | 109 809 274,20 | 100.00% |
Funkce DIVIDE vydělí výraz, který sečte tabulky SalesSales Amount column value (v kontextu filtru) stejným výrazem v upraveném kontextu filtru. Je to CALCULATE funkce, která upravuje kontext filtru pomocí funkce REMOVEFILTERS, což je modifikátor filtru. Odebere filtry ze sloupce Sales Order table Channel.
Následující Customer table calculated column definition klasifikuje zákazníky do třídy věrnosti. Jedná se o velmi jednoduchý scénář: Když jsou výnosy vytvořené zákazníkem nižší než 2500 USD, jsou klasifikovány jako Nízké; jinak jsou high.
Customer Segment =
IF (
CALCULATE (
SUM ( Sales[Sales Amount] ),
ALLEXCEPT ( Customer, Customer[CustomerKey] )
) < 2500,
"Low",
"High"
)
| Segment zákazníka | Customer Count | Částka prodeje |
|---|---|---|
| Vysoko | 4,637 | 102 670 663,09 Kč |
| Nízká úroveň | 13,848 | 7 138 611,11 Kč |
| celkem | 18,485 | 109 809 274,20 |
V tomto příkladu se kontext řádku převede na kontext filtru. Označuje se jako kontextový přechod. Funkce
Související obsah
- kontextový filtru
- Kontext řádku
- CALCULATETABLE funkce
- Funkce filtru