CROSSFILTER
Specifica la direzione di filtro incrociato da utilizzare in un calcolo per una relazione esistente tra due colonne.
Sintassi
CROSSFILTER(<columnName1>, <columnName2>, <direction>)
Parametri
Termine | Definizione |
---|---|
columnName1 |
Nome di una colonna esistente, utilizzando la sintassi standard DAX e completo, che in genere rappresenta il lato molti della relazione da utilizzare; se gli argomenti vengono specificati in ordine inverso, la funzione li scambierà prima di usarli. Questo argomento non può essere un'espressione. |
columnName2 |
Nome di una colonna esistente, utilizzando la sintassi standard DAX e completo, che in genere rappresenta il lato uno o il lato di ricerca della relazione da utilizzare; se gli argomenti vengono specificati in ordine inverso, la funzione li scambierà prima di usarli. Questo argomento non può essere un'espressione. |
Direction |
Direzione del filtro incrociato da utilizzare. Deve essere uno dei seguenti:None : non si verifica alcun filtro incrociato lungo questa relazione.Both : 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 filtrare 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 filtrare 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 esiste alcuna differenza tra quella e entrambe le direzioni.
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, identificando le relazioni in base alle colonne del punto finale.
In CROSSFILTERl'impostazione di filtro incrociato di una relazione non è importante; ovvero se la relazione è impostata per filtrare una o entrambe le direzioni nel modello non influisce sull'utilizzo della funzione. CROSSFILTER sostituirà qualsiasi impostazione di filtro incrociato esistente.
Viene restituito un errore se una delle colonne denominate come argomento non fa parte di una relazione o gli argomenti appartengono a relazioni diverse.
Se CALCULATE espressioni sono annidate e più di un'espressione CALCULATE contiene una funzione CROSSFILTER, la CROSSFILTER più interna è quella che prevale in caso di conflitto o ambiguità.
Questa funzione non è supportata per l'uso in modalità DirectQuery quando viene usata nelle 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.
Per impostazione predefinita, non è possibile ottenere il conteggio dei prodotti venduti per anno:
Esistono due modi per ottenere il conteggio dei prodotti per anno:
Attivare il filtro incrociato bidirezionale sulla relazione. In questo modo i filtri funzioneranno per tutti i dati tra queste due tabelle.
Usare la funzione CROSSFILTER per modificare il funzionamento delle relazioni solo per 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 è simile alla 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: