Del via


CROSSFILTER

gjelder:beregnet kolonneberegnet tabellmålevisualobjektberegning

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 og fullstendig kvalifisert, som vanligvis representerer den mange siden av relasjonen som skal brukes. hvis argumentene er gitt 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 og fullstendig kvalifisert, som vanligvis representerer den ene siden eller oppslagssiden av relasjonen som skal brukes. hvis argumentene er gitt i omvendt rekkefølge, vil funksjonen bytte dem før du bruker dem. Dette argumentet kan ikke være et uttrykk.
Direction Kryssfiltreringsretningen som skal brukes. Må være ett av følgende:

None – Ingen kryssfiltrering forekommer langs denne relasjonen.

Both – Filtre på hver side filtrerer den andre siden.

OneWay – Filtre på den ene siden eller oppslagssiden av en relasjon filtrerer 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 eller OneWay_RightFiltersLeft i stedet.

OneWay_LeftFiltersRight – Filtre på siden av columnName1 filtrerer siden av columnName2. Dette alternativet kan ikke brukes med en én-til-én- eller mange-til-én-relasjon.

OneWay_RightFiltersLeft – Filtre på siden av columnName2 filtrerer siden av columnName1. Dette alternativet kan ikke brukes med en én-til-én- eller mange-til-én-relasjon.

Returverdi

Funksjonen returnerer ingen verdi. funksjonen angir bare kryssfiltreringsretningen for den angitte relasjonen, så lenge spørringen varer.

Merknader

  • Når det gjelder en 1:1-relasjon, er det ingen forskjell mellom én og begge retninger.

  • CROSSFILTER kan bare brukes i funksjoner som tar et filter som argument, for eksempel: CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD og TOTALYTD funksjoner.

  • CROSSFILTER bruker eksisterende relasjoner i modellen, og identifiserer relasjoner etter sluttpunktkolonnene.

  • I CROSSFILTERer ikke innstillingen for kryssfiltrering av en relasjon viktig. det vil eksempel: Om relasjonen er satt til å filtrere én, eller begge retninger i modellen, påvirker ikke bruken av funksjonen. CROSSFILTER overstyrer alle eksisterende kryssfiltreringsinnstillinger.

  • En feil returneres hvis noen av kolonnene som kalles et argument, ikke er en del av en relasjon, eller argumentene tilhører forskjellige relasjoner.

  • Hvis CALCULATE uttrykk er nestet, og mer enn ett CALCULATE uttrykk inneholder en CROSSFILTER-funksjon, er den innerste CROSSFILTER den som råder i tilfelle konflikt eller tvetydighet.

  • Denne funksjonen støttes ikke for bruk i DirectQuery-modus når den brukes i beregnede kolonner eller regler for sikkerhet på radnivå (RLS).

Eksempel

I det følgende modelldiagrammet har både DimProduct og DimDate en enkeltretningsrelasjon med FactInternetSales.

CROSSFILTER_Examp_DiagView

Som standard kan vi ikke hente antall produkter som selges etter år:

CROSSFILTER_Examp_PivotTable1

Det finnes to måter å få antall produkter etter år på:

  • Aktiver toveis kryssfiltrering på relasjonen. Dette endrer hvordan filtre fungerer for alle data mellom disse to tabellene.

  • Bruk CROSSFILTER-funksjonen til å endre hvordan relasjonene fungerer bare for dette målet.

Når du bruker DAX, kan vi bruke CROSSFILTER-funksjonen til å endre hvordan kryssfiltreringsretningen 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 måluttrykk får vi de forventede resultatene:

CROSSFILTER_Examp_PivotTable2