Time Intelligence in DAX: come selezionare dinamicamente il periodo iniziale

Time Intelligence in DAX: come selezionare dinamicamente il periodo iniziale

In questo post del blog, tratteremo alcuni problemi problematici nell'intelligence temporale, in particolare quelli causati dalla granularità delle settimane e i problemi che possono essere causati dal numero irregolare di settimane in un anno. Utilizzeremo gli offset per ottenere un'intelligence temporale accurata in DAX.

Abbiamo uno scenario interessante per te oggi. Questo è emerso un paio di volte di recente nel forum LuckyTemplates. Quello che le persone volevano fare era prendere un'immagine (che poteva essere un grafico a linee o un grafico a barre) e variarla dinamicamente sulla data di inizio. Puoi guardare il video completo di questo tutorial in fondo a questo blog.

Time Intelligence in DAX: come selezionare dinamicamente il periodo iniziale

In questo caso, abbiamo utilizzato lo stesso set di dati con cui abbiamo lavorato per il prezzo spot medio al barile di petrolio . Invece di iniziare sempre dall'inizio di gennaio, volevamo poter fare clic sull'oggetto visivo, modificarlo con una data di inizio diversa, ma mostrare sempre un anno di dati.

Sommario

Esempi di scenari di intelligenza temporale in DAX

Ci sono una serie di motivi per cui potresti voler eseguire questa tecnica. Puoi usarlo se hai una metrica che viene costantemente riadattata in termini di come viene calcolata. Potresti voler mostrare solo i dati dal periodo del riaggiustamento in avanti.

Un altro motivo per usarlo è se vuoi visualizzarlo in modo animato. Questo fondamentalmente prenderà i tuoi dati e li mostrerà dinamicamente una volta che fai clic sull'accesso alla riproduzione.

Time Intelligence in DAX: come selezionare dinamicamente il periodo iniziale

In questo oggetto visivo è possibile modificare la data di inizio mese per mese per mostrare come cambia nel tempo in un periodo di 12 mesi. Si tratta di un elemento visivo interessante e utile per diversi casi aziendali, ma in teoria rappresenta anche una serie di questioni chiave relative a DAX e alla modellazione dei dati.

Passiamo a LuckyTemplates e osserviamo prima il nostro modello di dati. Questo è un modello di dati davvero semplice con una tabella delle date estesa e una tabella dei prezzi spot collegata alle date.

Time Intelligence in DAX: come selezionare dinamicamente il periodo iniziale

Uso degli offset per l'intelligenza temporale in DAX

Una delle cose su cui lavoreremo sono gli offset . Gli scostamenti nella tabella delle date estesa vengono calcolati dinamicamente. Ogni volta che il report viene aggiornato o aperto, passa attraverso il codice M. Ad esempio, in un offset mensile, assegna il mese corrente con 0, il mese precedente con -1 e due mesi indietro con -2. Guardando avanti nel futuro, assegna il mese successivo +1 e per due mesi nel futuro +2.

Questo è un concetto semplice ma incredibilmente potente quando si ha a che fare con l'intelligence temporale in DAX e si lavora con mesi , trimestri e settimane . Se non stai usando un offset, a volte crea una discreta quantità di complessità nei tuoi calcoli.

Usare gli offset significa usare una serie continua di numeri in cui tornare indietro di un mese è sempre -1 e andare avanti di un mese è sempre +1 indipendentemente da dove potresti essere nell'anno.

Implementazione della strategia della papera di gomma per l'intelligence temporale in DAX

In passato, ho parlato di rubber ducking , che consiste nel verbalizzare la tua strategia ad alta voce prima di iniziare a scrivere il tuo DAX.

Time Intelligence in DAX: come selezionare dinamicamente il periodo iniziale

Sto pensando ad alta voce a come gestirlo da un contesto mensile utilizzando l'intelligenza temporale in DAX. Inizierei qualcosa in base all'anno e al mese selezionati e selezionerei quelli utilizzando una tabella disconnessa, perché se ci pensi, ogni altra selezione comporterà l'incrocio degli anni (ad eccezione di gennaio).

Diciamo che vogliamo 12 mesi a partire da marzo, finiremo con almeno due mesi nell'anno successivo. Se utilizziamo un'affettatrice connessa, possiamo filtrare solo per quell'anno e non saremo in grado di filtrare per l'anno successivo.

Raccolta degli offset dalla data di inizio

Facciamolo con una tabella connessa sia per il mese che per l'anno. Innanzitutto, dobbiamo raccogliere il primo offset che riguarda la data di inizio.

E poi vogliamo spostare l'offset in avanti di 12 mesi, e poi guardare solo le date che si trovano all'interno di quella serie di offset. Lascia che ti mostri come appare in DAX.

Calcolo dell'intervallo mensile

Questa è la nostra misura per Within Range Monthly , dove selezioniamo il nostro anno (che abbiamo raccolto dalla tabella degli anni disconnessi) e il nostro mese (che abbiamo raccolto dalla tabella dei mesi disconnessi).

Abbiamo anche quest'altro parametro in cui, se non viene effettuata alcuna selezione, il valore predefinito sarà gennaio. Questo parametro è principalmente solo per scopi di debug.

Time Intelligence in DAX: come selezionare dinamicamente il periodo iniziale

Calcolo degli scostamenti del mese iniziale e finale

Diamo un'occhiata all'offset del mese iniziale calcolando l'offset MAX. Rimuoviamo tutti i filtri nella tabella delle date e filtriamo fino al mese e all'anno selezionati. Per ogni mese, dovrebbe esserci un solo offset che corrisponde a quel mese e anno.

Time Intelligence in DAX: come selezionare dinamicamente il periodo iniziale

Da quel punto, possiamo prendere l' offset del mese finale , che è solo l'offset del mese iniziale + 11 mesi.

Time Intelligence in DAX: come selezionare dinamicamente il periodo iniziale

E poi esaminiamo ciascuna data selezionata e determiniamo se rientra nell'offset del mese iniziale e nell'offset del mese di fine. se rientra in tale periodo, gli diamo 1 e in caso contrario, gli diamo 0.

Time Intelligence in DAX: come selezionare dinamicamente il periodo iniziale

Se torniamo alla visualizzazione mensile nel nostro oggetto visivo, possiamo vedere l' oggetto visivo Entro l'intervallo che abbiamo impostato uguale a uno. Quindi mostra solo quei mesi tra l'inizio e la fine dell'offset. Ad esempio, se clicchiamo su febbraio, vediamo da febbraio a gennaio.

Time Intelligence in DAX: come selezionare dinamicamente il periodo iniziale

Calcolo dell'intervallo settimanale

Vediamo come appare dal punto di vista settimanale. L'immagine inizia inizialmente bene e va dalla settimana 1 alla settimana 52. Fin qui, tutto bene.

Time Intelligence in DAX: come selezionare dinamicamente il periodo iniziale

Ma se facciamo clic sugli altri anni nell'affettatrice dell'anno, possiamo vedere la 52a settimana mentre alcuni hanno la 53a settimana, il che presenta molti problemi. Puoi vedere da questo esempio che il problema sta iniziando a manifestarsi.

Abbiamo un periodo iniziale dell'anno 2020 e la settimana 15 , ma il periodo finale è l'anno 2021 e la settimana 13 invece dell'anno 2021 e la settimana 14 .

Time Intelligence in DAX: come selezionare dinamicamente il periodo iniziale

Se torniamo alla settimana 1, possiamo vedere che inizia bene, ma finisce alla settimana 52. Se guardiamo al calcolo della settimana 53 qui, il numero massimo di settimane per il 2020 e il 2021 è di 53 settimane. Questo non funzionerà per la granularità settimanale.

Time Intelligence in DAX: come selezionare dinamicamente il periodo iniziale

Vediamo cosa possiamo fare per farlo funzionare. Dobbiamo correggere il calcolo DAX proprio qui in questa parte:

Time Intelligence in DAX: come selezionare dinamicamente il periodo iniziale

Questo perché in alcuni casi 51 è corretto quando ci sono solo 52 settimane in un anno, ma per l'anno in cui ci sono 53 settimane, l'ultimo periodo verrà interrotto. Questo è esattamente ciò che abbiamo visto nell'immagine dinamica per settimane, dove il calcolo ha rimosso l'ultimo periodo negli anni 2020 e 2021.

Per risolvere questo problema, andiamo alla misura Entro l'intervallo settimanale sbagliato , che in realtà sembra più semplice della misura precedente. Avevamo una misura dell'offset iniziale e abbiamo calcolato l'offset massimo. Quindi abbiamo rimosso il filtro dalle date e quindi imposto il filtro sulla settimana selezionata e sull'anno selezionato con il presupposto che ciò avrebbe portato all'offset corretto.

Time Intelligence in DAX: come selezionare dinamicamente il periodo iniziale

Ma questo non funziona perché non avrebbe importanza se stai usando un offset massimo o un offset minimo. Tutto ciò che stiamo facendo è avvolgere un aggregatore in modo da non inserire una colonna nuda in un'istruzione CALCULATE.

Ma se torniamo qui all'ISO WeekNumber , possiamo vedere che un anno e un numero di settimana non determinano in modo univoco un offset settimanale in quel primo periodo.

Time Intelligence in DAX: come selezionare dinamicamente il periodo iniziale

Ho escogitato un modo antiproiettile per farlo. Potresti usare MIN, ma ha più senso creare questa misura Week1 Offset . Per ottenere l'offset della settimana 1, abbiamo a che fare con la settimana 2 perché non viene mai divisa. Indipendentemente dal fatto che ci siano 52 o 53 settimane nell'anno, la settimana 2 rimane intatta.

Time Intelligence in DAX: come selezionare dinamicamente il periodo iniziale

In questo calcolo, filtriamo fino alla settimana 2 per ottenere l'offset. E poi, una volta ottenuto l'offset della settimana 2, ne sottraiamo semplicemente uno. Questo ci darà inequivocabilmente l'offset della settimana 1. Questo finisce per risolvere il nostro problema.

Calcolo dell'intervallo settimanale

E poi torniamo alla nostra misura Entro l'intervallo settimanale e scriviamo un'istruzione IF in cui se il numero del raccolto è per la settimana 1, calcoliamo l'offset della prima settimana. Se non è la settimana 1, calcoliamo solo l'offset della settimana iniziale come abbiamo fatto nel precedente calcolo mensile.

Time Intelligence in DAX: come selezionare dinamicamente il periodo iniziale

E quindi l'offset della settimana finale sarà l'offset della settimana iniziale + il numero massimo della settimana che potrebbe essere 52 o 53. Quindi sottraiamo semplicemente 1 per non contare due volte l'offset iniziale.

Time Intelligence in DAX: come selezionare dinamicamente il periodo iniziale

Possiamo fare lo stesso costrutto che abbiamo usato per l'intervallo mensile per filtrare le settimane, dove tutto ciò che cade tra l'inizio e la fine dell'offset ottiene un 1 e tutto ciò che non ottiene uno 0.

Poi inseriremo la misura Entro l'intervallo settimanale nel riquadro dei filtri. Tutto va a buon fine e sembra esattamente a posto.

Time Intelligence in DAX: come selezionare dinamicamente il periodo iniziale

Possiamo fare clic sull'asse di riproduzione ed eseguire la granularità della settimana. Possiamo vedere che funziona correttamente proprio come nel contesto del mese.

Conclusione

Questa è un'immersione piuttosto approfondita nell'intelligence temporale in DAX, in cui abbiamo discusso di come possiamo affrontare alcuni dei problemi relativi ai numeri delle settimane. Spero che tu abbia trovato utile questo tutorial e ti abbia fornito alcuni strumenti aggiuntivi nella tua cassetta degli attrezzi quando hai a che fare con una situazione settimanale problematica.

Se ti sono piaciuti i contenuti trattati in questo particolare tutorial, non dimenticare di iscriverti al canale TV LuckyTemplates. Abbiamo un'enorme quantità di contenuti che escono continuamente da me e da una serie di creatori di contenuti, tutti dedicati a migliorare il modo in cui utilizzi LuckyTemplates e Power Platform.


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