Filtercontext onderzoeken
Met de VALUES
DAX-functie kunnen formules bepalen welke waarden zich in de filtercontext bevinden.
De VALUES
syntaxis van de functie is als volgt:
VALUES(<TableNameOrColumnName>)
Voor de functie moet een tabelverwijzing of een kolomverwijzing worden doorgegeven. Wanneer u een tabelverwijzing doorgeeft, wordt een tabelobject geretourneerd met dezelfde kolommen die rijen bevatten voor de filtercontext. Wanneer u een kolomverwijzing doorgeeft, wordt een tabel met één kolom geretourneerd met unieke waarden die zich in de filtercontext bevinden.
De functie retourneert altijd een tabelobject en het is mogelijk dat een tabel meerdere rijen bevat. Als u wilt testen of een specifieke waarde zich in de filtercontext bevindt, moet uw formule daarom eerst testen of de VALUES
functie één rij retourneert. Twee functies kunnen u helpen deze taak uit te voeren: de HASONEVALUE
en de SELECTEDVALUE
DAX-functies.
De HASONEVALUE
functie retourneert TRUE
wanneer een bepaalde kolomreferentie is gefilterd op één waarde.
De SELECTEDVALUE
functie vereenvoudigt de taak om te bepalen wat één waarde kan zijn. Wanneer een kolomverwijzing door de functie wordt doorgegeven, wordt er één waarde geretourneerd of wanneer zich meer dan één waarde in de filtercontext bevindt, retourneert deze BLANK (of een alternatieve waarde die u aan de functie doorgeeft).
In het volgende voorbeeld gebruikt u de HASONEVALUE
functie . Voeg de volgende meting, waarmee de verkoopprovisie wordt berekend, toe aan de tabel Verkoop . Houd er rekening mee dat bij Adventure Works het commissietarief 10 procent van de omzet is voor alle landen/regio's behalve de Verenigde Staten. In de Verenigde Staten verdienen verkopers een provisie van 15 procent. Maak de meting op als valuta met twee decimalen en voeg deze vervolgens toe aan de tabel die is gevonden op pagina 3 van het rapport.
Sales Commission =
[Revenue]
* IF(
HASONEVALUE('Sales Territory'[Country]),
IF(
VALUES('Sales Territory'[Country]) = "United States",
0.15,
0.1
)
)
U ziet dat het resultaat van de totale Sales Commission BLANK is. De reden hiervoor is dat meerdere waarden zich in de filtercontext bevinden voor de kolom Land in de tabel Verkoopgebied . In dit geval retourneert FALSE
de HASONEVALUE
functie , waardoor de meting Revenue wordt vermenigvuldigd met BLANK (een waarde vermenigvuldigd met BLANK is BLANK). Als u een totaal wilt produceren, moet u een iterator-functie gebruiken. Dit wordt later in deze module uitgelegd.
Er zijn drie andere functies die u kunt gebruiken om de filterstatus te testen:
-
ISFILTERED
- RetourneertTRUE
wanneer een doorgegeven kolomverwijzing rechtstreeks wordt gefilterd. -
ISCROSSFILTERED
- RetourneertTRUE
wanneer een doorgegeven kolomverwijzing indirect wordt gefilterd. Een kolom wordt kruislings gefilterd wanneer een filter dat wordt toegepast op een andere kolom in dezelfde tabel of in een gerelateerde tabel van invloed is op de verwijzingskolom door deze te filteren. -
ISINSCOPE
- RetourneertTRUE
wanneer een doorgegeven kolomverwijzing het niveau in een hiërarchie van niveaus is.
Ga terug naar pagina 2 van het rapport en wijzig vervolgens de metingsdefinitie Revenue % Total Country om te testen of de kolom Region in de tabel Sales Territory binnen het bereik valt. Als deze niet binnen het bereik valt, moet het resultaat van de meting BLANK zijn.
Revenue % Total Country =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalCountryRevenue =
CALCULATE(
[Revenue],
REMOVEFILTERS('Sales Territory'[Region])
)
RETURN
IF(
ISINSCOPE('Sales Territory'[Region]),
DIVIDE(
CurrentRegionRevenue,
TotalCountryRevenue
)
)
In het matrix-besturingselement ziet u dat de waarden voor Revenue % Total Country nu alleen worden weergegeven wanneer een regio binnen het bereik valt.