Lezen in het Engels

Delen via


CALCULATETABLE

Van toepassing op:berekende kolomberekende tabelMetingVisuele berekening

Evalueert een tabelexpressie in een gewijzigde filtercontext.

Notitie

Er is ook de functie CALCULATE. De functie voert precies dezelfde functionaliteit uit, behalve dat deze de filtercontext wijzigt toegepast op een expressie die een scalaire waarde retourneert.

Syntaxis

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

Parameters

Term Definitie
expression De tabelexpressie die moet worden geëvalueerd.
filter1, filter2,… (Optioneel) Booleaanse expressies of tabelexpressies waarmee filters of filteraanpassingsfuncties worden gedefinieerd.

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

Filters kunnen:

  • Booleaanse filterexpressies
  • Tabelfilterexpressies
  • Functies voor het wijzigen van filters

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

Booleaanse filterexpressies

Een Boole-expressiefilter is een expressie die resulteert in TRUE of FALSE. Er zijn verschillende regels waaraan ze zich moeten houden:

  • Ze kunnen slechts naar één kolom verwijzen.
  • Ze kunnen niet verwijzen naar metingen.
  • Ze kunnen geen geneste CALCULATE-functie gebruiken.

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.

Tabelfilterexpressie

Een tabelexpressiefilter past een tabelobject toe als filter. Dit kan een verwijzing naar een modeltabel zijn, maar waarschijnlijk is het een functie die een tabelobject retourneert. U kunt de functie FILTER gebruiken om complexe filtervoorwaarden toe te passen, inclusief de voorwaarden die niet kunnen worden gedefinieerd door een Booleaanse filterexpressie.

Filteraanpassingsfuncties

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

Functie Doel
REMOVEFILTERS- Verwijder alle filters of filters uit een of meer kolommen van een tabel of uit alle kolommen van één tabel.
ALL1, ALLEXCEPT, ALLNOBLANKROW Verwijder filters uit een of meer kolommen of uit alle kolommen van één tabel.
KEEPFILTERS- Voeg filter toe zonder bestaande filters op dezelfde kolommen te verwijderen.
USERELATIONSHIP- Neem contact op met een inactieve relatie tussen gerelateerde kolommen. In dat geval wordt de actieve relatie automatisch inactief.
CROSSFILTER- Wijzig de filterrichting (van beide naar één of van één naar beide) of schakel een relatie uit.

1 De functie ALL en de varianten gedragen zich als filteraanpassingen en als functies die tabelobjecten retourneren. Als de functie REMOVEFILTERS wordt ondersteund door uw hulpprogramma, kunt u deze beter gebruiken om filters te verwijderen.

Retourwaarde

Een tabel met waarden.

Opmerkingen

  • Wanneer filterexpressies worden opgegeven, wijzigt de functie CALCULATETABLE de filtercontext om de expressie te evalueren. Voor elke filterexpressie zijn er twee mogelijke standaardresultaten wanneer de filterexpressie niet is verpakt 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) al in de filtercontext staan, 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 regels voor beveiliging op rijniveau (berekende kolommen of beveiliging op rijniveau).

Voorbeeld

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

De volgende formule:

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

Dit 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