Granska filterkontext

Slutförd

DAX-funktionen VALUES låter dina formler avgöra vilka värden som finns i filterkontexten. Syntaxen för funktionen VALUES är följande:

VALUES(<TableNameOrColumnName>)

Funktionen kräver att en tabellreferens eller en kolumnreferens skickas. När du skickar en tabellreferens returnerar den ett tabellobjekt med samma kolumner som innehåller rader för det som finns i filterkontexten. När du skickar en kolumnreferens returnerar den en tabell med en kolumn med unika värden i filterkontexten.

Funktionen returnerar alltid ett tabellobjekt och det är möjligt för en tabell att innehålla flera rader. För att testa om ett visst värde finns i filterkontexten måste din formel först testa att funktionen VALUES returnerar en enda rad. Två funktioner kan hjälpa dig att utföra den här uppgiften: DAX-funktionerna HASONEVALUE och SELECTEDVALUE.

Funktionen HASONEVALUE returnerar TRUE när en viss kolumnreferens har filtrerats ned till ett enda värde.

Funktionen SELECTEDVALUE förenklar uppgiften att fastställa vad ett enda värde kan vara. När funktionen skickas till en kolumnreferens returneras ett enskilt värde, eller om fler än ett värde finns i filterkontexten kommer det att returnera BLANK (eller ett alternativt värde som du skickar till funktionen).

I följande exempel ska du använda funktionen HASONEVALUE. Lägg till följande mått, som beräknar säljprovision. Observera att i Adventure Works är provisionen 10 procent av intäkterna för alla länder förutom USA. I USA får säljarna 15 % provision. Formatera måttet som valuta med två decimaler och lägg sedan till det i den tabellen som finns på Sida 3 i rapporten.

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

En bild visar ett visuellt tabellobjekt med tre kolumner: Region, Intäkt och Säljprovision. Tio regionsrader och en summa visas. Den totala försäljningsprovisionen är BLANK.

Observera att det totala resultatet för Säljprovision är BLANK. Orsaken är att flera värden finns i filterkontext för kolumnen Land i tabellen Försäljningsområde. I det här fallet returnerar funktionen HASONEVALUE FALSE, vilket resulterar i att måttet Intäkter multipliceras med BLANK (ett värde multiplicerat med BLANK är BLANK). Om du vill skapa en total summa måste du använda en iteratorfunktion som beskrivs senare i den här modulen.

Tre andra funktioner som du kan använda för att testa filterstatus är:

  • DAX-funktionen ISFILTERED – Returnerar TRUE när en kolumnreferens som skickas filtreras direkt.

  • DAX-funktionen ISCROSSFILTERED – Returnerar TRUE när en kolumn referens som skickats filtreras indirekt. En kolumn korsfiltreras när ett filter som används på en annan kolumn i samma tabell, eller i en relaterad tabell, påverkar referenskolumnen genom att filtrera den.

  • DAX-funktionen ISINSCOPE – Returnerar TRUE när en kolumnreferens som skickats är nivån i en hierarki med nivåer.

Gå tillbaka till Sida 2 av rapporten och ändra sedan måttdefinitionen Intäkter % för helt land för att kontrollera att kolumnen Region i tabellen Försäljningsområde är med i omfånget. Måttresultatet bör vara BLANK om det inte är med i omfånget.

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

En bild visar en matrisvisualisering med rubriken Återförsäljares intäkter har Grupp, Land och Region grupperade på raderna, och sammanfattningarna Intäkt, Intäkt % för hel region, Intäkt % för helt land och Intäkt % för hel grupp. BLANK-värden finns i beloppen för Intäkt% för helt land.

I matrisvisualiseringen ser du att värdena för Intäkt % för helt land nu bara visas när en region ingår i omfånget.