Differenza con riga precedente

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

emme1010
Messaggi: 17 | Topic creati
Iscritto il: mer 28 lug 2021, 16:40

Differenza con riga precedente

Messaggio da emme1010 »

Buonasera a tutti,
vorrei il vs. aiuto per questo problema che non riesco a risolvere.
Ho una tabella in allegato, dovrei inserire una colonna calcolata che per lo stesso VIN calcoli la differenza in gg rispetto alla data precedente.
Ho già inserito colonna esempio "diff gg con precedente".

Grazie
Allegati
test_rilav.xlsx
(9.55 KiB) Scaricato 20 volte


Avatar utente

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

Differenza con riga precedente

Messaggio da Andrea90 »

Ciao emme1010,

Una delle possibili logiche è quella di lavorare prima in PowerQuery per crearti una colonna indice che consideri il raggruppamento per VIN (la nuova colonna l'ho chiamata "Index"):

Codice: Seleziona tutto

let
    Origine = Excel.CurrentWorkbook(){[Name="Tabella1"]}[Content],
    #"Modificato tipo" = Table.TransformColumnTypes(Origine,{{"No.", type text}, {"VIN", type text}, {"Posting Date", type date}, {"diff gg con precedente", Int64.Type}}),
    #"Ordinate righe" = Table.Sort(#"Modificato tipo",{{"VIN", Order.Ascending}, {"Posting Date", Order.Ascending}}),
    #"Raggruppate righe" = Table.Group(#"Ordinate righe", {"VIN"}, {{"TempTable", each Table.AddIndexColumn(_, "Index", 1, 1), type table [#"No."=nullable text, VIN=nullable text, Posting Date=nullable date, diff gg con precedente=nullable number]}}),
    #"Rimosse altre colonne" = Table.SelectColumns(#"Raggruppate righe",{"TempTable"}),
    #"Tabella TempTable espansa" = Table.ExpandTableColumn(#"Rimosse altre colonne", "TempTable", {"No.", "VIN", "Posting Date", "diff gg con precedente", "Index"}, {"No.", "VIN", "Posting Date", "diff gg con precedente", "Index"}),
    #"Modificato tipo1" = Table.TransformColumnTypes(#"Tabella TempTable espansa",{{"Index", Int64.Type}})
in
    #"Modificato tipo1"
Fatto questo la colonna calcolata diventa:

Codice: Seleziona tutto

=
VAR CurIdx = [Index]-1
VAR CurVIN = [VIN]
VAR TempTable = FILTER( ALL(Tabella1); Tabella1[VIN] = CurVIN && Tabella1[Index] = CurIdx)
VAR PrecDate = CALCULATE( MAX( [Posting Date] ); TempTable )
VAR Result= IF( NOT ISBLANK(PrecDate); [Posting Date] - PrecDate)
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
emme1010
Messaggi: 17 | Topic creati
Iscritto il: mer 28 lug 2021, 16:40

Differenza con riga precedente

Messaggio da emme1010 »

Grazie,
avevo pensato una soluzione simile.
Ma mi mancava il "pezzo" in power query per l'indicizzazione.
Fantastico!

Autore del topic
emme1010
Messaggi: 17 | Topic creati
Iscritto il: mer 28 lug 2021, 16:40

Differenza con riga precedente

Messaggio da emme1010 »

Buonasera Andrea,
ho seguito le tue "istruzioni".
premesso che la tab ha circa 100000 righe.
non capisco perchè il sort è errato, questo il risultato per VIN di esempio ( query solo WDD117*)

ODL VIN Posting Date Indexdifferenza
COF184423 WDD1179081N468494 09/10/2018 1
COF184422 WDD1179081N468494 28/11/2018 2 50
COF2190656 WDD1179081N468494 08/04/2019 3 131
COF193044 WDD1179081N468494 16/07/2019 4 99
COF2193025 WDD1179081N468494 16/10/2019 5 92
COF2193026 WDD1179081N468494 23/10/2019 6 7
COF2202859 WDD1179081N468494 06/11/2020 7 380
COF2210069 WDD1179081N468494 21/01/2021 8 76
COF3210027 WDD1179081N468494 01/03/2021 9 39

ed è corretto

se invece eleboro tutta la tab, il risultato è errato:

ODL VIN Posting Date Indexdifferenza
COF184423 WDD1179081N468494 09/10/2018 1
COF184422 WDD1179081N468494 28/11/2018 2 50
COF193044 WDD1179081N468494 16/07/2019 3 230
COF2193025 WDD1179081N468494 16/10/2019 4 92
COF2193026 WDD1179081N468494 23/10/2019 5 7
COF2202859 WDD1179081N468494 06/11/2020 6 380
COF2210069 WDD1179081N468494 21/01/2021 7 76
COF3210027 WDD1179081N468494 01/03/2021 8 39
COF2190656 WDD1179081N468494 08/04/2019 9 -693

sembrerebbe che il sort per l'intera tab avesse qualche problema.

non so cosa pensare.
Avatar utente

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

Differenza con riga precedente

Messaggio da Andrea90 »

Ciao emme1010,

Senza vedere il file si fa fatica a dire cosa può essere capitato.

Un altra logica potrebbe anche essere quella di effettuare un rank con il DAX utilizzando il campo data (alla fine ottieni una sorta di effetto indice da associare ad una colonna calcolata).

A presto,
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