CALCULATETABLE
Platí pro: Výpočet počítané tabulky Počítaná tabulka Výpočet vizuálu
Vyhodnotí výraz tabulky v upraveném kontextu filtru.
Poznámka:
K dispozici je také funkce CALCULATE . Provádí přesně stejné funkce, s výjimkou toho, že upravuje kontext filtru použitý u výrazu , který vrací skalární hodnotu.
Syntaxe
CALCULATETABLE(<expression>[, <filter1> [, <filter2> [, …]]])
Parametry
Pojem | definice |
---|---|
výraz | Výraz tabulky, který se má vyhodnotit. |
filter1, filter2,... | (Volitelné) Logické výrazy nebo výrazy tabulky, které definují filtry nebo modifikační funkce filtru. |
Výraz použitý jako první parametr musí být tabulka modelu nebo funkce, která vrací tabulku.
Filtry můžou být:
- Logické výrazy filtru
- Výrazy filtru tabulky
- Funkce úprav filtru
Pokud existuje více filtrů, vyhodnotí se pomocí logického operátoru AND. To znamená, že všechny podmínky musí být pravdivé současně.
Logické výrazy filtru
Logický filtr výrazů je výraz, který se vyhodnotí jako TRUE, nebo FALSE. Existuje několik pravidel, která musí dodržovat:
- Mohou odkazovat pouze na jeden sloupec.
- Nemůžou odkazovat na míry.
- Nemůžou použít vnořenou funkci CALCULATE.
Od verze Power BI Desktopu ze září 2021 platí také toto:
- Nemůžou používat funkce, které prohledávají nebo vracejí tabulku, pokud nejsou předány jako argumenty agregačním funkcím.
- Mohou obsahovat agregační funkci, která vrací skalární hodnotu.
Výraz filtru tabulky
Filtr tabulkových výrazů 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 FILTER můžete použít komplexní podmínky filtru, včetně těch, které nelze definovat logickým výrazem filtru.
Modifikační funkce filtru
Modifikační funkce filtru umožňují provádět více než pouhé přidávání filtrů. Poskytují vám další ovládací prvek při úpravě kontextu filtru.
Function | Úč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 nástroj podporuje funkci REMOVEFILTERS, je lepší ji použít k odebrání filtrů.
Vrácená hodnota
Tabulka hodnot.
Poznámky
Pokud jsou k dispozici výrazy filtru, funkce CALCULATETABLE upraví kontext filtru tak, aby vyhodnotil výraz. U každého výrazu filtru existují dva možné standardní výsledky, pokud není výraz filtru zabalený ve funkci KEEPFILTERS:
- Pokud sloupce (nebo tabulky) nejsou v kontextu filtru, přidají se do kontextu filtru nové filtry, aby se výraz vyhodnotil.
- Pokud už jsou sloupce (nebo tabulky) v kontextu filtru, stávající filtry se přepíšou novými filtry, aby se vyhodnotil výraz CALCULATETABLE.
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říklad
Následující příklad používá funkci CALCULATETABLE k získání součtu internetového prodeje za 2006. Tato hodnota se později použije k výpočtu poměru internetových prodejů v porovnání se všemi prodeji za rok 2006.
Následující vzorec:
= SUMX(
CALCULATETABLE(
'InternetSales_USD',
'DateTime'[CalendarYear] = 2006
),
[SalesAmount_USD]
)
Výsledkem je následující tabulka:
Popisky řádků | Internet SalesAmount_USD | CalculateTable 2006 Internet Sales | Poměr internetového prodeje k roku 2006 |
---|---|---|---|
2005 | 2 627 031,40 Kč | 5 681 440,58 Kč | 0.46 |
2006 | 5 681 440,58 Kč | 5 681 440,58 Kč | 1.00 |
2007 | 8 705 066,67 Kč | 5 681 440,58 Kč | 1.53 |
2008 | 9 041 288,80 Kč | 5 681 440,58 Kč | 1.59 |
Celkový součet | 26 054 827,45 Kč | 5 681 440,58 Kč | 4.59 |