CROSSFILTER

Si applica a: Calcolo visivo misura tabella calcolata colonna calcolata

Specifica la direzione tra filtri da usare in un calcolo per una relazione esistente tra due colonne.

Sintassi

CROSSFILTER(<columnName1>, <columnName2>, <direction>)  

Parametri

Termine Definizione
columnName1 Nome completo di una colonna esistente in sintassi DAX standard, che generalmente rappresenta il lato "molti" della relazione da usare. Se gli argomenti vengono dati in ordine inverso, prima dell'uso la funzione li scambia. Questo argomento non può essere un'espressione.
columnName2 Nome completo di una colonna esistente in sintassi DAX standard, che generalmente rappresenta il lato "uno" o "ricerca" della relazione da usare. Se gli argomenti vengono dati in ordine inverso, prima dell'uso la funzione li scambia. Questo argomento non può essere un'espressione.
Direction Direzione del filtro incrociato da usare. I possibili valori sono i seguenti:

Nessuna: nessun filtro incrociato si verifica lungo questa relazione.

Entrambi: i filtri su entrambi i lati filtrano l'altro lato.

OneWay: filtri su un lato o sul lato di ricerca di una relazione filtrano l'altro lato. Questa opzione non può essere usata con una relazione uno-a-uno. Non usare questa opzione in una relazione molti-a-molti perché non è chiaro quale lato è il lato di ricerca; usare invece OneWay_LeftFiltersRight o OneWay_RightFiltersLeft.

OneWay_LeftFiltersRight: i filtri sul lato di <columnName1> filtrano il lato di <columnName2>. Questa opzione non può essere usata con una relazione uno-a-uno o molti-a-uno.

OneWay_RightFiltersLeft: i filtri sul lato di <columnName2> filtrano il lato di <columnName1>. Questa opzione non può essere usata con una relazione uno-a-uno o molti-a-uno.

Valore restituito

La funzione non restituisce alcun valore. La funzione imposta solo la direzione del filtro incrociato per la relazione indicata, per la durata della query.

Osservazioni:

  • Nel caso di una relazione 1:1, non c'è differenza tra le direzioni "one" e "both".

  • CROSSFILTER può essere usato solo nelle funzioni che accettano un filtro come argomento, ad esempio: CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD e TOTALYTD.

  • CROSSFILTER usa le relazioni esistenti nel modello, identificandole in base alle colonne punto finale.

  • In CROSSFILTER, l'impostazione del filtro incrociato di una relazione non è importante. In altre parole, il fatto che la relazione sia impostata per l'applicazione del filtro in una o entrambe le direzioni nel modello non influisce sull'uso della funzione. CROSSFILTER eseguirà l'override di qualsiasi impostazione di filtro incrociato esistente.

  • Se alcune delle colonne indicate come argomento non fanno parte di una relazione o se gli argomenti appartengono a relazioni diverse, viene restituito un errore.

  • Se le espressioni CALCULATE sono annidate e più espressioni CALCULATE contengono una funzione CROSSFILTER, la funzione CROSSFILTER più interna sarà quella prevalente in caso di conflitto o ambiguità.

  • Questa funzione non è supportata per l'uso nella modalità DirectQuery se usata in colonne calcolate o nelle regole di sicurezza a livello di riga.

Esempio

Nel diagramma del modello seguente, Sia DimProduct che DimDate hanno una singola relazione di direzione con FactInternetSales.

CROSSFILTER_Examp_DiagView

Per impostazione predefinita, non è possibile ottenere il numero di prodotti venduti per anno:

CROSSFILTER_Examp_PivotTable1

Esistono due modi per ottenere il numero di prodotti in base all'anno:

  • Attivare l'uso di filtri incrociati bidirezionali per la relazione. Questo modificherà il funzionamento dei filtri per tutti i dati tra le due tabelle.

  • Usare la funzione CROSSFILTER per modificare il funzionamento delle relazioni per solo questa misura.

Quando si usa DAX, è possibile usare la funzione CROSSFILTER per modificare il comportamento della direzione del filtro incrociato tra due colonne definite da una relazione. In questo caso, l'espressione DAX ha un aspetto simile al seguente:

BiDi:= CALCULATE([Distinct Count of ProductKey], CROSSFILTER(FactInternetSales[ProductKey], DimProduct[ProductKey] , Both))

Usando la funzione CROSSFILTER nell'espressione di misura si ottengono i risultati previsti:

CROSSFILTER_Examp_PivotTable2