Pagina 1 di 1

delta Date

Inviato: gio 29 set 2022, 17:19
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...

delta Date

Inviato: gio 29 set 2022, 20:42
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

delta Date

Inviato: ven 30 set 2022, 11:55
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] ...

delta Date

Inviato: ven 30 set 2022, 12:12
da Matteo1970
Mi auto rispondo...ho provato a usare svariati modi...bastava fare TAB_1[Data Inizio]+1


Grazie, ho risolto.

delta Date

Inviato: ven 30 set 2022, 23:24
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.