Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

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.

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

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.

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

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 .

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

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.

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

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.

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

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.

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

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.

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

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.

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

La misura Total Sales viene allegata alla seconda tabella e quindi applicata alla prima tabella.

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

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.

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

Copiamo la parte TOPN e creiamo una nuova query DAX . Tenere presente che le query DAX iniziano con EVALUATE.

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

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.

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

Dato che non esiste un contesto di filtro aggiuntivo, estrae solo le prime 5 date dall'intera tabella.

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

La colonna @Sales aggiunge semplicemente le vendite totali all'interno del contesto di filtro appropriato alla tabella TOPN.

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

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.

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

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.

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

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.

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

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.

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

Abbiamo anche il grafico a barre in basso che si regola dinamicamente per riflettere le modifiche che abbiamo apportato.

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

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 .

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

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.

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

Quindi entriamo nel visual, andiamo alla formattazione condizionale del titolo e clicchiamo su fx .

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

Formatteremo in base al valore del campo e sceglieremo quella misura del titolo dinamico. Questo cambierà la selezione del parametro what-if.

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

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

Cosè il sé in Python: esempi del mondo reale

Cos'è il sé in Python: esempi del mondo reale

Come salvare e caricare un file RDS in R

Come salvare e caricare un file RDS in R

Imparerai come salvare e caricare oggetti da un file .rds in R. Questo blog tratterà anche come importare oggetti da R a LuckyTemplates.

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

In questa esercitazione sul linguaggio di codifica DAX, scopri come usare la funzione GENERATE e come modificare dinamicamente il titolo di una misura.

Mostra approfondimenti utilizzando la tecnica di visualizzazione dinamica multi-thread in LuckyTemplates

Mostra approfondimenti utilizzando la tecnica di visualizzazione dinamica multi-thread in LuckyTemplates

Questo tutorial illustrerà come utilizzare la tecnica di visualizzazione dinamica multi-thread per creare approfondimenti dalle visualizzazioni di dati dinamici nei report.

Introduzione al filtraggio del contesto in LuckyTemplates

Introduzione al filtraggio del contesto in LuckyTemplates

In questo articolo, esaminerò il contesto del filtro. Il contesto del filtro è uno degli argomenti principali che qualsiasi utente di LuckyTemplates dovrebbe inizialmente conoscere.

I migliori suggerimenti per lutilizzo delle app nel servizio online LuckyTemplates

I migliori suggerimenti per lutilizzo delle app nel servizio online LuckyTemplates

Voglio mostrare come il servizio online di LuckyTemplates Apps può aiutare nella gestione di diversi report e approfondimenti generati da varie fonti.

Analizza le variazioni del margine di profitto nel tempo: analisi con LuckyTemplates e DAX

Analizza le variazioni del margine di profitto nel tempo: analisi con LuckyTemplates e DAX

Scopri come elaborare le modifiche al margine di profitto utilizzando tecniche come la ramificazione delle misure e la combinazione di formule DAX in LuckyTemplates.

Idee di materializzazione per cache di dati in DAX Studio

Idee di materializzazione per cache di dati in DAX Studio

Questo tutorial discuterà delle idee di materializzazione delle cache di dati e di come influiscono sulle prestazioni dei DAX nel fornire risultati.

Reporting aziendale tramite LuckyTemplates

Reporting aziendale tramite LuckyTemplates

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

Che cosè il gateway LuckyTemplates? Tutto quello che devi sapere

Che cos'è il gateway LuckyTemplates? Tutto quello che devi sapere