Filteraanpassingsfuncties gebruiken

Voltooid

Wanneer u de CALCULATE functie gebruikt, kunt u functies voor filterwijziging doorgeven, waarmee u meer kunt bereiken dan alleen filters toevoegen.

Filters verwijderen

Gebruik de REMOVEFILTERS DAX-functie als een CALCULATE filterexpressie om filters uit de filtercontext te verwijderen. Hiermee kunnen filters uit een of meer kolommen of uit alle kolommen van een enkele tabel worden verwijderd.

Notitie

De REMOVEFILTERS functie is relatief nieuw. In eerdere versies van DAX hebt u filters verwijderd met behulp van de ALL DAX-functie of varianten, waaronder de ALLEXCEPT en de ALLNOBLANKROW DAX-functies. Deze functies gedragen zich als filteraanpassingen en als functies die tabelobjecten van afzonderlijke waarden retourneren. Deze functies worden nu vermeld, omdat u waarschijnlijk documentatie en formulevoorbeelden kunt vinden waarin filters worden verwijderd door ze te gebruiken.

In het volgende voorbeeld voegt u een nieuwe meting toe aan de tabel Sales die de meting Omzet evalueert, maar dit doet u door filters te verwijderen uit de tabel Verkoopgebied . Maak de meting op als valuta met twee decimalen.

Revenue Total Region = CALCULATE([Revenue], REMOVEFILTERS('Sales Territory'))

Voeg nu de meting Revenue Total Region toe aan het matrix-besturingselement dat te vinden is op pagina 2 van het rapport. Het matrix-besturingselement wordt gegroepeerd op drie kolommen uit de tabel Sales Territory in de rijen: Group, Country en Region.

Een afbeelding toont een matrix met de titel Reseller Revenue has Group, Country en Region gegroepeerd in de rijen, en een samenvatting van Revenue en Revenue Total Region. De waarde voor Revenue Total Region is hetzelfde voor elke rijgroep.

U ziet dat alle waarden van Revenue Total Region hetzelfde zijn. Het is de waarde van de totale omzet.

Hoewel dit resultaat op zichzelf niet nuttig is wanneer het als een noemer wordt gebruikt in een verhouding, wordt een percentage van het eindtotaal berekend. Daarom overschrijft u nu de definitie van de meting Revenue Total Region met de volgende definitie. (Deze nieuwe definitie wijzigt de naam van de meting en declareert twee variabelen. Zorg ervoor dat u de meting opmaken als een percentage met twee decimalen.)

Revenue % Total Region =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalRegionRevenue =
    CALCULATE(
        [Revenue],
        REMOVEFILTERS('Sales Territory')
    )
RETURN
    DIVIDE(
        CurrentRegionRevenue,
        TotalRegionRevenue
    )

Controleer of in het matrix-besturingselement nu de waarden voor Revenue % Total Region worden weergegeven.

Een afbeelding toont een matrix-besturingselement met de titel Reseller Revenue has Group, Country en Region gegroepeerd in de rijen, en een samenvatting van Revenue en % Total Region.

U gaat nu nog een meting maken, maar deze keer berekent u de verhouding van de omzet voor een regio gedeeld door de omzet van het land.

Voordat u deze taak voltooit, ziet u dat de waarde voor Revenue % Total Region voor de regio Southwest 22,95 procent is. Onderzoek de filtercontext voor deze cel. Schakel over naar de gegevensweergave en selecteer vervolgens in het deelvenster Velden de tabel Verkoopgebied .

Pas de volgende kolomfilters toe:

  • Group: North America
  • Country: United States
  • Region: Southwest

Een afbeelding toont de Power BI Desktop-tabelfilters voor de tabel Sales Territory. Filters worden toegepast op (1) Group = North America, (2) Country = United States, en (3) Region = Southwest.

U ziet dat de filters de tabel beperken tot slechts één rij. Terwijl u nadenkt over uw nieuwe doel om een verhouding te maken tussen de inkomsten van regio ten opzichte van de inkomsten van het land, wist u het filter nu uit de kolom Region.

Een afbeelding toont het contextmenu van de kolom en de opdracht Clear Filters is gemarkeerd.

U ziet dat er nu vijf rijen bestaan, waarbij elke rij behoort tot het land United States. Als u de kolomfilters Region verwijdert en filters in de kolommen Country en Group behouden blijven, hebt u een nieuwe filtercontext die voor het land van de regio is.

In de volgende metingsdefinitie ziet u hoe u een filter kunt wissen of verwijderen uit een kolom. In DAX-logica is dit een kleine en subtiele wijziging die is aangebracht in de metingformule Revenue % Total Region : De REMOVEFILTERS functie verwijdert nu filters uit de kolom Region in plaats van alle kolommen van de tabel Sales Territory .

Revenue % Total Country =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalCountryRevenue =
    CALCULATE(
        [Revenue],
        REMOVEFILTERS('Sales Territory'[Region])
    )
RETURN
    DIVIDE(
        CurrentRegionRevenue,
        TotalCountryRevenue
    )

Voeg de meting Revenue % Total Country toe aan de tabel Sales en maak deze op als een percentage met twee decimalen. Voeg de nieuwe meting toe aan het matrix-besturingselement.

Een afbeelding toont een matrix-besturingselement met de titel Reseller Revenue has Group, Country en Region gegroepeerd in de rijen, en een samenvatting van Revenue, Revenue % Total Region en Revenue % Total Country. Alleen de waarden voor Revenue % Total Country voor de United States zijn niet 100%.

U ziet dat alle waarden, met uitzondering van de waarden voor regio’s in de Verenigde Staten, 100 procent zijn. De reden hiervoor is dat bij het bedrijf Adventure Works de Verenigde Staten regio's heeft, terwijl alle andere landen die niet hebben.

Notitie

Modellen in tabelvorm bieden geen ondersteuning voor onregelmatige hiërarchieën, wat hiërarchieën met variabele diepten zijn. Daarom hebben ontwerpen vaak de gewoonte om bovenliggende waarden op lagere niveaus van de hiërarchie te herhalen. Australië heeft bijvoorbeeld geen regio, dus de waarde voor land/regio wordt herhaald als de regionaam. Het is altijd beter om een betekenisvolle waarde in plaats van BLANK op te slaan.

Het volgende voorbeeld is de laatste meting die u gaat maken. Voeg de meting Revenue % Total Group toe en maak deze vervolgens op als een percentage met twee decimalen. Voeg de nieuwe meting vervolgens toe aan het matrix-besturingselement.

Revenue % Total Group =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalGroupRevenue =
    CALCULATE(
        [Revenue],
        REMOVEFILTERS(
            'Sales Territory'[Region],
            'Sales Territory'[Country]
        )
    )
RETURN
    DIVIDE(
        CurrentRegionRevenue,
        TotalGroupRevenue
    )

Een afbeelding toont een matrix-besturingselement met de titel Reseller Revenue has Group, Country en Region gegroepeerd in de rijen, en een samenvatting van Revenue, Revenue % Total Region, Revenue % Total Country en Revenue % Total Group.

Wanneer u filters verwijdert uit de kolommen Regio en Land in de tabel Verkoopgebied , berekent de meting de regioomzet als een verhouding van de omzet van de groep.

Filters behouden

U kunt de KEEPFILTERS DAX-functie gebruiken als een filterexpressie in de CALCULATE functie om filters te behouden.

Als u wilt weten hoe u deze taak kunt uitvoeren, gaat u naar pagina 1 van het rapport. Wijzig vervolgens de metingdefinitie Revenue Red om de KEEPFILTERS functie te gebruiken.

Revenue Red =
CALCULATE(
    [Revenue],
    KEEPFILTERS('Product'[Color] = "Red")
)

Een afbeelding toont een tabelbesturingselement met drie kolommen: Color, Revenue en Revenue Red. Er worden negen rijen en een totaal weergegeven. Voor Revenue Red zijn alleen de rij Red en het totaal niet BLANK.

In het tabelbesturingselement ziet u dat er slechts één waarde voor Revenue Red bestaat. De reden hiervoor is dat de Booleaanse filterexpressie bestaande filters in de kolom Kleur in de tabel Product behoudt. De reden waarom andere kleuren dan rood BLANK zijn, is omdat de filtercontexten en de filterexpressies worden gecombineerd voor deze twee filters. De kleur zwart en rood worden doorsneden, en omdat beide niet tegelijkertijd kunnen zijn TRUE , wordt de expressie gefilterd op geen productrijen. Het is alleen mogelijk dat beide rode filters tegelijkertijd zijn TRUE , wat verklaart waarom de ene waarde Revenue Red wordt weergegeven.

Inactieve relaties gebruiken

Een inactieve modelrelatie kan alleen filters doorgeven wanneer de USERELATIONSHIP DAX-functie als een filterexpressie aan de CALCULATE functie wordt doorgegeven. Wanneer u deze functie gebruikt om een inactieve relatie te gaan gebruiken, wordt de actieve relatie automatisch inactief.

Bekijk een voorbeeld van een definitie van een meting die gebruikmaakt van een inactieve relatie om de meting Revenue te berekenen per verzenddatum:

Revenue Shipped =
CALCULATE (
    [Revenue],
    USERELATIONSHIP('Date'[DateKey], Sales[ShipDateKey])
)

Relatiegedrag wijzigen

U kunt het gedrag van de modelrelatie wijzigen wanneer een expressie wordt geëvalueerd door de CROSSFILTER DAX-functie door te geven als een filterexpressie aan de CALCULATE functie. Dit is een geavanceerde functie.

Met de CROSSFILTER functie kunt u filterrichtingen wijzigen (van zowel naar enkel als van één naar beide) en zelfs een relatie uitschakelen.