CROSSFILTER
gjelder:beregnet kolonneberegnet tabellMeasurevisualobjektberegning
Angir kryssfiltreringsretningen som skal brukes i en beregning for en relasjon som finnes mellom to kolonner.
Syntaks
CROSSFILTER(<columnName1>, <columnName2>, <direction>)
Parametere
Vilkår | Definisjon |
---|---|
columnName1 |
Navnet på en eksisterende kolonne, ved hjelp av standard DAX syntaks and fullstendig kvalifisert, som vanligvis representerer mange-siden av relasjonen som skal brukes. if argumentene gis i omvendt rekkefølge, vil funksjonen bytte dem før du bruker dem. Dette argumentet kan ikke være et uttrykk. |
columnName2 |
Navnet på en eksisterende kolonne, ved hjelp av standard DAX syntaks and fullstendig kvalifisert, som vanligvis representerer den ene siden or oppslagssiden av relasjonen som skal brukes. if argumentene gis i motsatt rekkefølge, vil funksjonen bytte dem før du bruker dem. Dette argumentet kan ikke være et uttrykk. |
Direction |
Kryss-filter retningen som skal brukes. Må være ett av følgende:None – Ingen kryssfiltrering forekommer langs denne relasjonen.Both - Filters på hver side filters den andre siden.OneWay - Filters på den ene siden or oppslagssiden av en relasjon filter den andre siden. Dette alternativet kan ikke brukes med en én-til-én-relasjon. Ikke bruk dette alternativet på en mange-til-mange-relasjon fordi det er uklart hvilken side som er oppslagssiden. bruk OneWay_LeftFiltersRight or OneWay_RightFiltersLeft i stedet.OneWay_LeftFiltersRight - Filters på siden av columnName1 filter siden av columnName2 . Dette alternativet kan ikke brukes med en én-til-én-or mange-til-én-relasjon.OneWay_RightFiltersLeft - Filters på siden av columnName2 filter siden av columnName1 . Dette alternativet kan ikke brukes med en én-til-én-or mange-til-én-relasjon. |
Returner value
Funksjonen returnerer ingen value; funksjonen angir bare kryssfiltreringsretningen for den angitte relasjonen, for duration for spørringen.
Merknader
Når det gjelder en 1:1-relasjon, er det ingen forskjell mellom den and begge retninger.
CROSSFILTER kan bare brukes i funksjoner som tar en filter som argument, for eksempel: CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTDandTOTALYTD funksjoner.
CROSSFILTER bruker eksisterende relasjoner i modellen, og identifiserer relasjoner etter sluttpunktkolonnene.
I CROSSFILTERer innstillingen for kryssfiltrering av en relasjon not viktig. det vil se ut om relasjonen er satt til filter én, or begge retningene i modellen påvirker not bruken av funksjonen. CROSSFILTER overstyrer alle eksisterende kryssfiltreringsinnstillinger.
En error returneres if noen av kolonnene som kalles et argument, er not en del av en relasjon or argumentene tilhører forskjellige relasjoner.
If CALCULATE uttrykk nestes, and mer enn ett CALCULATE uttrykk contains en CROSSFILTER-funksjon, er den innerste CROSSFILTER den som råder i tilfelle konflikt or tvetydighet.
Denne funksjonen støttes not for bruk i DirectQuery-modus når den brukes i beregnede kolonner or regler for sikkerhet på radnivå (RLS).
Eksempel
I det følgende modelldiagrammet har både DimProduct and DimDate en enkelt retningsrelasjon med FactInternetSales.
Som standard kan vi ikke hente Count produkter som selges av year:
Det finnes to måter å få count produkter på ved å year:
Aktiver toveis kryssfiltrering på relasjonen. Dette endrer hvordan filters fungerer for all data mellom disse to tabellene.
Bruk CROSSFILTER-funksjonen til å endre hvordan relasjonene fungerer for bare denne measure.
Når du bruker DAX, kan vi bruke CROSSFILTER-funksjonen til å endre hvordan retningen på tvers avfilter fungerer mellom to kolonner definert av en relasjon. I dette tilfellet ser DAX uttrykket slik ut:
BiDi:= CALCULATE([Distinct Count of ProductKey], CROSSFILTER(FactInternetSales[ProductKey], DimProduct[ProductKey] , Both))
Ved å bruke CROSSFILTER-funksjonen i vårt measure uttrykk får vi de forventede resultatene: