Modifica della gerarchia data

Una delle cose che mi lasciano sempre un po’ perplesso è la gestione della gerarchia delle date su PowerBI.

Se da un lato squisitamente tecnico è perfettamente realizzata, dal punto di vista di utilizzo lo è un po’ meno.

Innanzi tutto durante i drill-down da anno a quarter, poi a mese si perde l’informazione dell’anno, poi manca nel percorso la settimana…

Nella mia esperienza usualmente i percorsi di drill sono più frequentemente Anno -> Mese -> Giorno oppure Anno -> Settimana -> Giorno.

In questo articolo vedremo come sia possibile creare la gerarchia Anno -> Settimana -> Giorno.

La gerarchia…

… e l’effetto

L’assunto è avere una tabella Calendario con una colonna che si chiama Giorno (non è obbligatoria la nomenclatura, ma useremo questa nell’esempio).

Nella tabella aggiungiamo una colonna calcolata Anno:

Anno = YEAR(Calendario[Giorno])

Poi ci servirà una colonna Settimana, sempre calcolata:

Settimana = FORMAT(Calendario[Anno];"0000") & "." & FORMAT(WEEKNUM(Calendario[Giorno];2);"00")

NOTA: per il calcolo della settimana utilizziamo la funzione WEEKNUM che, data una data, restituisce il numero di settimana dell’anno. La funzione ha due parametri: il secondo parametro può valere 1 oppure due a seconda che si intenda contare una settimana che parte dalla domenica (1) all’americana oppure che parte dal lunedì (2) all’europea. Nel nostro caso:

NumeroSettimana = WEEKNUM(Calendario[Giorno];2)

Questa che abbiamo creato è una colonna che conterrà una stringa tipo 2020.08 in modo che da un lato sia evidente l’anno, dall’altro sia rispettato l’ordinamento (alfabetico essendo una stringa).

Ora, con le tre colonne Anno, Settimana e Giorno, possiamo creare la gerarchia; per farlo:

  • click destro sulla nuova colonna Anno -> Nuova Gerarchia
  • click destro sulla nuova colonna Settimana -> Aggiungi a gerarchia -> Anno
  • click destro sulla colonna Giorno -> Aggiungi a gerarchia -> Anno

Il gioco è fatto, abbiamo a gerarchia Anno – Settimana – Giorno utilizzabile nel nostro modello!