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!
Funzione DATESQTD con filtri di contesto L’argomento è risolto
-
- Messaggi: 5 | Topic creati
- Iscritto il: gio 2 mar 2023, 17:13
-
- Messaggi: 2324 | Topic creati
- Iscritto il: dom 28 giu 2020, 19:41
- Luogo: Bologna
- Ringraziato: 679 volte
- Contatta:
Funzione DATESQTD con filtri di contesto
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
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
-
Autore del topic - Messaggi: 5 | Topic creati
- Iscritto il: gio 2 mar 2023, 17:13
Funzione DATESQTD con filtri di contesto
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!
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!
-
- Messaggi: 2324 | Topic creati
- Iscritto il: dom 28 giu 2020, 19:41
- Luogo: Bologna
- Ringraziato: 679 volte
- Contatta:
Funzione DATESQTD con filtri di contesto
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
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