Gegevens in DAX-formules filteren

In dit gedeelte 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

Filters waarmee dubbele waarden worden verwijderd

Hoe de context van invloed is op filters

Filters verwijderen

Alle filters vervangen met de functie ALL

Specifieke filters vervangen met de functie ALLEXCEPT

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 ' [hoeveelheid] > 5 &&
     ' ResellerSales_USD ' [ProductStandardCost_USD] > 100),
     ' ResellerSales_USD ' [SalesAmt]
     )

  • Het eerste gedeelte van de formule bevat een van de statistische functies in Power Pivot, waarin een tabel als argument wordt gebruikt. Met SUMX wordt een som van een tabel berekend.

  • Het tweede gedeelte van de formule, FILTER(table, expression),verschaft SUMX de gegevens die moeten worden gebruikt. SUMX vereist een tabel of een expressie die in een tabel resulteert. In plaats van alle gegevens in een tabel te gebruiken, geeft u in plaats daarvan de functie FILTER op om aan te geven 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 worden aan de formule SUMX de waarden doorgegeven die 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 filter functies (Dax)voor meer informatie over filterfuncties en andere functies die worden gebruikt om te filteren, waaronder 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 eenheid wordt gebruikt in een draaitabel of draaigrafiek, kunt u de deelverzameling gegevens die worden geretourneerd, van invloed zijn op extra filters of Slicers die de gebruiker heeft 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 waarmee unieke waarden worden geretourneerd: DISTINCT, functie en Values, functie.

  • 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.

Beide functies retourneren een gehele kolom met waarden. u gebruikt de functies daarom voor het aanvragen van een lijst met waarden die vervolgens worden doorgegeven aan een andere functie. U kunt bijvoorbeeld de volgende formule gebruiken om een lijst weer te geven met de verschillende producten die worden verkocht door een bepaalde wederverkoper, met behulp van de unieke productcode en 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 maatregelen die u aan de draaitabel toevoegt, worden berekend in de context van de kolomkoppen en rijkoppen plus filters in de meet formule.

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

Gebruik de functie ALL 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 doorgeeft aan ALL worden met de functie ALL alle rijen geretourneerd, waarbij eventuele contextfilters worden genegeerd.

Opmerking: Als u bekend bent met relationeledatabaseterminologie, kunt u ALL vergelijken met het genereren van de natuurlijke linker 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. U dient rekening te houden met het feit dat, als de formule wordt gebruikt in een meting, de gebruiker van de draaitabel mogelijk een slicer gebruikt om te filteren op een bepaald product, 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.

  • De som houdt rekening met de huidige context, wat betekent dat als u de formule aan een berekende kolom toevoegt, de context van de rij wordt toegepast, en als u de formule in een draaitabel toevoegt als een meting, worden alle filters die worden toegepast op 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 zijn toegepast op de tabel Products.

Zie all, functievoor meer informatie, waaronder 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 ALLEXCEPT, functievoor meer informatie, waaronder een gedetailleerd voorbeeld van het gebruik van ALLEXCEPT in een draaitabel.

Naar boven

Opmerking:  Deze pagina is automatisch vertaald en kan grammaticale fouten of onnauwkeurigheden bevatten. Wij hopen dat deze inhoud nuttig voor je is. Wil je ons laten weten of deze informatie nuttig is? Hier is het Engelstalige artikel ter referentie.

Meer hulp nodig?

Uw Office-vaardigheden uitbreiden
Training verkennen
Als eerste nieuwe functies krijgen
Deelnemen aan Office Insiders

Was deze informatie nuttig?

Bedankt voor uw feedback.

Hartelijk dank voor uw feedback! Het lijkt ons een goed idee om u in contact te brengen met een van onze Office-ondersteuningsagenten.

×