Undersøk filterkontekst

Fullført

VALUES DAX-funksjonen lar formlene bestemme hvilke verdier som er i filterkontekst.

Syntaksen VALUES for funksjonen er som følger:

VALUES(<TableNameOrColumnName>)

Funksjonen krever at du sender inn en tabellreferanse eller en kolonnereferanse. Når du sender inn en tabellreferanse, returneres den et tabellobjekt med de samme kolonnene som inneholder rader for det som er i filterkonteksten. Når du sender inn en kolonnereferanse, returnerer den en enkeltkolonne-tabell med unike verdier som er i filterkontekst.

Funksjonen returnerer alltid et tabellobjekt, og det er mulig for en tabell å inneholde flere rader. Hvis du vil teste om en bestemt verdi er i filterkontekst, må formelen først teste at funksjonen returnerer én VALUES enkelt rad. To funksjoner kan hjelpe deg med å utføre denne oppgaven: HASONEVALUE og SELECTEDVALUE DAX-funksjonene.

Funksjonen HASONEVALUE returnerer TRUE når en gitt kolonnereferanse er filtrert ned til én enkelt verdi.

Funksjonen SELECTEDVALUE forenkler oppgaven med å bestemme hva én enkelt verdi kan være. Når funksjonen sendes inn i en kolonnereferanse, returnerer den en enkeltverdi. Når mer enn én verdi er i filterkontekst, returnerer den BLANK (eller en alternativ verdi når du sender til funksjonen).

I eksemplet nedenfor skal du bruke HASONEVALUE funksjonen. Legg til følgende mål, som beregner salgsprovisjon, i Salg-tabellen . Vær oppmerksom på at i Adventure Works er provisjonssatsen 10 prosent av omsetningen for alle land/regioner unntatt USA. I USA får selgerne 15 prosent provisjon. Formater målet som valuta med to desimalplasser, og legg det deretter til i tabellen som du finner på Side 3 i rapporten.

Sales Commission =
[Revenue]
    * IF(
        HASONEVALUE('Sales Territory'[Country]),
        IF(
            VALUES('Sales Territory'[Country]) = "United States",
            0.15,
            0.1
        )
    )

Legg merke til at totalen for Salgsprovisjon-resultatet er BLANK. Årsaken er at flere verdier er i filterkontekst for Land-kolonnen i Salgsterritorium-tabellen . I dette tilfellet HASONEVALUE returnerer FALSEfunksjonen , noe som resulterer i at Omsetning-målet multipliseres med BLANK (en verdi multiplisert med BLANK er BLANK). For å produsere en total må du bruke en gjentakelsesfunksjon. Dette forklarer vi senere i denne modulen.

Det finnes for øvrig tre andre funksjoner du kan bruke til å teste filtertilstand:

  • ISFILTERED – Returnerer TRUE når en innsendt kolonnereferanse filtreres direkte .
  • ISCROSSFILTERED – Returnerer TRUE når en innsendt kolonnereferanse er indirekte filtrert. En kolonne er kryssfiltrert når et filter som brukes i en annen kolonne i den samme tabellen, eller i en relatert tabell, påvirker referansekolonnen ved å filtrere den.
  • ISINSCOPE – Returnerer TRUE når en innsendt kolonnereferanse er nivået i et hierarki av nivåer.

Gå tilbake til side 2 i rapporten, og endre deretter måldefinisjonen omsetning i % for land for å teste at Område-kolonnen i salgsdistrikttabellen er i omfanget. Hvis det ikke er innenfor omfanget, skal resultatet for målet 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
        )
    )

Legg merke til at verdiene i Total omsetning i % for land i matrisevisualobjektet nå bare vises når et område er innenfor omfanget.