Suodatinkontekstin tutkiminen
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 arvonTRUE
, kun välitetty sarakeviittaus suodatetaan suoraan . -
ISCROSSFILTERED
– Palauttaa arvonTRUE
, 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 arvonTRUE
, 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.