Granska filterkontext

Slutförd

Med VALUES DAX-funktionen kan dina formler avgöra vilka värden som finns i filterkontexten.

Funktionssyntaxen 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 formeln därför först testa att VALUES funktionen returnerar en enskild rad. Två funktioner kan hjälpa dig att utföra den här uppgiften: HASONEVALUE funktionerna och SELECTEDVALUE DAX.

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

Funktionen SELECTEDVALUE förenklar uppgiften att avgöra 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 använder HASONEVALUE du funktionen . Lägg till följande mått, som beräknar försäljningsprovision, i tabellen Försäljning . Observera att i Adventure Works är provisionen 10 procent av intäkterna för alla länder/regioner utom 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 filterkontexten för kolumnen Land i tabellen Sales Territory . I det här fallet HASONEVALUE returnerar FALSEfunktionen , 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:

  • ISFILTERED – Returnerar TRUE när en skickad kolumnreferens filtreras direkt .
  • ISCROSSFILTERED – Returnerar TRUE när en skickad kolumnreferens 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.
  • ISINSCOPE – Returnerar TRUE när en kolumnreferens som skickas är nivån i en hierarki med nivåer.

Gå tillbaka till sidan 2 i rapporten och ändra sedan måttdefinitionen Intäkt % totalt land för att testa att kolumnen Region i tabellen Sales Territory är 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.