CALCULATETABLE
Vzťahuje sa na: Vypočítaný stĺpec Vypočítaná tabuľka Výpočet mierky Vizuál
Vyhodnotí výraz tabuľky v kontexte upraveného filtra.
Poznámka
K dispozícii je aj funkcia CALCULATE . Vykonáva úplne rovnakú funkčnosť, s výnimkou, že upraví kontext filtra použitý pre výraz, ktorý vracia skalárnu hodnotu.
Syntax
CALCULATETABLE(<expression>[, <filter1> [, <filter2> [, …]]])
Parametre
Obdobie | Definícia |
---|---|
výraz | Výraz tabuľky, 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 musí byť modelová tabuľka alebo funkcia, ktorá vráti tabuľku.
Filtre môžu byť:
- Booleovské výrazy filtra
- Tabuľkové výrazy filtra
- Funkcie modifikovania filtra
Ak existuje viacero filtrov, vyhodnocujú sa pomocou logického operátora AND. Znamená to, že všetky podmienky musia mať v rovnakom čase 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ť iba na jeden stĺpec.
- 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.
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
Tabuľka hodnôt.
Poznámky
Ak sú zadané výrazy filtra, funkcia CALCULATETABLE 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 CALCULATETABLE.
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íklad
Nasledujúci príklad používa funkciu CALCULATETABLE na získanie súčtu internetového predaja za rok 2006. Táto hodnota sa neskôr použije na výpočet pomeru internetového predaja v rámci celkového predaja za rok 2006.
Nasledujúci vzorec:
= SUMX(
CALCULATETABLE(
'InternetSales_USD',
'DateTime'[CalendarYear] = 2006
),
[SalesAmount_USD]
)
Vytvorí nasledujúcu tabuľku:
Označenia riadkov | Internet SalesAmount_USD | CalculateTable 2006 Internet Sales | Internet Sales to 2006 ratio |
---|---|---|---|
2005 | 2 627 031,40 USD | 5 681 440,58 $ | 0,46 |
2006 | 5 681 440,58 $ | 5 681 440,58 $ | 1,00 |
2007 | 8 705 066,67 USD | 5 681 440,58 $ | 1.53 |
2008 | 9 041 288,80 $ | 5 681 440,58 $ | 1.59 |
Celkový súčet | 26 054 827,45 $ | 5 681 440,58 $ | 4.59 |