Pagina 1 di 1

Confronto totale giornaliero vs media giornaliera per mese

Inviato: lun 16 ago 2021, 17:56
da Michelerad
Salve,

Ho una tabella con migliaia di righe, in ogni riga è presente il campo di tipo data, denominato "Giorno", più molti altri campi. Vorrei ottenere un conteggio di tutte le righe per Giorno e uno che rappresenti la media del suddetto conteggio giornaliero per mese (es. il mese di agosto ho dati per 3 giorni, il giorno x ho 10, il giorno y 20, il giorno z, 30, quindi la media mensile è (30+20+10)/3 = 20). Al fine di ottenere, dopo un import in power query e aggiunta della tabella modificata al modello dati, un grafico pivot, a barre, in cui ho sulle x i giorni e sulle y il valore del conteggio delle righe per giorno. A questo grafico vorrei aggiungere una linea che rappresenti la media giornaliera per mese (in modo da evidenziare i giorni con valori sopra e sotto la media). Vorrei fare tutto con il dax, con diversi raggruppamento in PQ riesco ad arrivarci, ma, essendo molti i dati, temo di appesantire troppo il file.
Allego file con tabella rappresentativa e grafico desiderato, disegnato a mano è un'immagine (spero si veda)


Grazie

Confronto totale giornaliero vs media giornaliera per mese

Inviato: lun 16 ago 2021, 18:30
da Andrea90
Ciao Michelerad,

Per i calcoli con le date serve quasi sempre impostare una Calendar Table.

Per le misure, una bozza può essere la seguente

[Simple Count]

Codice: Seleziona tutto

=COUNTROWS( Dati )
AvgMonth

Codice: Seleziona tutto

=
VAR CurYM =
    MAXX ( Calendario; Calendario[Mese_Anno] )
VAR Num =
    CALCULATE (
        [# SimpleCount];
        ALL ( Calendario[Data] );
        Calendario[Mese_Anno] = CurYM
    )
VAR Den =
    CALCULATE (
        DISTINCTCOUNT ( Dati[Giorno] );
        ALL ( Calendario[Data] );
        Calendario[Mese_Anno] = CurYM
    )
VAR Result =
    IF ( NOT ISBLANK ( [# SimpleCount] ); DIVIDE ( Num; Den ) )
RETURN
    Result
A presto,
Andrea

Confronto totale giornaliero vs media giornaliera per mese

Inviato: mar 17 ago 2021, 8:35
da Michelerad
Ciao Andrea, grazie per la risposta. Non mi è chiara la logica usata, potresti descrivermela?

Confronto totale giornaliero vs media giornaliera per mese

Inviato: mar 17 ago 2021, 8:43
da Andrea90
Ciao Michelerad,

Tralasciando la misura [Simple Count] che risulta essere un semplice conteggio della tabella Dati, la misura AvgMonth si compone di alcune variabili:

Codice: Seleziona tutto

VAR CurYM =
    MAXX ( Calendario; Calendario[Mese_Anno] )
Questa riporta il valore "Anno_Mese" per la data che stai guardando all'interno della matrice (questo è un campo che utilizza la misura per filtrare la tabella Calendario).

Codice: Seleziona tutto

VAR Num =
    CALCULATE (
        [# SimpleCount];
        ALL ( Calendario[Data] );
        Calendario[Mese_Anno] = CurYM
    )
Questa variabile effettua il conteggio della tua tabella dati, ma per solo quei record che hanno come data, una relativa al valore Mese_Anno corrente. Per poter poi effettuare il conteggio su tutta la tabella ho rimosso il filtro applicato dalla singola data (ALL(...)), in questo modo il filtro attivo rimane quello di Mese_Anno

Codice: Seleziona tutto

VAR Den =
    CALCULATE (
        DISTINCTCOUNT ( Dati[Giorno] );
        ALL ( Calendario[Data] );
        Calendario[Mese_Anno] = CurYM
    )
Stessa logica di prima solo che qui si fa un conteggio distinto.

Codice: Seleziona tutto

VAR Result =
    IF ( NOT ISBLANK ( [# SimpleCount] ); DIVIDE ( Num; Den ) )
Il check tramite IF consente di visualizzare l'output desiderato, per le sole date che presentano un valore di [# SimpleCount].

Andrea

Confronto totale giornaliero vs media giornaliera per mese

Inviato: mar 17 ago 2021, 10:44
da Michelerad
Grazie