Undersøg filterkontekst

Fuldført

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 FALSEfunktionen 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 – Returnerer TRUE , når en overført kolonnereference filtreres direkte .
  • ISCROSSFILTERED – Returnerer TRUE , 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 – Returnerer TRUE , 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.