POČÍTAŤ
Vzťahuje sa na: Vypočítaný stĺpec Vypočítaná tabuľka Výpočet mierky Vizuál
Vyhodnotí výraz v kontexte upraveného filtra.
Poznámka
K dispozícii je aj funkcia CALCULATETABLE . Vykonáva úplne rovnakú funkčnosť, s výnimkou, že upraví kontext filtra použitý pre výraz, ktorý vracia objekt tabuľky.
Syntax
CALCULATE(<expression>[, <filter1> [, <filter2> [, …]]])
Parametre
Obdobie | Definícia |
---|---|
výraz | Výraz, ktorý sa má vyhodnotiť. |
filter1, filter2,... | (Voliteľné) Booleovské výrazy alebo výrazy tabuľky, ktoré definujú filtre alebo funkcie modifikátora filtrov. |
Výraz použitý ako prvý parameter je v podstate rovnaký ako mierka.
Filtre môžu byť:
- Booleovské výrazy filtra
- Tabuľkové výrazy filtra
- Funkcie modifikovania filtra
Ak existuje viacero filtrov, možno ich vyhodnotiť pomocou logického operátora AND (&&), čo znamená, že všetky podmienky musia mať hodnotu TRUE, alebo logický operátor OR (||), čo znamená, že každá podmienka môže mať hodnotu true.
Booleovské výrazy filtra
Filter booleovského výrazu je výraz, ktorý vyhodnocuje a vracia hodnoty TRUE alebo FALSE. Existuje niekoľko pravidiel, ktoré musia dodržiavať:
- Môžu odkazovať na stĺpce z jednej tabuľky.
- Nemôžu odkazovať na mierky.
- Nemôžu používať vnorenú funkciu CALCULATE.
Od vydania aplikácie Power BI Desktop zo septembra 2021 platí nasledujúce:
- Nemôžu používať funkcie, ktoré kontrolujú alebo vracajú tabuľku, pokiaľ nie sú odovzdané ako argumenty do agregačných funkcií.
- Môžu obsahovať agregačnú funkciu, ktorá vracia skalárnu hodnotu. Napríklad
Total sales on the last selected date = CALCULATE ( SUM ( Sales[Sales Amount] ), 'Sales'[OrderDateKey] = MAX ( 'Sales'[OrderDateKey] ) )
Tabuľkové výrazy filtra
Filter výrazov tabuľky použije objekt tabuľky ako filter. Môže ísť o odkaz na tabuľku modelu, ale pravdepodobnejšie je to funkcia, ktorá vracia objekt tabuľky. Funkciu FILTER môžete použiť na použitie zložitých podmienok filtrov vrátane tých, ktoré nie je možné definovať pomocou booleovského výrazu filtra.
Funkcie modifikátora filtra
Funkcie modifikátora filtrov umožňujú viac než len pridávať filtre. Pri úprave kontextu filtra vám poskytnú ďalšie ovládacie prvky.
Function | Účel |
---|---|
REMOVEFILTERS | Odstráňte všetky filtre alebo filtre z jedného alebo viacerých stĺpcov tabuľky alebo zo všetkých stĺpcov jednej tabuľky. |
ALL 1, ALLEXCEPT, ALLNOBLANKROW | Odstráňte filtre z jedného alebo viacerých stĺpcov tabuľky alebo zo všetkých stĺpcov jednej tabuľky. |
KEEPFILTERS | Pridajte filter bez odstránenia existujúcich filtrov v rovnakých stĺpcoch. |
USERELATIONSHIP | Zapojte neaktívny vzťah medzi súvisiacimi stĺpcami, čím sa aktívny vzťah automaticky stane neaktívnym. |
CROSSFILTER | Upravte smer filtrovania (z oboch na jeden alebo z jedného do oba) alebo vypnite vzťah. |
1 Funkcia ALL a jej varianty sa správajú ako modifikátory filtrov aj ako funkcie, ktoré vracajú objekty tabuľky. Ak váš nástroj podporuje funkciu REMOVEFILTERS, použite ju na odstránenie filtrov.
Vrátená hodnota
Hodnota, ktorá je výsledkom výrazu.
Poznámky
Ak sú zadané výrazy filtra, funkcia CALCULATE upraví kontext filtra tak, aby vyhodnotil výraz. Pre každý výraz filtra existujú dva možné štandardné výstupy, keď výraz filtra nie je zabalený vo funkcii KEEPFILTERS:
- Ak sa stĺpce (alebo tabuľky) nenachádzajú v kontexte filtra, do kontextu filtra sa pridajú nové filtre na vyhodnotenie výrazu.
- Ak sa stĺpce (alebo tabuľky) už v kontexte nachádzajú, existujúce filtre sa prepíšu novými filtrami, aby sa vyhodnotil výraz CALCULATE.
Funkcia CALCULATE použitá bez filtrov spĺňa špecifickú požiadavku. Kontext riadka sa presunie na kontext filtra. Vyžaduje sa, keď sa výraz (nie modelová mierka), ktorý sumarizuje modelové údaje, musí vyhodnotiť v kontexte riadka. Tento scenár môže nastať vo vzorci vypočítaného stĺpca alebo pri vyhodnocovaní výrazu v iteračnej funkcii. Všimnite si, že keď sa v kontexte riadka používa modelová mierka, kontextový prechod je automatický.
Táto funkcia nie je podporovaná na použitie v režime DirectQuery, keď sa používa vo vypočítaných stĺpcoch alebo v pravidlách zabezpečenia na úrovni riadkov (RLS).
Príklady
Nasledujúca definícia tabuľkovej mierky Predaj vypočíta výsledok výnosov, ale iba pre produkty, ktoré majú modrú farbu.
Príklady v tomto článku možno použiť so vzorovým modelom aplikácie Power BI Desktop Adventure Works DW 2020. Ak chcete získať tento model, pozrite si tému Ukážkový model DAX.
Blue Revenue =
CALCULATE(
SUM(Sales[Sales Amount]),
'Product'[Color] = "Blue"
)
Kategória | Suma predaja | Modré výnosy |
---|---|---|
Príslušenstvo | 1 272 057,89 $ | 165 406,62 $ |
Bicykle | 94 620 526,21 USD | 8 374 313,88 USD |
Oblečenie | 2 117 613,45 $ | 259 488,37 $ |
Súčasti | 11 799 076,66 $ | 803 642,10 $ |
Totálny | 109 809 274,20 $ | 9 602 850,97 $ |
Funkcia CALCULATE vyhodnotí súčet stĺpca Čiastka predaja tabuľky Predaj v upravenom kontexte filtra. Nový filter sa pridá do stĺpca Farba tabuľky Produkt – alebo filter prepíše všetky filtre, ktoré už sú použité v stĺpci.
Nasledujúca definícia mierky tabuľky Predaj produkuje pomer predaja pre všetky kanály predaja.
Kanál | Suma predaja | Kanál s celkovým percentom výnosov |
---|---|---|
Internet | 29 358 677,22 USD | 26.74% |
Reseller (Predajca) | 80 450 596,98 USD | 73.26% |
Totálny | 109 809 274,20 $ | 100.00% |
Revenue % Total Channel =
DIVIDE(
SUM(Sales[Sales Amount]),
CALCULATE(
SUM(Sales[Sales Amount]),
REMOVEFILTERS('Sales Order'[Channel])
)
)
Funkcia DIVIDE delí výraz, ktorý je súčtom hodnoty stĺpca Čiastka predaja tabuľky Predaj (v kontexte filtra) rovnakým výrazom v upravenom kontexte filtra. Je to funkcia CALCULATE, ktorá upraví kontext filtra pomocou funkcie REMOVEFILTERS, čo je funkcia modifikátora filtra. Odstráni filtre zo stĺpca Kanál tabuľky Predajná objednávka.
Nasledujúca definícia vypočítaného stĺpca tabuľky Zákazníci klasifikuje zákazníkov podľa vernostnej triedy. Je to veľmi jednoduchý scenár: Ak sú výnosy, ktoré zákazník vytvoril, menšie ako 2 500 USD, sú klasifikované ako Nízke, v opačnom prípade sú Vysoké.
Customer Segment =
IF(
CALCULATE(SUM(Sales[Sales Amount]), ALLEXCEPT(Customer, Customer[CustomerKey])) < 2500,
"Low",
"High"
)
V tomto príklade sa kontext riadka konvertuje na kontext filtra. Označuje sa to zmena kontextu. Funkcia ALLEXCEPT odstráni filtre zo všetkých stĺpcov tabuľky Zákazník okrem stĺpca CustomerKey (KľúčZákazcu ).
Súvisiaci obsah
Kontext filtra
Kontext riadka
Funkcia CALCULATETABLE
Funkcie filtrovania