Power Automate si applica a ogni azione nei flussi di lavoro
Scopri l
In questa esercitazione si apprenderà come funziona la funzione in DAX usando il riquadro Server Timings e il relativo piano di query.
La funzione CROSSJOIN può essere utilizzata per creare un prodotto cartesiano di due tabelle. Un prodotto cartesiano è un insieme di tutte le possibili combinazioni di righe di due o più tabelle.
In questa esercitazione verrà usato il codice DAX riportato di seguito.
Puoi vedere che la funzione CROSSJOIN genera una combinazione del prodotto Brand e Color anche se alcune di queste combinazioni non esistono nella tabella dei fatti . Il risultato è una tabella con un totale di 176 righe.
Nella scheda Server Timings, la prima query recupera il Brand dalla tabella Products, mentre la seconda query recupera il Color.
Nel Logical Query Plan , la prima riga restituisce il risultato sotto forma di tabella. La seconda e la terza riga nella tabella dei prodotti scansionano rispettivamente il colore e il marchio.
Una volta ricevuti i dati, Formula Engine esegue un'iterazione sulla tabella e produce una combinazione di entrambe le colonne. Il CrossApply nella riga 2 corrisponde alla funzione CROSSJOIN.
Sommario
Filtra i risultati CROSSJOIN in DAX
È possibile utilizzare la funzione per filtrare i risultati di un CROSSJOIN. Ad esempio, puoi usarlo per mostrare solo i prodotti che sono rossi.
Tuttavia, ricorda che non puoi inserire una funzione CROSSJOIN all'interno di un argomento FILTER .
Ora, se esegui questo codice e controlli la scheda Server Timings, vedrai che il contesto del filtro non appare come una clausola WHERE nella query.
La funzione CROSSJOIN può essere risolta solo dal Formula Engine . Il codice non funziona poiché si trova tra FILTER e che sono funzioni che possono essere risolte solo da Storage Engine . Pertanto, CROSSJOIN ha causato l'interruzione del ciclo tra queste due funzioni.
Pertanto, è necessario inserire la funzione FILTER all'interno dell'argomento CROSSJOIN affinché il filtro funzioni.
Ora, se esegui questo codice e controlli la scheda Server Timings, vedrai che la funzione FILTER è ora rappresentata dalla clausola WHERE.
Nel piano di query logico, puoi vedere che invece dell'operatore di filtro, viene utilizzato il filtro VertiPaq .
Questo perché la nuova condizione di filtro nel codice può essere trasferita allo Storage Engine. Dopo la restituzione del risultato, l'argomento CROSSJOIN viene quindi eseguito all'interno del motore di formula.
L'operatore IN
È inoltre possibile utilizzare l' operatore anziché il segno di uguale in un argomento FILTER.
L'operatore IN può essere utilizzato all'interno dell'argomento espressione della funzione FILTER per filtrare una tabella in base al fatto che un valore sia contenuto in un elenco di valori o in una tabella.
Quando si usa la combinazione FILTER – IN , il motore DAX deve eseguire un filtro IsEmpty che conferma se il colore del prodotto è rosso o nero.
Aggiungere la colonna delle vendite totali nel risultato CROSSJOIN DAX
Altre funzioni possono essere utilizzate anche insieme a CROSSJOIN.
Puoi usare la funzione per aggiungere un'altra colonna nella tua tabella e quindi scrivere l'argomento delle informazioni che vuoi mostrare.
In questo esempio, aggiungiamo una colonna Total Sales.
Quando esegui il codice, i risultati restituiranno comunque 176 righe. Tuttavia, alcune combinazioni avranno valori vuoti nella colonna Total Sales. Questo perché queste combinazioni non hanno una riga corrispondente nella tabella Sales.
Nella scheda Server Timings, il codice seleziona prima il Brand e il Colore. Somma quindi il prodotto della quantità e del prezzo netto di vendita.
In questo caso, il motore DAX recupera innanzitutto tutte le combinazioni di marca e colore presenti all'interno della tabella Products, insieme a quelle con una riga corrispondente nella tabella Sales. Quindi, recupera separatamente le colonne marca e colore.
Nel Physical Query Plan, puoi vedere due cache di dati; uno per il marchio e un altro per il colore. Quando moltiplichi i loro record totali, ottieni 176 righe.
Quindi, viene eseguita una ricerca su quelle 176 righe per vedere se hanno un valore corrispondente nella tabella Sales. Puoi vedere che solo 111 righe hanno valori. Le altre 65 righe restituiranno spazi vuoti.
Inoltre, se aggiungi più colonne nell'argomento CROSSJOIN, il risultato restituirà anche più righe.
Conclusione
La funzione DAX CROSSJOIN genera una nuova tabella combinando le righe di una tabella con le righe di un'altra. Questa funzione è simile alla clausola CROSS JOIN in SQL e può essere utilizzata per creare query più complesse nel modello di dati.
Può generare un elenco di tutte le possibili combinazioni di valori da due o più tabelle. Può anche essere utilizzato per creare rapidamente una nuova tabella con un numero elevato di righe, che può essere utile per l'analisi dei dati, il test o il benchmarking delle prestazioni.
Nel complesso, la funzione CROSSJOIN è uno strumento utile negli scenari in cui è necessario combinare dati da più tabelle o generare un elenco di tutte le possibili combinazioni.
Ti auguro il meglio,
Scopri l
Tecniche di modellazione dei dati per organizzare meglio le misure DAX per un flusso di lavoro più efficiente.
Scopri come utilizzare la funzione di filtro in Power Apps e come incorporarla nelle formule esistenti all
Come commentare più righe in Python: una guida semplice e veloce
Acquisisci familiarità con i connettori Power Automate per la manipolazione di numeri, testo e date/ore.
Ora, è molto facile studiare il budget rispetto all
Imparerai come salvare e caricare oggetti da un file .rds in R. Questo articolo tratta anche come importare oggetti da R a LuckyTemplates.
Scopri tutto su Power Query e il linguaggio M per la trasformazione e la preparazione dei dati nel desktop di LuckyTemplates.
Cos'è il sé in Python: esempi del mondo reale
In questa esercitazione sul linguaggio di codifica DAX, scopri come usare la funzione GENERATE e come modificare dinamicamente il titolo di una misura.