Gegevens in DAX-formules filteren

Van toepassing op
Excel voor Microsoft 365 Excel 2024 Excel 2021 Excel 2019 Excel 2016

In deze sectie wordt beschreven hoe u filters maakt in DAX-formules (Data Analysis Expressions). U kunt filters maken in formules om de waarden uit de brongegevens te beperken die in berekeningen worden gebruikt. Hiertoe geeft u een tabel op als invoer voor de formule en definieert u een filterexpressie. Aan de hand van de filterexpressie wordt een query uitgevoerd op de gegevens en wordt alleen een deelverzameling van de brongegevens geretourneerd. Het filter wordt iedere keer dat u de formuleresultaten bijwerkt dynamisch toegepast, afhankelijk van de huidige context van de gegevens.

In dit artikel

Een filter maken voor een tabel die in een formule wordt gebruikt

U kunt filters toepassen in formules waarin een tabel kan worden gebruikt. U geeft niet de naam van de tabel op, maar in plaats daarvan gebruikt u de functie FILTER om een deelverzameling met rijen uit de opgegeven tabel te definiëren. Die deelverzameling wordt vervolgens doorgegeven aan een andere functie voor bewerkingen zoals aangepaste aggregaties.

Bijvoorbeeld: Stel dat u een tabel hebt met bestelinformatie over wederverkopers en u wilt berekenen hoeveel elke wederverkoper heeft verkocht. U wilt echter alleen de verkoopbedragen zien voor de wederverkopers die meerdere aantallen van de duurdere producten hebben verkocht. De volgende formule, die is gebaseerd op de DAX-voorbeeldwerkmap, illustreert hoe u deze berekening kunt maken met behulp van een filter:

=SUMX(
     FILTER ('ResellerSales_USD', 'ResellerSales_USD'[Aantal] > 5 &&
     "ResellerSales_USD"[ProductStandardCost_USD] > 100),
     'ResellerSales_USD'[SalesAmt]
     )

  • Het eerste deel van de formule bevat een van de aggregatiefuncties van Power Pivot, waarin een tabel als argument wordt gebruikt. Met SUMX wordt een som van een tabel berekend.

  • In het tweede deel van de formule wordt FILTER(table, expression),aangegeven SUMX welke gegevens moeten worden gebruikt. SUMX Hiervoor is een tabel of een expressie vereist die in een tabel resulteert. In plaats van alle gegevens in een tabel te gebruiken, geeft u in plaats daarvan aan FILTER welke rijen uit de tabel moeten worden gebruikt.
    De filterexpressie bestaat uit twee delen: het eerste deel bevat de naam van de tabel waarvoor het filter geldt. Het tweede deel definieert een expressie die als filtervoorwaarde wordt gebruikt. In dit geval filtert u de gegevens op wederverkopers die meer dan 5 eenheden en producten hebben verkocht die meer dan $100 kosten. De operator &&is een logische AND-operator, die aangeeft dat beide delen van de voorwaarde waar moeten zijn om de rij deel te laten uitmaken van de gefilterde deelverzameling.

  • Met het derde deel van de formule wordt aan de functie doorgegeven SUMX welke waarden moeten worden opgeteld. In dit geval gebruikt u alleen de verkoopaantallen.
    Onthoud dat functies zoals FILTER, waarmee een tabel wordt geretourneerd, nooit rechtstreeks een tabel of rij retourneren, maar altijd worden ingesloten in een andere functie. Zie Filterfuncties (DAX) voor meer informatie over FILTER en andere functies voor het toepassen van filters, inclusief meer voorbeelden.

    Opmerking

    De filterexpressie wordt beïnvloed door de context waarin deze wordt gebruikt. Als u bijvoorbeeld een filter in een meting gebruikt en de meting wordt gebruikt in een draaitabel of -grafiek, wordt de geretourneerde deelverzameling gegevens mogelijk beïnvloed door extra filters of slicers die u hebt toegepast op de draaitabel. Zie Context in DAX-formules voor meer informatie over context.

Filters waarmee dubbele waarden worden verwijderd

Behalve het filteren op specifieke waarden kunt u ook een unieke set waarden uit een andere tabel of kolom laten retourneren. Dit kan nuttig zijn als u het aantal unieke waarden in een kolom wilt tellen of als u een lijst met unieke waarden voor andere bewerkingen wilt gebruiken. DAX biedt twee functies voor het retourneren van unieke waarden: de functie DISTINCT en de functie VALUES.

  • Met de functie DISTINCT wordt één kolom gebruikt als argument voor de functie en wordt een nieuwe kolom geretourneerd die alleen de unieke waarden bevat.
  • Met de functie VALUES wordt naast een lijst van unieke waarden ook het lid Onbekend geretourneerd. Dit is nuttig als u waarden wilt gebruiken uit twee tabellen die door middel van een relatie aan elkaar zijn gekoppeld, waarbij een waarde wel voorkomt in de ene tabel maar ontbreekt in de andere tabel. Zie Context in DAX-formules voor meer informatie over het onbekende lid.

Met beide functies wordt een volledige kolom met waarden geretourneerd. Daarom gebruikt u de functies om een lijst met waarden op te halen, die vervolgens wordt doorgegeven aan een andere functie. U kunt bijvoorbeeld de volgende formule gebruiken om een lijst op te halen met unieke producten die door een bepaalde wederverkoper zijn verkocht, met behulp van de unieke productcode, en vervolgens de producten in die lijst te tellen met behulp van de functie COUNTROWS:

=COUNTROWS(DISTINCT('ResellerSales_USD'[ProductKey]))

Naar boven

Hoe de context van invloed is op filters

Als u een DAX-formule aan een draaitabel of -grafiek toevoegt, kunnen de resultaten van de formule worden beïnvloed door de context. Als u in een Power Pivot-tabel werkt, bestaat de context uit de huidige rij en de bijbehorende waarden. Als u in een draaitabel of -grafiek werkt, bestaat de context uit de deelverzameling gegevens die is gedefinieerd door bewerkingen zoals het gebruik van slicers of filters. Het ontwerpen van de draaitabel of -grafiek biedt ook een eigen context. Als u bijvoorbeeld een draaitabel maakt waarin verkopen worden gegroepeerd op district en jaar, worden alleen de gegevens in de draaitabel weergegeven die van toepassing zijn op dit district en dit jaar. Alle metingen die u aan de draaitabel toevoegt, worden daarom berekend in de context van de kolom- en rijkoppen plus eventuele filters in de maateenheidformule.

Zie Context in DAX-formules voor meer informatie.

Naar boven

Filters verwijderen

Tijdens het werken met een complexe formule wilt u wellicht exact weten welke filters er zijn toegepast of wilt u wellicht het filtergedeelte van de formule wijzigen. DAX biedt diverse functies waarmee u filters kunt verwijderen en kunt bepalen welke kolommen worden behouden als onderdeel van de huidige filtercontext. Dit gedeelte bevat een overzicht van hoe deze functies van invloed zijn op de resultaten in een formule.

Alle filters vervangen met de functie ALL

U kunt de ALL functie gebruiken om alle filters te vervangen die eerder zijn toegepast en alle rijen in de tabel te retourneren aan de functie waarmee de statistische berekening of een andere bewerking wordt uitgevoerd. Als u in plaats van een tabel een of meer kolommen als argumenten gebruikt ALL, retourneert de ALL functie alle rijen waarbij eventuele contextfilters worden genegeerd.

Opmerking

Als u bekend bent met relationele databaseterminologie, kunt u denken aan ALL het genereren van de natuurlijke left outer join van alle tabellen.

Stel bijvoorbeeld dat u op basis van de tabellen Verkoop en Producten een formule wilt maken waarmee de som van verkopen voor het huidige product wordt berekend en vervolgens wordt gedeeld door de verkopen voor alle producten. Als de formule in een meting wordt gebruikt, moet u er rekening mee houden dat de gebruiker van de draaitabel mogelijk een slicer gebruikt om op een bepaald product te filteren met de productnaam op de rijen. Om ervoor te zorgen dat de werkelijke waarde van de noemer wordt geretourneerd, ongeacht eventuele filters of slicers, moet u de functie ALLES toevoegen, zodat alle filters worden genegeerd. De volgende formule illustreert hoe met ALLES het effect van eerder ingestelde filters wordt opgeheven:

=SUM (Sales[Amount])/SUMX(Sales[Amount], FILTER(Sales, ALL(Products)))

  • In het eerste deel van de formule, SUM (Sales[Amount]), wordt de teller berekend.
  • In de som wordt rekening gehouden met de huidige context. Als u de formule aan een berekende kolom toevoegt, wordt dus de rijcontext toegepast. Als u de formule als meetwaarde aan een draaitabel toevoegt, worden filters voor de draaitabel (de filtercontext) toegepast.
  • In het tweede deel van de formule wordt de noemer berekend. Met de functie ALL worden alle filters vervangen die eventueel op de Products tabel zijn toegepast.

Zie Functie ALL voor meer informatie en gedetailleerde voorbeelden.

Specifieke filters vervangen met de functie ALLEXCEPT

Met de functie ALLEXCEPT worden ook bestaande filters vervangen, maar u kunt wel opgeven dat sommige filters moeten blijven behouden. De kolommen die u als argument doorgeeft aan de functie ALLEXCEPT bepalen welke kolommen worden gefilterd. Als u filters van de meeste maar niet alle kolommen wilt negeren, is ALLEXCEPT handiger dan ALL. De functie ALLEXCEPT is vooral nuttig als u een draaitabel maakt die op een groot aantal verschillende kolommen wordt gefilterd en u wilt de waarden beheren die in de formule worden gebruikt. Zie Functie ALLEXCEPT voor meer informatie en een gedetailleerd voorbeeld van het gebruik van ALLEXCEPT in een draaitabel.

Naar boven