Cosè il sé in Python: esempi del mondo reale
Cos'è il sé in Python: esempi del mondo reale
Diamo un'altra occhiata al problema discusso in questo tutorial , che confronta dinamicamente i primi N giorni lavorativi di ogni mese. Questo problema era basato su una query di un membro di LuckyTemplates sul nostro forum, dove voleva esaminare e confrontare in modo dinamico i primi 5, 10, 15 e 20 giorni fatturabili (i non fine settimana e non festivi) per un determinato mese con il mese precedente.
Invece di usare query avanzate, troveremo una soluzione del linguaggio di codifica DAX. Puoi guardare il video completo di questo tutorial in fondo a questo blog.
Nel primo video , ho trovato una soluzione di query di potenza su come risolvere questo problema. Ma poi uno dei nostri esperti di LuckyTemplates, Antriksh Sharma, ha escogitato una misura straordinariamente efficiente che vale anche la pena approfondire. Discuteremo alcune delle tecniche che ha usato per sviluppare una misura, che ti fornirà strumenti aggiuntivi nella tua casella degli strumenti DAX.
Certamente lo ha fatto per me e per alcuni degli altri esperti che hanno dato un'occhiata a questo. Il confronto comparabile di giorni lavorativi comparabili tra mesi è un modello prezioso in generale che può essere utilizzato in molte situazioni.
Immergiamoci in Power query e diamo un'occhiata a cosa ha fatto Antriksh qui. Abbiamo il mese e l'anno , le vendite totali e, infine, le vendite totali per N giorni lavorativi che abbiamo selezionato utilizzando la query avanzata in base al parametro what-if che abbiamo sviluppato.
Antriksh ha adottato un approccio molto diverso, in cui ha utilizzato una misura sorprendentemente breve per risolvere l'intero problema. La prima cosa che ho notato di questo è stato l'uso del comando .
Questa è una funzione DAX che non utilizzo molto spesso, ma è perfetta per questo tipo di problema. Se diamo un'occhiata alla guida SQL BI DAX, si dice che la funzione GENERATE è una funzione di tabella che utilizza come input due tabelle diverse e quindi esegue un equivalente del comando SQL CROSS APPLY.
Quindi prende una tabella di base (Table1) e la ripete, quindi prende una seconda espressione di tabella e la valuta per ogni riga nella prima tabella, quindi ritorna alla tabella come output.
Prendiamo la misura di Antriksh e mettiamola sul tavolo. Possiamo vedere che produce esattamente gli stessi risultati della soluzione di query di potenza che abbiamo fatto l'ultima volta. Quindi va bene e convalida abbastanza bene entrambe le misure.
Mettiamo da parte questa misura. Il primo filtro applicato qui è Dates[IsBusinessDay] = TRUE. Questo elimina tutte le date non del fine settimana e non festivo in base al campo IsBusinessDay della tabella delle date estese.
Ne parliamo molto di più nel primo tutorial , dove abbiamo anche spiegato come legarlo alla nostra tavola delle feste.
La parte interessante di questo arriva davvero nei due input della tabella. La prima tabella è solo una tabella a una colonna del campo Mese e anno nella tabella Data.
Ma il secondo input della tabella è dove accadono le cose interessanti. Antriksh ha utilizzato una e quindi ha utilizzato il nostro parametro dinamico come numero di righe nel TOPN.
La misura Total Sales viene allegata alla seconda tabella e quindi applicata alla prima tabella.
Sommario
Comprensione di una misura complessa utilizzando il linguaggio di codifica DAX
Uno dei modi più semplici per capire cosa sta facendo una misura complessa come questa è andare in Tabular Editor . Possiamo dare un'occhiata a questa espressione e capire prima cosa sta facendo questa espressione TOPN.
Copiamo la parte TOPN e creiamo una nuova query DAX . Tenere presente che le query DAX iniziano con EVALUATE.
Quando incolliamo la parte TOPN, vedremo che estrae le prime 5 date dalla tabella degli ordini di vendita. C'è una tabella nel TOPN che è composta dai valori di tutte le date degli ordini all'interno della tabella delle vendite.
Questa funzione TOPN prende il valore del parametro what-if (che in questo caso è 5) e lo applica al campo della data dell'ordine cliente. Quindi estrae le prime 5 date all'interno del contesto del filtro in ordine crescente in base a quel campo.
Dato che non esiste un contesto di filtro aggiuntivo, estrae solo le prime 5 date dall'intera tabella.
La colonna @Sales aggiunge semplicemente le vendite totali all'interno del contesto di filtro appropriato alla tabella TOPN.
Finora, abbiamo la prima tabella del mese e dell'anno, la seconda tabella del TOPN delle prime N date dalla tabella delle vendite, e quindi le vendite totali associate.
Uso della tabella GENERATE nel linguaggio di codifica DAX
Diamo un'occhiata a cosa sta facendo questa tabella GENERATE. Torniamo all'editor tabulare e creiamo una nuova query DAX.
Inizieremo come facciamo sempre con VALUTA, incolliamo la parte GENERATE del codice e clicchiamo su 5.
Possiamo vedere che per ogni riga della prima tabella, itera e si unisce alle 5 righe della tabella TOPN valutate nel contesto con la funzione @Sales.
Ci sono voluti i primi 5 giorni lavorativi di aprile, i primi 5 giorni lavorativi di maggio, i primi 5 giorni lavorativi di giugno e così via fino alla fine della prima tabella.
Questo è esattamente ciò di cui abbiamo bisogno, e ora diventa una questione relativamente semplice sommare quei valori. Abbiamo il risultato (che è la variabile di tabella dei risultati GENERATE) e quindi dobbiamo riassumere la funzione @Sales.
Nel contesto, stiamo ora riepilogando i primi 5 giorni lavorativi di aprile, i primi 5 giorni lavorativi di maggio e così via fino a quando non arriviamo al nostro totale di $ 23.737.430, nel qual caso non ha contesto di mese e anno per operare .
Questo riassume l'intera colonna @Sales e ci dà esattamente lo stesso totale che avevamo nella nostra soluzione di query di potenza.
Puoi vedere che se modifichiamo l'affettatrice a 10, otteniamo dinamicamente gli stessi risultati con il linguaggio di codifica DAX come abbiamo fatto in Power query.
Abbiamo anche il grafico a barre in basso che si regola dinamicamente per riflettere le modifiche che abbiamo apportato.
Regola dinamicamente il titolo della misura
C'è un altro trucco aggiuntivo che volevo mostrarti. Puoi creare un aggiustamento dinamico sul tuo parametro what-if e collegarlo dinamicamente al titolo di una misura.
Ad esempio, se modifichiamo l'affettatrice in alto a 15, cambierà dinamicamente il nome della misura in basso in Vendite totali per i primi 15 giorni lavorativi di ogni mese .
Esiste un modo semplice per eseguire questa operazione in DAX usando la formattazione condizionale . Fondamentalmente prendiamo solo tre corde. Il primo è Total Sales for First , quindi concatenalo con il valore che raccogliamo dal parametro what-if e quindi collegalo al resto del titolo.
Quindi entriamo nel visual, andiamo alla formattazione condizionale del titolo e clicchiamo su fx .
Formatteremo in base al valore del campo e sceglieremo quella misura del titolo dinamico. Questo cambierà la selezione del parametro what-if.
Conclusione
Quello che abbiamo ora è una soluzione completa che utilizza il linguaggio di codifica DAX. Abbiamo discusso un modo davvero creativo ed efficiente per farlo utilizzando la funzione GENERATE. Voglio ringraziare Antriksh per aver condiviso con noi la sua brillante conoscenza del DAX. Ho imparato molto esaminando la sua soluzione DAX e spero che tu l'abbia fatto anche tu.
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