CALCULATETABLE

Platí pro:Calculated columnCalculated tableMeasureVisual calculation

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.
ALL1, 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