Funzione DATESQTD con filtri di contesto L’argomento è risolto

Il software per la BI di Microsoft, leader nel mercato
Rispondi
Avatar utente

ivuss
Messaggi: 5 | Topic creati
Iscritto il: gio 2 mar 2023, 17:13

Funzione DATESQTD con filtri di contesto

Messaggio da ivuss »

Salve a tutti!
Sto creando tabella in cui, selezionando l'anno di riferimento (es: 2023), ho una serie di informazioni calcolate per ogni mese:
nelle righe ho i mesi, nelle colonne i dati che voglio calcolare.
Fin quando utilizzo i dati di quel mese stesso è tutto ok, ma sto trovando difficoltà in questo altro caso:

Dovrei riportare per ogni mese, un valore calcolato sulla scorta degli ultimi tre mesi (quindi per gennaio 2023, dovrei avere quel dato calcolato considerando i dati di novembre 2022, dicembre 2022 e gennaio 2023).

Per calcolare questo dato ho usato la funzione CALCULATE in abbinamento alla funzione DATESQTD e poi, per rimuovere il filtro dell'anno esterno (altrimenti per il mese di gennaio non considera novembre e dicembre 2022), ho provato ad arricchire la formula inserendo le funzioni ALL, oppure REMOVEFILTERS, o ancora ad utilizzare DATEADD al posto di DATESQTD, ma non riesco comunque ad arrivare al risultato.

Ho a disposizione una tabella Calendario dinamica, che parte dal 01/01/2021 e arriva a TODAY(), relazionata ad un'altra tabella da cui prendo i dati che voglio mostrare.

Avete qualche suggerimento? Vi ringrazio!


Avatar utente

Andrea90
Messaggi: 2324 | Topic creati
Iscritto il: dom 28 giu 2020, 19:41
Luogo: Bologna
Ringraziato: 679 volte
Contatta:

Funzione DATESQTD con filtri di contesto

Messaggio da Andrea90 »

ivuss,

Una tabella calendario deve avere tutte le date presenti all'interno dell'anno o degli anni di analisi. Per dire, se i tuoi dati comprendono gli anni 2022 e 2023 allora ti serve una tabella calendario che contenga tutte le date dal 01/01/2022 al 31/12/2023. Quindi con la funzione TODAY() non riesci ad ottenere questa cosa.

Per calcolare quello che chiedi puoi utilizzare DATESBETWEEN la quale ti riporta un elenco di date comprese tra una di fine ed una di inizio.
Le date limite le puoi calcolare utilizzando altre TimeIntelligence functions come ad esempio DATEADD(, -3, MONTHS).

Un altro modo, penso ancora più semplice, è tramite l’utilizzo di DATESINPERIOD():

https://dax.guide/datesinperiod/

Ti consiglio la lettura di questa precedente discussione:

viewtopic.php?p=5006&hilit=datesinperiod#p5006

Andrea
Se hai gradito l'aiuto che hai ricevuto considera di contribuire alle spese per il mantenimento del forum facendo una libera DONAZIONE --> Link

Ricordarsi di segnare come "RISOLTE" le discussioni per le quali si è ricevuto un feedback positivo. Per vedere come fare --> Link
Avatar utente

Autore del topic
ivuss
Messaggi: 5 | Topic creati
Iscritto il: gio 2 mar 2023, 17:13

Funzione DATESQTD con filtri di contesto

Messaggio da ivuss »

Grazie mille Andrea, ho risolto nel seguente modo:
Ho sistemato la tabella calendario attraverso la funzione CALENDARAUTO() in modo da avere, come suggerivi, tutte le date degli anni in analisi.
Ho poi calcolato ciò che mi serviva attraverso la combinazione delle funzioni CALCULATE() e DATESINPERIOD(). Ciò che mi bloccava era proprio la tabella calendario, sistemata quella è stato molto semplice ricavare ciò che mi serviva.

Grazie dei consigli! :thumbup:
Avatar utente

Andrea90
Messaggi: 2324 | Topic creati
Iscritto il: dom 28 giu 2020, 19:41
Luogo: Bologna
Ringraziato: 679 volte
Contatta:

Funzione DATESQTD con filtri di contesto

Messaggio da Andrea90 »

ivuss,

Giusto una considerazione, la funzione CALENDARAUTO() crea in automatico la lista di date necessarie alla tabella calendario, andando a ricercare la data di inizio e fine all'interno del modello.

Bisogna prestare attenzione ai campi data che possiedi (o che potresti un domani possedere aggiungendo tabelle al modello), perché se ad esempio possiedi più campi data lui cercherà il minor valore possibile tra questi.

Faccio un esempio, se possiedi un'anagrafica dei clienti, all'interno della quale esiste un campo data con la data di nascita di ciascuno di questi, ed uno è nato nel 1950, il sistema ti creerà una tabella calendario che partirà dal 01/01/1950 fino al 31/12 dell'ultimo anno disponibile (lo stesso vale per il limite massimo).

Quindi bisogna prestare attenzione che la tabella calendario costruita con CALENDARAUTO non diventi troppo grande, al fine di non appesantire il modello dati.

Andrea
Se hai gradito l'aiuto che hai ricevuto considera di contribuire alle spese per il mantenimento del forum facendo una libera DONAZIONE --> Link

Ricordarsi di segnare come "RISOLTE" le discussioni per le quali si è ricevuto un feedback positivo. Per vedere come fare --> Link
Rispondi