Brug filterændringfunktioner
Når du bruger funktionen CALCULATE
, kan du overføre filterændringsfunktioner, som gør det muligt for dig at udføre mere end at tilføje filtre alene.
Fjern filtre
Brug DAX-funktionen REMOVEFILTERS
som et CALCULATE
filterudtryk til at fjerne filtre fra filterkonteksten. Den kan fjerne filtre fra en eller flere kolonner eller fra alle kolonner i en enkelt tabel.
Bemærk
Funktionen REMOVEFILTERS
er relativt ny. I tidligere versioner af DAX fjernede du filtre ved hjælp ALL
af DAX-funktionen eller -varianterne, herunder ALLEXCEPT
DAX-funktionerne og ALLNOBLANKROW
. Disse funktioner fungerer både som filtermodifikatorer og funktioner, der returnerer tabelobjekter for distinkte værdier. Disse funktioner nævnes nu, fordi du sandsynligvis kan finde dokumentation og formeleksempler, der fjerner filtre ved hjælp af dem.
I følgende eksempel skal du føje en ny måling til tabellen Sales , der evaluerer målingen Revenue , men gør det ved at fjerne filtre fra tabellen Sales Territory . Formatér målingen som valuta med to decimalpladser.
Revenue Total Region = CALCULATE([Revenue], REMOVEFILTERS('Sales Territory'))
Tilføj nu målingen Revenue Total Region til det matrixvisual, der findes på side 2 i rapporten. Matrixvisual'et grupperer efter tre kolonner fra tabellen Sales Territory i rækkerne: Group, Country og Region.
Bemærk, at alle værdierne for Revenue Total Region er ens. Det er værdien for den samlede indtægt.
Selvom dette resultat ikke kan bruges til noget alene, kan det, når det bruges som nævner i en forholdstalsberegning, beregne en procent af hovedtotalen. Derfor skal du nu overskrive målingsdefinitionen Revenue Total Region med følgende definition. Denne nye definition ændrer målingsnavnet og deklarerer to variabler. Sørg for at formatere målingen som en procentdel med to decimaler.)
Revenue % Total Region =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalRegionRevenue =
CALCULATE(
[Revenue],
REMOVEFILTERS('Sales Territory')
)
RETURN
DIVIDE(
CurrentRegionRevenue,
TotalRegionRevenue
)
Kontrollér, at matrixvisual'et viserne værdierne for Revenue % Total Region.
Du skal nu oprette endnu en måling, men denne gang skal du beregne forholdet mellem indtægten for et område divideret med indtægten for landet.
Før du fuldfører denne opgave, skal du bemærke, at den samlede værdi for Revenue % Total Region for området Southwest er 22,95 %. Undersøg filterkonteksten for denne celle. Skift til datavisning, og vælg derefter tabellen Sales Territory i ruden Felter.
Anvend følgende kolonnefiltre:
- Group – North America
- Country – United States
- Region – Southwest
Bemærk, at filtrene reducerer tabellen til kun én række. Med tanke på dit nye mål om at oprette et forhold mellem områdets indtægt og landets indtægt skal du fjerne markeringen i afkrydsningsfeltet for kolonnen Region.
Bemærk, at der nu findes fem rækker, og at hver række hører til landet United States. Når du i overensstemmelse hermed rydder kolonnefiltrene for Region, samtidig med at du bevarer filtre på kolonnerne Country og Group, får du en ny filterkontekst, der gælder for områdets land.
I følgende målingsdefinition kan du se, hvordan du kan rydde eller fjerne et filter fra en kolonne. I DAX-logik er det en lille og diskret ændring, der foretages i formlen for målingen Revenue % Total Region : Funktionen REMOVEFILTERS
fjerner nu filtre fra kolonnen Region i stedet for alle kolonner i tabellen Sales Territory .
Revenue % Total Country =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalCountryRevenue =
CALCULATE(
[Revenue],
REMOVEFILTERS('Sales Territory'[Region])
)
RETURN
DIVIDE(
CurrentRegionRevenue,
TotalCountryRevenue
)
Føj målingen Revenue % Total Country til tabellen Sales, og formatér den derefter som en procentdel med to decimaler. Føj den nye måling til matrixvisual'et.
Bemærk, at alle værdier, undtagen værdierne for områderne i United States, er 100 %. Det skyldes, at United States har områder i virksomheden Adventure Works, mens ingen andre lande har det.
Bemærk
Tabellariske modeller understøtter ikke ujævne hierarkier, som er hierarkier med variable dybder. Det er derfor en almindelig designmetode at gentage overordnede værdier på lavere niveauer i hierarkiet. Australien har f.eks. ikke et område, så værdien for land/område gentages som områdenavnet. Det er altid bedre at gemme en meningsfuld værdi i stedet for BLANK.
Det næste eksempel er den sidste måling, du skal oprette. Tilføj målingen Revenue % Total Group, og formatér den derefter som en procentdel med to decimaler. Føj derefter den nye måling til matrixvisual'et.
Revenue % Total Group =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalGroupRevenue =
CALCULATE(
[Revenue],
REMOVEFILTERS(
'Sales Territory'[Region],
'Sales Territory'[Country]
)
)
RETURN
DIVIDE(
CurrentRegionRevenue,
TotalGroupRevenue
)
Når du fjerner filtre fra kolonnerne Region og Country i tabellen Sales Territory , beregner målingen områdeomsætningen som et forholdstal for gruppens indtægt.
Bevar filtre
Du kan bruge KEEPFILTERS
DAX-funktionen som et filterudtryk i funktionen CALCULATE
til at bevare filtre.
Hvis du vil se, hvordan du kan udføre denne opgave, skal du skifte til side 1 i rapporten. Rediger derefter målingsdefinitionen Revenue Red for at bruge funktionen KEEPFILTERS
.
Revenue Red =
CALCULATE(
[Revenue],
KEEPFILTERS('Product'[Color] = "Red")
)
Bemærk, at der kun findes én værdi for Revenue Red i tabelvisual'et. Årsagen er, at det booleske filterudtryk bevarer eksisterende filtre på kolonnen Color i tabellen Product . Årsagen til, at andre farver end rød er BLANK er, at filterkonteksterne og filterudtrykkene er kombineret for disse to filtre. Farven sort og rød skærer hinanden, og da begge ikke kan være TRUE
på samme tid, filtreres udtrykket ikke efter nogen produktrækker. Det er kun muligt, at begge røde filtre kan være TRUE
på samme tid, hvilket forklarer, hvorfor den ene værdi for Revenue Red vises.
Brug inaktive relationer
En inaktiv modelrelation kan kun overføre filtre, når USERELATIONSHIP
DAX-funktionen overføres som et filterudtryk til funktionen CALCULATE
. Når du bruger denne funktion til at aktivere en inaktiv relation, bliver den aktive relation automatisk inaktiv.
Gennemse et eksempel på en målingsdefinition, der bruger en inaktiv relation til at beregne målingen Revenue efter afsendelsesdatoer:
Revenue Shipped =
CALCULATE (
[Revenue],
USERELATIONSHIP('Date'[DateKey], Sales[ShipDateKey])
)
Rediger funktionsmåden for relationer
Du kan ændre funktionsmåden for modelrelationer, når et udtryk evalueres ved at overføre CROSSFILTER
DAX-funktionen som et filterudtryk til funktionen CALCULATE
. Det er en avanceret funktion.
Funktionen CROSSFILTER
kan ændre filterretninger (fra både til enkelt eller fra enkelt til begge) og endda deaktivere en relation.