CALCULATETABLE

Evalueert een tabelexpressie in de context van een gewijzigd filter.

Notitie

Er is ook de functie CALCULATE. Deze functie heeft precies dezelfde functionaliteit, behalve dat deze de filtercontext wijzigt die is toegepast op een expressie waarmee een scalaire waarde wordt geretourneerd.

Syntaxis

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

Parameters

Term Definitie
expressie De tabelexpressie die moet worden geëvalueerd.
filter1, filter2,... (Optioneel) Booleaanse expressies of expressies voor tabellen waarmee filters, of wijzigingsfuncties voor filters worden gedefinieerd.

De expressie die als eerste parameter wordt gebruikt, moet een modeltabel of een functie zijn die een tabel retourneert.

Filters kunnen zijn:

  • Booleaanse filterexpressies
  • Filterexpressies voor tabellen
  • Wijzigingsfuncties voor filters

Wanneer er meerdere filters zijn, worden deze geëvalueerd met behulp van de logische operator AND. Dit betekent dat alle voorwaarden tegelijkertijd TRUE moeten zijn.

Booleaanse filterexpressies

Een Booleaanse expressiefilter is een expressie die resulteert in TRUE of FALSE. Er zijn verschillende regels waaraan ze moeten voldoen:

  • Ze kunnen slechts naar één kolom verwijzen.
  • Ze kunnen niet verwijzen naar metingen.
  • Ze kunnen niet gebruikmaken van een geneste functie CALCULATE.

Vanaf de release van september 2021 van Power BI Desktop is het volgende ook van toepassing:

  • Ze kunnen geen functies gebruiken die een tabel scannen of retourneren, tenzij ze worden doorgegeven als argumenten voor aggregatiefuncties.
  • Ze kunnen een aggregatiefunctie bevatten die een scalaire waarde retourneert.

Filterexpressie voor tabellen

Een tabelexpressiefilter past een tabelobject als een filter toe. De functie kan een verwijzing naar een modeltabel zijn, maar het is waarschijnlijker dat deze functie een tabelobject retourneert. U kunt de functie FILTER gebruiken om complexe filtervoorwaarden toe te passen, inclusief voorwaarden die niet kunnen worden gedefinieerd met een booleaanse filterexpressie.

Wijzigingsfuncties voor filters

Met filtermodifierfuncties kunt u meer doen dan alleen filters toevoegen. Ze bieden u extra beheer bij het wijzigen van filtercontext.

Functie Doel
REMOVEFILTERS Alle filters verwijderen, of filters verwijderen uit een of meer kolommen in een tabel, of uit alle kolommen in één tabel.
ALL1,ALLEXCEPT, ALLNOBLANKROW Filters verwijderen uit een of meer kolommen, of uit alle kolommen in één tabel.
KEEPFILTERS Filter toevoegen zonder bestaande filters in dezelfde kolommen te verwijderen.
USERELATIONSHIP Een inactieve relatie tot stand brengen tussen gerelateerde kolommen. In dit geval wordt de actieve relatie automatisch inactief.
CROSSFILTER Filterrichting wijzigen (van beide naar één, of van één naar beide) of een relatie uitschakelen.

1 De functie ALL en de bijbehorende varianten gedragen als wijzigingsfuncties voor filters en als functies waarmee tabelobjecten worden geretourneerd. Als de functie REMOVEFILTERS wordt ondersteund voor uw hulpprogramma, kunt u deze beter gebruiken om filters te verwijderen.

Retourwaarde

Een tabel met waarden.

Opmerkingen

  • Wanneer filterexpressies worden geleverd, wijzigt de functie CALCULATETABLE de filtercontext om de expressie te evalueren. Voor elke filterexpressie zijn er twee mogelijke standaardresultaten wanneer de filterexpressie niet is ingepakt in de functie KEEPFILTERS:

    • Als de kolommen (of tabellen) zich niet in de filtercontext bevinden, worden nieuwe filters toegevoegd aan de filtercontext om de expressie te evalueren.
    • Als de kolommen (of tabellen) zich al in de filtercontext bevinden, worden de bestaande filters overschreven door de nieuwe filters om de CALCULATETABLE-expressie te evalueren.
  • Deze functie wordt niet ondersteund voor gebruik in de DirectQuery-modus wanneer deze wordt gebruikt in berekende kolommen of veiligheidsregels (RLS) op rijniveau.

Voorbeeld

In het volgende voorbeeld wordt de functie CALCULATETABLE gebruikt om de som van internetverkopen voor 2006 op te halen. Deze waarde wordt later gebruikt voor het berekenen van de verhouding van internetverkopen vergeleken met alle verkoopcijfers voor het jaar 2006.

De volgende formule:

= SUMX(
    CALCULATETABLE(
        'InternetSales_USD',
        'DateTime'[CalendarYear] = 2006
    ),
    [SalesAmount_USD]
)  

Resulteert in de volgende tabel:

Rijlabels Internet SalesAmount_USD CalculateTable 2006 Internet Sales Verhouding internetverkoop tot 2006
2005 $ 2.627.031,40 $ 5.681.440,58 0,46
2006 $ 5.681.440,58 $ 5.681.440,58 1,00
2007 $ 8.705.066,67 $ 5.681.440,58 1,53
2008 $ 9.041.288,80 $ 5.681.440,58 1,59
Eindtotaal $ 26.054.827,45 $ 5.681.440,58 4,59

Zie tevens