gebeurtenis
31 mrt, 23 - 2 apr, 23
De ultieme Microsoft Fabric-, Power BI-, SQL- en AI-communitygebeurtenis. 31 maart tot 2 april 2025.
Zorg dat u zich vandaag nog registreertDeze browser wordt niet meer ondersteund.
Upgrade naar Microsoft Edge om te profiteren van de nieuwste functies, beveiligingsupdates en technische ondersteuning.
Van toepassing op: Berekende kolom Berekende tabel Meting Visuele berekening
Evalueert een expressie in een gewijzigde filtercontext.
Notitie
Er is ook de functie CALCULATETABLE . Er wordt precies dezelfde functionaliteit uitgevoerd, behalve dat de filtercontext wordt gewijzigd die wordt toegepast op een expressie die een tabelobject retourneert.
CALCULATE(<expression>[, <filter1> [, <filter2> [, …]]])
Term | Definitie |
---|---|
uitdrukking | De expressie die moet worden geëvalueerd. |
filter1, filter2,... | (Optioneel) Booleaanse expressies of tabelexpressies waarmee filters of filteraanpassingsfuncties worden gedefinieerd. |
De expressie die wordt gebruikt als de eerste parameter, is in feite hetzelfde als een meting.
Filters kunnen:
Wanneer er meerdere filters zijn, kunnen ze worden geëvalueerd met behulp van de logische operator AND (&), wat betekent dat alle voorwaarden WAAR moeten zijn of door de logische operator OR (||), wat betekent dat beide voorwaarden waar kunnen zijn.
Een Booleaanse expressiefilter is een expressie die resulteert in TRUE of FALSE. Er zijn verschillende regels waaraan ze zich moeten houden:
Vanaf de release van september 2021 van Power BI Desktop is het volgende ook van toepassing:
Total sales on the last selected date =
CALCULATE (
SUM ( Sales[Sales Amount] ),
'Sales'[OrderDateKey] = MAX ( 'Sales'[OrderDateKey] )
)
Een tabelexpressiefilter past een tabelobject als een filter toe. 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 voorwaarden die niet kunnen worden gedefinieerd door een Boole-filterexpressie.
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. |
ALL 1, 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.
De waarde die het resultaat is van de expressie.
Wanneer filterexpressies worden opgegeven, wijzigt de functie CALCULATE 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:
De functie CALCULATE die zonder filters wordt gebruikt, bereikt een specifieke vereiste. Hiermee wordt rijcontext overgestapt op filtercontext. Dit is vereist wanneer een expressie (geen modelmeting) waarin modelgegevens worden samengevat, moeten worden geëvalueerd in rijcontext. Dit scenario kan zich voordoen in een formule voor een berekende kolom of wanneer een expressie in een iterator-functie wordt geëvalueerd. Houd er rekening mee dat wanneer een modelmeting wordt gebruikt in rijcontext, contextovergang automatisch is.
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).
De volgende metingdefinitie verkooptabel produceert een omzetresultaat, maar alleen voor producten met de kleur blauw.
Voorbeelden in dit artikel kunnen worden gebruikt met het voorbeeldmodel Adventure Works DW 2020 Power BI Desktop. Zie HET DAX-voorbeeldmodel om het model op te halen.
Blue Revenue =
CALCULATE(
SUM(Sales[Sales Amount]),
'Product'[Color] = "Blue"
)
Categorie | Verkoophoeveelheid | Blauwe omzet |
---|---|---|
Accessoires | $ 1.272.057,89 | $ 165,406,62 |
Fietsen | $ 94.620.526,21 | $ 8.374.313,88 |
Kleding | $ 2.117.613,45 | $ 259,488,37 |
Onderdelen | $ 11.799.076,66 | $ 803,642,10 |
Totaal | $ 109.809.274,20 | $ 9.602.850,97 |
De functie CALCULATE evalueert de som van de kolom Sales table Sales Amount in een gewijzigde filtercontext. Er wordt een nieuw filter toegevoegd aan de kolom Producttabelkleur, of het filter overschrijft alle filters die al op de kolom zijn toegepast.
De volgende metingdefinitie verkooptabel produceert een verhouding van de verkoop via verkoop voor alle verkoopkanalen.
Channel | Verkoophoeveelheid | Omzetpercentage totaalkanaal |
---|---|---|
Internet | $ 29.358.677,22 | 26.74% |
Reseller | $ 80.450.596,98 | 73.26% |
Totaal | $ 109.809.274,20 | 100.00% |
Revenue % Total Channel =
DIVIDE(
SUM(Sales[Sales Amount]),
CALCULATE(
SUM(Sales[Sales Amount]),
REMOVEFILTERS('Sales Order'[Channel])
)
)
Met de functie DIVIDE wordt een expressie gedeeld die de kolomwaarde Sales table Sales Amount (in de filtercontext) optelt door dezelfde expressie in een gewijzigde filtercontext. Dit is de functie CALCULATE waarmee de filtercontext wordt gewijzigd met behulp van de functie REMOVEFILTERS. Dit is een filteraanpassingsfunctie. Hiermee verwijdert u filters uit de kolom Kanaal van de tabel Verkooporder.
De volgende berekende kolomdefinitie van de klanttabel classificeert klanten in een loyaliteitsklasse. Het is een heel eenvoudig scenario: wanneer de omzet die door de klant wordt geproduceerd, kleiner is dan $ 2500, worden ze geclassificeerd als Laag, anders zijn ze Hoog.
Customer Segment =
IF(
CALCULATE(SUM(Sales[Sales Amount]), ALLEXCEPT(Customer, Customer[CustomerKey])) < 2500,
"Low",
"High"
)
In dit voorbeeld wordt rijcontext geconverteerd naar de filtercontext. Dit wordt contextovergang genoemd. Met de functie ALLEXCEPT worden filters verwijderd uit alle kolommen van de tabel Customer , met uitzondering van de kolom CustomerKey .
Filtercontext
Rijcontext
CALCULATETABLE, functie
Filterfuncties
gebeurtenis
31 mrt, 23 - 2 apr, 23
De ultieme Microsoft Fabric-, Power BI-, SQL- en AI-communitygebeurtenis. 31 maart tot 2 april 2025.
Zorg dat u zich vandaag nog registreert