Buongiorno a tutti,
data una tabella di listini, con data listino, codice, fornitore, lotto e prezzo ho bisogno di estrarre, per ciascuna combinazione codice-fornitore, le righe dell'ultimo listino (quindi data massima).
Fino ad oggi ho sempre raggruppato per codice-fornitore generando la tabella con tutte le righe, poi su tale tabella applico Table.Max. Di solito questo sistema mi restituisce quello che mi serve perchè per ogni codice-fornitore-data ho una sola riga, avendo già scelto "a monte" il lotto che mi interessa. In questo caso devo estrarre tutti i lotti per la data massima e mi sono reso conto che Table.Max effettivamente dà come output un singolo record.
Sapete come aiutarmi?
Allego file di esempio
Grazie per un eventuale aiuto
Alessandro
Estrarre righe con data massima per sottogruppi fornitore-codice L’argomento è risolto
Moderatore: Utilizzo_prof_Excel
-
- Messaggi: 160 | Topic creati
- Iscritto il: sab 24 ott 2020, 23:04
- Luogo: Treviso
- Ringraziato: 11 volte
Estrarre righe con data massima per sottogruppi fornitore-codice
- Allegati
-
- ESEMPIO.xlsx
- (18.9 KiB) Scaricato 119 volte
-
- Messaggi: 2327 | Topic creati
- Iscritto il: dom 28 giu 2020, 19:41
- Luogo: Bologna
- Ringraziato: 680 volte
- Contatta:
Estrarre righe con data massima per sottogruppi fornitore-codice
@alex77,
Andrea
Codice: Seleziona tutto
let
Origine = Excel.CurrentWorkbook(){[Name="Input"]}[Content],
#"Modificato tipo" = Table.TransformColumnTypes(Origine,{{"Fornitore", type text}, {"Codice", type text}, {"Data", type datetime}, {"Lotto", Int64.Type}, {"Prezzo", Int64.Type}}),
#"Grouped Rows" = Table.Group(#"Modificato tipo", {"Fornitore", "Codice"}, {{"TempTab", each _, type table [Fornitore=nullable text, Codice=nullable text, Data=nullable datetime, Lotto=nullable number, Prezzo=nullable number]}, {"MaxDate", each List.Max([Data]), type nullable datetime}}),
#"Added Custom" = Table.AddColumn(#"Grouped Rows", "FilteredTab", each Table.SelectRows([TempTab], (x)=> x[Data] = [MaxDate])),
#"Removed Other Columns" = Table.SelectColumns(#"Added Custom",{"FilteredTab"}),
#"Expanded FilteredTab" = Table.ExpandTableColumn(#"Removed Other Columns", "FilteredTab", {"Fornitore", "Codice", "Data", "Lotto", "Prezzo"}, {"Fornitore", "Codice", "Data", "Lotto", "Prezzo"})
in
#"Expanded FilteredTab"
-
Autore del topic - Messaggi: 160 | Topic creati
- Iscritto il: sab 24 ott 2020, 23:04
- Luogo: Treviso
- Ringraziato: 11 volte
Estrarre righe con data massima per sottogruppi fornitore-codice
@Andrea90 grazie mille.
Domanda probabilmente da ignorante:
Perchè se al posto di:
scrivo
mi dà errore "Expression.Error: Il campo 'MaxDate' del record non è stato trovato."? Each non corrisponde a (x)=>?
Grazie
Domanda probabilmente da ignorante:
Perchè se al posto di:
Codice: Seleziona tutto
#"Added Custom" = Table.AddColumn(#"Grouped Rows", "FilteredTab", each Table.SelectRows([TempTab], (x)=> x[Data] = [MaxDate])),
Codice: Seleziona tutto
#"Added Custom" = Table.AddColumn(#"Grouped Rows", "FilteredTab", each Table.SelectRows([TempTab], each _[Data] = [MaxDate])),
Grazie
-
- Messaggi: 2327 | Topic creati
- Iscritto il: dom 28 giu 2020, 19:41
- Luogo: Bologna
- Ringraziato: 680 volte
- Contatta:
Estrarre righe con data massima per sottogruppi fornitore-codice
@alex77,
Potrei chiederti allora come mai questa funziona?
o anche come mai questa funziona:
Così da avere un confronto con tutte e tre le espressioni che sono state utilizzate.
Il motivo teorico è relativamente complesso poiché riguarda lo "scope" in cui viene valorizzata la funzione in PQ.
Comunque scritta come avevi fatto tu era una duplicazione di scope dentro alla stessa funzione.
Andrea
Potrei chiederti allora come mai questa funziona?
Codice: Seleziona tutto
= Table.AddColumn(#"Grouped Rows", "FilteredTab", (x)=> Table.SelectRows(x[TempTab], each [Data] = x[MaxDate]))
Codice: Seleziona tutto
= Table.AddColumn(#"Grouped Rows", "FilteredTab", (x)=> Table.SelectRows(x[TempTab], (y)=> y[Data] = x[MaxDate]))
Il motivo teorico è relativamente complesso poiché riguarda lo "scope" in cui viene valorizzata la funzione in PQ.
Comunque scritta come avevi fatto tu era una duplicazione di scope dentro alla stessa funzione.
Andrea
-
Autore del topic - Messaggi: 160 | Topic creati
- Iscritto il: sab 24 ott 2020, 23:04
- Luogo: Treviso
- Ringraziato: 11 volte
Estrarre righe con data massima per sottogruppi fornitore-codice
Grazie @Andrea90 ,
con i tuoi esempi di alternative di sintassi corretta ho capito il nodo della questione. Non sono molto pratico con le funzioni di M, ma già questo è un mattoncino in più.
grazie ancora
con i tuoi esempi di alternative di sintassi corretta ho capito il nodo della questione. Non sono molto pratico con le funzioni di M, ma già questo è un mattoncino in più.
grazie ancora