Livello: intermedio
Come saprebbero i lettori abituali del mio blog, Mi piace aiutare le persone sui forum che hanno bisogno di aiuto con DAX, Power Query o Power BI. Di recente ho risposto ad alcune domande per le persone che potrebbero trarre vantaggio da una soluzione DAX "Banding" e, così, Ho deciso di scrivere questo post come collegamento permanente all'argomento. Ho appreso per la prima volta la tecnica di fasciatura DAX di Alberto Ferrari a http://sqlbi.com
Cosa sono le band??
El agrupamiento es una técnica que le permite “gruppo” oh “estratificar” sus datos en una tabla en “bandas” (a volte chiamata analisi di coorte). Diciamo che hai una tabella clienti come questa (mostrato sotto). Nel mio database di esempio ho 18.000 clienti e conosco l'età di ciascuno.
Ciò offre l'opportunità di analizzare i dati di vendita in base all'età in modo che per scoprire se persone di età diverse acquistano in modo diverso. Di seguito è riportata una tabella pivot che illustra ciò che è possibile con i dati. Ma il problema è che ci sono troppi dettagli per essere utili.
Non voglio davvero prendere di mira i clienti da 35 anni diversamente dai clienti di 36 anni. Idealmente, vorrei raggruppare (la stratificazione) a los clientes en “bandas” para poder tratar a un grupo de clientes similares de la misma manera. Perché, potresti voler raggruppare i miei clienti in questo modo.
Dopo aver raggruppato i clienti per età, Posso creare una tabella pivot come quella mostrata di seguito.
Nota che è molto più facile trovare informazioni sui dati quando ci sono meno dettagli. Vedo immediatamente dalla tabella pivot sopra che le persone invecchiano, tendono ad essere più interessati alle bici da montagna e da turismo e meno alle bici da strada (Certo, questo è un database falso, quindi le idee non sono necessariamente realistiche). .
Avrai bisogno di una colonna calcolata per le bande
Sono un forte sostenitore dell'uso delle misurazioni (nessuna colonna calcolata) quando possibile. Puoi leggere di più a riguardo nella mia Knowledge Base qui. Ma in questo caso, una misura non funzionerà. Le misure possono essere utilizzate solo nella sezione dei valori di una tabella pivot – no puede usarlos en las áreas de “filtrato” como Slicers, Righe, Colonne e Filtri. Nella tabella pivot sopra, le bande vengono utilizzate per dividere la tabella pivot in righe e, così, una misura non funzionerà.
Potresti scrivere un'istruzione If
Quindi l'obiettivo è creare una colonna calcolata nella tabella dei clienti che raggruppa le persone per età in una fascia stratificata. Qualsiasi utente di Excel saprebbe che puoi scrivere un'istruzione IF per questo (DAX ha una sintassi molto simile per l'istruzione IF nel normale Excel). La sintassi DAX per una singola istruzione IF è la seguente
= SE(Clienti[Età] <= 18, "18 e sotto", "Terminato 18")
La colonna calcolata DAX sopra restituirà uno dei due possibili valori in base all'età del cliente. La complejidad surge cuando desea tener múltiples condiciones. Como mencioné anteriormente en esta publicación, ci sono 6 grupos posibles que tengo en mente (que se muestran aquí nuevamente).
Para hacer esto con declaraciones IF, necesitaría anidar múltiples declaraciones IF entre sí de la siguiente manera.
= IF( Clienti[Età] <= 18, "18 e sotto", SE( Clienti[Età] > 18 && Clienti[Età] <= 30, ">18 e <=30", SE( Clienti[Età] > 30 && Clienti[Età] <= 40, ">30 e <=40", SE( Clienti[Età] > 40 && Clienti[Età] <= 50, ">40 e <=50", SE(Clienti[Età] > 50 && Clienti[Età] <= 60, ">50 e <=60", ">60" ) ) ) ) )
¿Ves el problema? Esta columna calculada funciona, pero es muy difícil de escribir, leer y modificar. Y lo que es más importante, hay una mejor manera: use la técnica de bandas.
Proceso para crear bandas
Il modo migliore prevede il seguente processo.
- Crea una tabella in Excel contenente i nomi dei gruppi e i limiti di età inferiori / superiore
- Carica la tabella in PowerPivot
- Non collegare il tavolo a nessun altro tavolo, è un tavolo disconnesso
- Scrivi una colonna calcolata DAX che confronti l'età di ciascun cliente con i limiti inferiori / top nella tua tabella disconnessa e restituisci la singola riga dalla tabella delle bande che corrisponde a ciascun cliente.
Ecco il dettaglio di come farlo.
Crea una tabella in Excel
Ecco come appare una tabella in Excel.
Le caratteristiche chiave da considerare sono
- C'è una colonna ID: questo sarà usato per ordinare la colonna Banda in seguito
- Una columna de “Gruppo musicale”: questa è l'etichetta che descrive ogni gruppo. Si noti che i gruppi si escludono a vicenda e sono collettivamente esaustivi (MECE).
- C'è una colonna “a partire dal” e “fino a” che stabilisce i limiti inferiore e superiore per ciascuna fascia di età. Nota che l'età superiore di un gruppo coinciderà con l'età inferiore del gruppo successivo. Ho usato DAX per assicurarmi che non ci siano sovrapposizioni nella colonna calcolata.
Scrivi una colonna calcolata
Lo scopo della colonna calcolata è filtrare la tabella delle bande disconnesse in modo che 1 e solo 1 riga essere “visibile” oh “senza filtro” per ogni cliente. Questa è la formula
= CALCOLA( VALORI(Fasce di età[Gruppo musicale]), FILTRO(Fasce di età, Clienti[Età] > Fasce di età[A partire dal] && Clienti[Età] <= Fasce di età[Per] ) )
Il ruolo di la parte FILTRO di questa formula è filtrare la tabella AgeBands per solo una riga non è filtrata. Quello che fa il FILTRO è applicare 2 regole di filtro per garantire che il client sia maggiore della colonna “a partire dal” e “minore o uguale” che la colonna “fino a”. È questa porzione minore o uguale a quella che garantisce che non vi siano incroci di individui in più gruppi.. (Si escludono a vicenda).
La funzione VALUES ha una capacità unica. VALUES restituisce una tabella a colonna singola. Se quella tabella ha anche una singola riga, VALUES converte la tabella in un valore scalare e consente di utilizzare tale valore come risultato in una colonna calcolata o di fatto in una cella della tabella pivot. Poiché la formula garantisce che 1 e solo 1 riga non filtrata in questa tabella delle bande, quindi VALUES sarà attivato, estrai il tag per il gruppo da AgeBands[Gruppo musicale] colonna e inserisci quel valore nella colonna calcolata.
Ordina la nuova colonna calcolata
C'è un altro problema da risolvere: i nomi dei nuovi gruppi non sono ordinati correttamente nella tabella pivot. Per impostazione predefinita, le colonne di dati verranno ordinate in ordine alfanumerico. Quindi le etichette saranno ordinate in questo modo:
Risolvere questo problema, Ho creato una seconda colonna calcolata che porta l'ID del rango nella tabella dei clienti. È semplice farlo – basta copiare la formula nella prima colonna calcolata e quindi aggiornare la parte VALUES con la colonna “ID” come segue.
= CALCOLA( VALORI(Fasce di età[ID]), FILTRO(Fasce di età, Clienti[Età] > Fasce di età[A partire dal] && Clienti[Età] <=Fasce di età[Per]) )
Una volta creata questa seconda colonna calcolata, è possibile dire a PowerPivot di utilizzare la nuova colonna dei valori dell'ID di rango come ordinamento per la colonna della fascia di età (mostrato sotto).
Compressione delle colonne calcolate
Come ho detto precedentemente, Non sono un grande fan delle colonne calcolate, tranne dove sono veramente necessari. Ci sono alcune linee guida su quando è possibile utilizzare una colonna calcolata; puoi leggere di tutti loro nel link che ho fornito alla mia Knowledge Base in precedenza. tuttavia, i punti chiave da tenere a mente qui sono.
- Queste colonne calcolate sono nella tabella di ricerca (Clienti). Le colonne calcolate nelle tabelle di ricerca in genere vanno bene.
- Le colonne calcolate hanno una cardinalità bassa (vale a dire, un basso numero di valori univoci). Generalmente, va bene anche questo, anche in una grande tabella di dati, se necessario.
Ora per utilizzare la nuova colonna calcolata
Ora che la tabella Clienti ha questa nuova colonna di “Fascia d'età”, questa colonna può essere utilizzata nelle visualizzazioni. Può essere utilizzato in file, colonne, filtri e segmentazioni. Ecco un esempio di righe:
E un esempio di cutter:
Impara a scrivere DAX
L'argomento delle bande è solo una delle tante tecniche che tratterò nei miei libri. “Supercarga Power BI” e “Excel Supercharge“. Se sei un utente di Power BI o un utente di Excel e stai imparando a usare DAX, i miei libri forniscono una copertura completa di tutti gli argomenti di cui hai bisogno per iniziare il tuo viaggio come ninja Power Pivot.