Sdílet prostřednictvím


CALCULATETABLE

platí pro:počítaný sloupecPočítaná tabulkaMeasure vizuálu

Vyhodnotí výraz tabulky v upraveném kontextu filter.

Poznámka

K dispozici je také funkce CALCULATE. Provádí přesně stejné funkce, except upravuje kontext filter použitý u výrazu, který vrací skalární value.

Syntax

CALCULATETABLE(<expression>[, <filter1> [, <filter2> [, …]]])

Parametry

Semestr Definice
expression Výraz tabulky, který se má vyhodnotit.
filter1, filter2,… (Volitelné) Logické výrazy or výrazy tabulky, které definují filters, orfilter modifikační funkce.

Výraz použitý jako parametr first musí být tabulka modelu or funkce, která vrací tabulku.

Filters může být:

  • Logické výrazy filter
  • Výrazy filter tabulky
  • Filter funkce úprav

Pokud existuje více filters, vyhodnotí se pomocí logického operátoru AND. To znamená, že all podmínky musí být TRUE ve stejném time.

Logické výrazy filter

Logický výraz filter je výraz, který se vyhodnotí jako TRUEorFALSE. 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í or vracejí tabulku, pokud nejsou předány jako argumenty agregačním funkcím.
  • mohou obsahovat agregační funkci, která vrací skalární value.

Výraz table filter

Výraz tabulky filter použije objekt tabulky jako filter. 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 složité filter podmínky, včetně těch, které nelze definovat pomocí logického výrazu filter.

modifikační funkce Filter

Filter modifikační funkce umožňují provádět více než jednoduše přidávat filters. Poskytují vám další ovládací prvek při úpravě filter kontextu.

Funkce Účel
REMOVEFILTERS Odeberte allfilters, orfilters z jednoho or více sloupců tabulky, or ze all sloupců jedné tabulky.
ALL 1, ALLEXCEPT, ALLNOBLANKROW Odeberte filters z jednoho or více sloupců or ze sloupců all jedné tabulky.
KEEPFILTERS Přidejte filter bez odebrání existujících filters ve stejných sloupcích.
USERELATIONSHIP Zapojte neaktivní relaci mezi related sloupci, v takovém případě se aktivní relace automaticky stane neaktivní.
CROSSFILTER Upravte filter směr (z obou do jednoho, or z jednoho na oba) or relaci zakažte.

1 funkce ALLand se její varianty chovají jako modifikátory filterand jako funkce, které vracejí objekty tabulky. If nástroj podporuje funkci REMOVEFILTERS, je lepší ji použít k odebrání filters.

Vrácení value

Tabulka values.

Poznámky

  • Pokud jsou k dispozici výrazy filter, funkce CALCULATETABLE upraví kontext filter tak, aby evaluate výrazu. Pro každý výraz filter existují dva možné standardní výsledky, pokud je výraz filternot zabalený do funkce KEEPFILTERS:

    • If sloupce (tabulkyor) nejsou v kontextu filter, pak se do evaluate výrazu přidají nové filters kontextu filter.
    • If sloupce (tabulkyor) už jsou v kontextu filter, stávající filters se přepíší novým filters tak, aby evaluate výraz CALCULATETABLE.
  • Tato funkce je not podporována pro použití v režimu DirectQuery při použití v počítaných sloupcích or pravidla zabezpečení na úrovni řádků (RLS).

Příklad

Následující příklad používá funkci CALCULATETABLE k získání sum internetového prodeje za 2006. Tento value se později použije k calculate poměru internetového prodeje v porovnání s prodejem all pro year 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