Undersøg filterkontekst
Med VALUES
DAX-funktionen kan formlerne bestemme, hvilke værdier der er i filterkontekst.
Funktionssyntaksen VALUES
er som følger:
VALUES(<TableNameOrColumnName>)
Funktionen kræver angivelse af en tabelreference eller kolonnereference. Når du angiver en tabelreference, returnerer den et tabelobjekt med de samme kolonner, der indeholder rækker til det indhold, der er i filterkonteksten. Når du angiver en kolonnereference, returneres der en tabel med en enkelt kolonne med entydige værdier, der er i filterkonteksten.
Funktionen returnerer altid et tabelobjekt, og en tabel kan indeholde flere rækker. Hvis du vil teste, om en bestemt værdi er i filterkontekst, skal din formel derfor først teste, at funktionen VALUES
returnerer en enkelt række. To funktioner kan hjælpe dig med at udføre denne opgave: HASONEVALUE
funktionerne og SELECTEDVALUE
DAX.
Funktionen HASONEVALUE
returnerer TRUE
, når en given kolonnereference er filtreret ned til en enkelt værdi.
Funktionen SELECTEDVALUE
forenkler opgaven med at bestemme, hvad en enkelt værdi kan være. Når funktionen angiver en kolonnereference, returnerer den en enkelt værdi, og når der er mere end én værdi i filterkonteksten, returnerer den BLANK (eller en alternativ værdi, du sender til funktionen).
I følgende eksempel skal du bruge funktionen HASONEVALUE
. Føj følgende måling, som beregner salgsprovisionen, til tabellen Sales . Bemærk, at i Adventure Works er provisionssatsen 10 % af indtægten for alle lande/områder undtagen USA. I USA optjener sælgere 15 % provision. Formatér målingen som valuta med to decimaler, og føj den derefter til tabellen på side 3 i rapporten.
Sales Commission =
[Revenue]
* IF(
HASONEVALUE('Sales Territory'[Country]),
IF(
VALUES('Sales Territory'[Country]) = "United States",
0.15,
0.1
)
)
Bemærk, at totalen for Sales Commission er BLANK. Årsagen er, at flere værdier er i filterkontekst for kolonnen Country i tabellen Sales Territory . I dette tilfælde returnerer FALSE
funktionen HASONEVALUE
, hvilket resulterer i, at målingen Revenue multipliceres med BLANK (en værdi multipliceret med BLANK er BLANK). Hvis du vil oprette en total, skal du bruge en iteratorfunktion, som beskrives senere i dette modul.
Tre andre funktioner, du kan bruge til test af filtertilstand, er:
-
ISFILTERED
– ReturnererTRUE
, når en overført kolonnereference filtreres direkte . -
ISCROSSFILTERED
– ReturnererTRUE
, når en overført kolonnereference filtreres indirekte . En kolonne er krydsfiltreret, når et filter, der er anvendt på en anden kolonne i samme tabel eller i en relateret tabel, påvirker referencekolonnen ved at filtrere den. -
ISINSCOPE
– ReturnererTRUE
, når en reference til en overført kolonne er niveauet i et hierarki af niveauer.
Gå tilbage til side 2 i rapporten, og rediger derefter målingsdefinitionen Revenue % Total Country for at teste, at kolonnen Region i tabellen Sales Territory er i området. Hvis resultatet af målingen ikke er inden for området, bør resultatet være BLANK.
Revenue % Total Country =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalCountryRevenue =
CALCULATE(
[Revenue],
REMOVEFILTERS('Sales Territory'[Region])
)
RETURN
IF(
ISINSCOPE('Sales Territory'[Region]),
DIVIDE(
CurrentRegionRevenue,
TotalCountryRevenue
)
)
I matrixvisual'et kan du se, a værdierne for Revenue % Total Country nu kun vises, når et område er inden for området.