delta Date

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

Matteo1970
Messaggi: 5 | Topic creati
Iscritto il: ven 23 set 2022, 10:39

delta Date

Messaggio da Matteo1970 »

Ciao a tutti

Necessito di creare una misura che mi indichi i giorni lavorativi tra due date presenti in una tabella.

Diciamo data_inizio e data_fine

Ho una tabelle di appoggio nel cubo che definisce per ogni data ( dal 2018 al 2030) se lavorativo ( 1 ) o festivo (2)

Quindi

TAB1
TAB1_data_inizio
TAB1_data_fine

TAB2
TAB2_DATA
TAB2_TIPO

Dovrei creare una misura sulla TAB1 con la somma dei TAB2_TIPO che intercorre tra TAB1_data_inizio e TAB1_data_fine.

Ho provato così:
DATEDIFF = Calculate(countrows(TAB2 ), datesbetween(TAB2_DATA, TAB1_data_inizio, TAB1_data_fine), TAB2_TIPO=1)

Ma mi da errore :
Couldn't load the data for this visual

The report measure ‘Measure' has a syntax or
semantic error at line 1, position 72, reported by Analysis Services:
‘Calculation error in measure ‘Measure: A single
value for column ‘TAB1_Data_Inizio' in table
*TAB1' cannot be determined. This can happen when a
measure formula refers to a column that contains many values
without specifying an aggregation such as min, max, count, or sum to
get a single result.'.

Non riesco a venirne fuori...


Avatar utente

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

delta Date

Messaggio da Andrea90 »

Matteo1970,

Un qualcosa di simile:

Codice: Seleziona tutto

=
VAR StartDate =
    MIN ( TAB_1[Data Inizio] )
VAR EndDate =
    MAX ( TAB_1[Data Fine] )
VAR Result =
    COUNTROWS (
        FILTER (
            ALL ( TAB_2 ),
            TAB_2[Data] >= StartDate
                && TAB_2[Data] <= EndDate
                && TAB_2[TIPO] = 1
        )
    )
RETURN
    Result
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

Autore del topic
Matteo1970
Messaggi: 5 | Topic creati
Iscritto il: ven 23 set 2022, 10:39

delta Date

Messaggio da Matteo1970 »

Scusa l'ignoranza, ma così non prende il valore più alto di una colonna e il valore più basso di un'altra colonna?
Credo di essermi spiegato male.
A me serve che il conteggio sia fatto a livello di riga, la misura quindi dovrebbe fare il delta di due date in due colonne per ogni singola riga.

Potrebbe funzionare ( anticipandolo con un averagex ... ) un CALCULATE( TAB_2[TIPO] , DATESBETWEEN(TAB_2[Data], TAB_1[Data Inizio] , TAB_1[Data Fine]) ma mi conteggia ( giustamente) valore 1 anche nel giorno iniziale ( se lavorativo), che però non è corretto in quanto 30/09/22 - 29/09/22 deve restituire ( essendo entrambe lavorativi) 1, invece in quanto modo restituisce 2.

Dovrei trovare il modo di aggiungere un giorno di calendario a TAB_1[Data Inizio] ...

Autore del topic
Matteo1970
Messaggi: 5 | Topic creati
Iscritto il: ven 23 set 2022, 10:39

delta Date

Messaggio da Matteo1970 »

Mi auto rispondo...ho provato a usare svariati modi...bastava fare TAB_1[Data Inizio]+1


Grazie, ho risolto.

Raf1988
Messaggi: 83 | Topic creati
Iscritto il: sab 29 ago 2020, 13:18
Ringraziato: 7 volte

delta Date

Messaggio da Raf1988 »

Matteo1970 se può esserti utile allo scopo, dalla release di Luglio 2022 di PBI è stata introdotta la funziona NETWORKDAYS che conta proprio i giorni feriali tra due date. Hai anche la possibilità di impostare tu quali sono i giorni festivi da considerare.
Rispondi