Cosè il sé in Python: esempi del mondo reale
Cos'è il sé in Python: esempi del mondo reale
Nel blog di oggi, esploreremo perché non dovresti utilizzare la funzione DAX per ottenere la media per categoria e fornire alcune soluzioni alternative per ottenere gli stessi risultati desiderati. Puoi guardare il video completo di questo tutorial in fondo a questo blog .
Ottenere una media per categoria in DAX è stranamente complicato. Utilizzando la funzione CALCULATE per risolvere questi calcoli, i nuovi utenti DAX potrebbero trovare il codice DAX più difficile da comprendere di quanto dovrebbe essere. La buona notizia è che ci sono soluzioni più semplici a questo problema.
Sommario
Panoramica della funzione CALCULATE DAX
Qualche mese fa, ho presentato al per LuckyTemplates. Si chiamava DAX Counterculture in cui ho fornito alcune opinioni alternative su DAX.
Uno dei principali riguarda l'utilizzo della funzione CALCULATE. Ho parlato del motivo per cui non dovresti usare CALCULATE soprattutto se sei nuovo in DAX.
CALCULATE è una funzione davvero complessa da capire e da usare. Fa alcune ipotesi sul tuo modello di dati e può metterti nei guai.
Ho anche approfondito la misura rapida di Microsoft per Running Total perché non funziona in situazioni a tabella singola e ha bisogno di uno schema a stella per funzionare correttamente.
Quindi, ho mostrato un'alternativa più semplice che funziona sia che si tratti di uno schema a stella o di un modello a tabella singola senza la necessità di CALCULATE.
CALCOLA LA FORMULA DAX
Questo blog approfondirà una misura rapida chiamata Media per categoria . Se sei in LuckyTemplates desktop, inizia andando al riquadro Campi e creando un Nuovo indicatore rapido .
Nella finestra Misurazione rapida che verrà visualizzata, scegli Media per categoria nell'elenco a discesa Calcolo . Quindi, trascina ? Valore nel campo di testo Valore base e Mese nel campo Categoria .
Quindi fai clic su OK e otterrai un'immagine simile a questa.
Nell'asse x ci sono i quarti: trimestre 1, 2, 3 e 4.
E quello che vuoi fare è sommare i valori per ogni mese mostrato di seguito e quindi prendere la media tra quei valori. Insomma, la Media Per Categoria, che è l'argomento del nostro blog.
Il nostro modello di dati per questo è molto semplice. Abbiamo una tabella con Dates , Values generati casualmente e Month , MonthSort e Quarters in colonne separate.
E abbiamo la stessa cosa nella nostra tabella delle date con Calendar Table, Month, MonthSort e Quarter. Ciò significa che possiamo scegliere il trimestre o il mese dalla tabella delle date o dalla prima tabella.
La buona notizia con Average Per Category è che in realtà funziona indipendentemente dal fatto che tu abbia un modello a tabella singola o uno schema a stella.
In queste immagini, stiamo usando il Quarto del primo tavolo...
...mentre questo utilizza il trimestre dalla nostra tabella delle date. Funziona in entrambi i modi.
Ma il problema con la media per categoria è semplicemente il codice DAX.
Questo codice DAX è strano, perché anche se sei un esperto di DAX, probabilmente ti confonderà a prima vista. È stranamente costruito con un'istruzione CALCULATE senza clausola di filtro e racchiude solo un'istruzione sum.
In effetti, è uno di quei miei piccoli fastidi quando vedo persone sui forum che usano CALCULATE che avvolge una somma senza motivo. Ma in questo caso, in realtà ha una ragione.
Mi fa impazzire ogni volta che li vedo perché è solo un'indicazione immediata che non hanno idea di cosa stanno facendo con la funzione CALCULATE. Quindi ti consiglio di starne alla larga.
Codice DAX per la media per categoria
Il codice DAX mostrato sopra utilizza . Questa funzione non si trova in un segmento CALCULATE, il che, di nuovo, la rende strana. Presumibilmente, questa funzione è stata creata per essere utilizzata nelle istruzioni CALCULATE in base alla sua documentazione.
Il codice utilizza anche , con cui non sono d'accordo. Non dovrebbero mai usare VALUES perché i valori distinti hanno la tendenza a restituire una riga vuota se c'è una riga non corrispondente. Questo può metterti nei guai, ma questo è un argomento per un altro video.
In sostanza, quello che sta succedendo qui è che stanno usando una funzione VALUES per ottenere tutte le nostre categorie. Ad esempio, nel trimestre 1, ovvero gennaio, febbraio e marzo. VALUES restituisce anche una tabella ma utilizza un'istruzione KEEPFILTER per renderla valida come primo parametro in .
Mantengono inoltre la funzione CALCULATE da eseguire nel contesto di KEEPFILTERS. A causa del modo in cui AVERAGEX funziona, prende la seconda espressione e la esegue nel contesto della prima espressione.
Qual è il problema, allora?
Nel complesso, funziona bene, ma non per chi non conosce DAX. Credo che Microsoft abbia davvero perso la barca quando ha creato questa misura rapida perché le misure rapide sono presumibilmente per le persone che non conoscono DAX.
Le misure rapide sono un'ottima idea, ad esempio "Scriviamo alcune misure comuni con calcoli diversi per te perché sei nuovo in DAX e non sai tutto quello che c'è da sapere su DAX". Ma perché dovrebbero costruirli in modi così strani e complicati?
In che modo qualcuno nuovo al DAX dovrebbe dare un'occhiata a questo e capire cosa sta succedendo quando anche probabilmente i professionisti del DAX si stanno grattando un po' la testa su questo?
Quindi per me, hanno perso un'opportunità d'oro per aiutare le persone a imparare DAX con le loro misure rapide insistendo sul fatto che includessero CALCULATE e dovendo fare i salti mortali per ottenere CALCULATE lì dentro.
La soluzione più semplice
Utilizzo della funzione SUMMARIZE
Come ho detto prima, c'è un modo migliore e più semplice per farlo.
Innanzitutto, crea una variabile di tabella utilizzando VAR_Table . Quindi, utilizzeremo per prendere la tabella, riepilogarla per mese, creare una colonna Valore e riassumere i nostri valori.
Infine, prenderemo la media dei nostri valori utilizzando la funzione AVERAGEX .
Questo codice è più semplice ed è molto più logico. Non include CALCULATE, che comunque non ti serve.
Potresti imbatterti in un articolo di blog che critica SUMMARIZE. Il blog dice che il modo in cui SUMMARIZE funziona internamente è piuttosto complicato.
Suggerisce anche che puoi metterti nei guai in un caso specifico, ma non ti imbatterai mai in esso. Ciò accadrebbe solo se il tuo calcolo prevede un calcolo molto complesso e una tabella molto grande. Solo allora SUMMARIZE ti darà risultati traballanti.
Almeno questo è ciò che sostiene l'articolo del blog. E va bene se vuoi evitare di RIASSUMERE. In tal caso, utilizzare invece la funzione .
Utilizzo della funzione GROUPBY
Nessuno ha problemi con l'uso della funzione GROUPBY, quindi impariamo anche a usarla. Di nuovo, crea una variabile Table usando VAR_Table. Quindi, GROUPBY Month e creiamo una colonna Value.
Successivamente, applichiamo utilizzando CURRENTGROUP , che è il modo in cui funziona GROUPBY. Sommiamo il nostro valore e prendiamo di nuovo AVERAGEX attraverso di esso.
Il nostro codice dovrebbe assomigliare a questo.
Confronto dei risultati: funzioni SUMMARIZE vs GROUPBY vs CALCULATE DAX
Ora, vediamo se le scorciatoie che abbiamo fatto hanno restituito gli stessi risultati.
Come puoi vedere nelle immagini sottostanti, sia SUMMARIZE etichettato come Better Average Per Category che GROUPBY etichettato come Better Average Per Category 2 restituiscono gli stessi numeri.
Entrambe le nostre formule restituiscono 3,4K per Q1, 3,6K per Q2, 3,4K per Q3 e 3,5K per Q4. E ancora, lavorano in un modello di dati a tabella singola utilizzando Quarters per la nostra tabella.
Funzionano anche in uno schema a stella in cui utilizziamo Quarters nella nostra tabella delle date.
Misure rapide: come utilizzarle nei modelli LuckyTemplates
utilizzando la funzione di calcolo all'interno di LuckyTemplates
Modi efficaci per utilizzare la funzione GROUPBY in LuckyTemplates
Conclusione
Non abbiamo bisogno di forzarci in una logica di contesto contorta solo per inserire CALCULATE nelle nostre formule. Basta usare semplici funzioni DAX standard e puoi ottenere le stesse cose.
In effetti, probabilmente nell'80% - 90% dei casi, non c'è assolutamente alcun motivo per preoccuparsi di utilizzare CALCULATE per qualsiasi cosa. Invece, puoi usare le funzioni SUMMARIZE e GROUPBY che sono più semplici e logiche.
Se vuoi esplorare questo file PBIX, l'ho già pubblicato nella Quick Measures Gallery e ho chiamato il file Better Average Per Category . Basta scorrere fino in fondo alla pagina per trovare il file PBIX che puoi scaricare e giocare con te stesso.
Ti auguro il meglio,
Greg Decker
Cos'è il sé in Python: esempi del mondo reale
Imparerai come salvare e caricare oggetti da un file .rds in R. Questo blog tratterà anche come importare oggetti da R a LuckyTemplates.
In questa esercitazione sul linguaggio di codifica DAX, scopri come usare la funzione GENERATE e come modificare dinamicamente il titolo di una misura.
Questo tutorial illustrerà come utilizzare la tecnica di visualizzazione dinamica multi-thread per creare approfondimenti dalle visualizzazioni di dati dinamici nei report.
In questo articolo, esaminerò il contesto del filtro. Il contesto del filtro è uno degli argomenti principali che qualsiasi utente di LuckyTemplates dovrebbe inizialmente conoscere.
Voglio mostrare come il servizio online di LuckyTemplates Apps può aiutare nella gestione di diversi report e approfondimenti generati da varie fonti.
Scopri come elaborare le modifiche al margine di profitto utilizzando tecniche come la ramificazione delle misure e la combinazione di formule DAX in LuckyTemplates.
Questo tutorial discuterà delle idee di materializzazione delle cache di dati e di come influiscono sulle prestazioni dei DAX nel fornire risultati.
Se finora utilizzi ancora Excel, questo è il momento migliore per iniziare a utilizzare LuckyTemplates per le tue esigenze di reportistica aziendale.
Che cos'è il gateway LuckyTemplates? Tutto quello che devi sapere