Suodatinkontekstin tutkiminen

Valmis

DAX-funktion VALUES avulla kaavasi voivat määrittää, mitkä arvot ovat suodatinkontekstissa.

Funktion VALUES syntaksi on seuraava:

VALUES(<TableNameOrColumnName>)

Funktiolla edellyttää taulukkoviittauksen tai sarakeviittauksen siirtämistä. Kun ohitat taulukkoviittauksen, se palauttaa taulukko-objektin, jolla on samat sarakkeet, jotka sisältävät rivejä suodatinkontekstia varten. Kun ohitat sarakeviittauksen, se palauttaa yksisarakkeisen taulukon yksilöivät arvot, jotka ovat suodatinkontekstissa.

Funktio palauttaa aina taulukko-objektin, ja taulukon on mahdollista sisältää useita rivejä. Jos siis haluat testata, onko tietty arvo suodatinkontekstissa, sinun on ensin testattava, että VALUES funktio palauttaa yhden rivin. Kaksi funktiota voi auttaa sinua suorittamaan tämän tehtävän: - HASONEVALUE ja DAX-funktiot SELECTEDVALUE .

Funktio HASONEVALUE palauttaa arvon TRUE , kun annettu sarakeviittaus on suodatettu alas yksittäiseen arvoon.

Funktiolla SELECTEDVALUE yksinkertaistetaan määritystehtävää, mikä yksittäinen arvo voi olla. Kun funktiolle välitetään sarakeviittaus, se palauttaa yksittäisen arvon, tai kun useampi kuin yksi arvo on suodatinkontekstissa, se palauttaa arvon BLANK (tai vaihtoehtoisen arvon, joka välitetään funktiolle).

Seuraavassa esimerkissä käytät -funktiota HASONEVALUE . Lisää seuraava mittari, joka laskee myyntiprovision, Myynti-taulukkoon . Huomioi, että Adventure Worksin provisioprosentti on 10 prosenttia tuotoista kaikissa maissa tai kaikilla alueilla lukuun ottamatta Yhdysvallat. Yhdysvalloissa myyjät ansaitsevat 15 prosentin provision. Muotoile mittari kahden desimaalin valuutaksi ja lisää se sitten taulukon, joka on raportin sivulla 3.

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

Huomaa, että Myyntiprovisio-tulos on tyhjä. Syynä on se, että Maa-sarakkeessa on useita arvoja suodatinkontekstille Myyntialue-taulukossa. Tässä tapauksessa HASONEVALUE funktio palauttaa arvon FALSE, joka johtaa Tuotto-mittarin kertomisen tyhjällä (arvo kerrottuna tyhjällä on TYHJÄ). Jos haluat tuottaa kokonaissumman, sinun on käytettävä iteraattori-funktioita, joka selitetään myöhemmin tässä moduulissa.

Kolme muuta funktiota, joiden avulla voit testata suodatuksen tilaa, ovat seuraavat:

  • ISFILTERED - Palauttaa arvon TRUE , kun välitetty sarakeviittaus suodatetaan suoraan .
  • ISCROSSFILTERED – Palauttaa arvon TRUE , kun välitetty sarakeviittaus suodatetaan epäsuorasti . Sarake ristiinsuodatetaan, kun toiseen sarakkeeseen samassa taulukossa tai siihen liittyvässä taulukossa käytetty suodatin vaikuttaa viitesarakkeeseen suodattamalla sen.
  • ISINSCOPE – Palauttaa arvon TRUE , kun välitetty sarakeviittaus on taso tasojen hierarkiassa.

Palaa raportin sivulle 2 ja muokkaa sitten Revenue % Total Country -mittarin määritelmä sen testaamiseksi, että Alue-sarake on Myyntialue-taulukon alueella. Jos se ei ole vaikutusalueella, mittarin tuloksen tulee olla BLANK.

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

Huomaa matriisivisualisoinnissa, että Revenue % Total Country -arvot näytetään nyt vain, kun alue on vaikutusalueella.