Power Query: aggregazione e calcoli

Sep 29 2020

Sto lavorando a un report PowerBi, cercando di pre-elaborare i dati con Power Query. Non riesco a risolverlo: sto cercando di filtrare una tabella raggruppando le righe secondo un criterio (righe con lo stesso ID) mentre effettuo un calcolo sui valori delle righe raggruppate (somma di Feature2) e registralo per sovrascrivendo la stessa colonna (o aggiungendo quel valore in una nuova colonna). Mi scuso per il mio inglese. In poche parole:

Quello che ho è:

ID      Feature1    Feature2                                    
AB100   fs789s      10.3    
AB101   j35325      5.1 
AB102   jlkh234     24.4    
AB102   df87        10.4    
AB305   sfd         6.6 
BD200   gfgs233     5.0 
BD200   kj3244      4.9 
BD301   sdg33       3.1 

Quello che voglio è (1):

ID      Feature1    Feature2                                        
AB100   fs789s      10.3    
AB101   j35325      5.1 
AB102   jlkh234     34.8    
AB305   sfd         6.6 
BD200   gfgs233     9.9 
BD301   sdg33       3.1 

o (2):

ID      Feature1    Feature2    NewFeature                                  
AB100   fs789s      10.3        10.3        
AB101   j35325      5.1         5.1     
AB102   jlkh234     24.4        34.8        
AB102   df87        10.4        34.8        
AB305   sfd         6.6         6.6     
BD200   gfgs233     5.0         9.9     
BD200   kj3244      4.9         9.9     
BD301   sdg33       3.1         3.1 

Ho cercato due tipi di soluzioni senza successo:

I) Un filtro nell'editor di Power Query ho provato ad applicare un passaggio Righe raggruppate nell'editor di Power Query:

= Table.Group(#"Filtered Rows", {"ID"}, {{"NewFeature", each List.Sum([Feature2]), type nullable number}})

ma questo rimuove il resto delle colonne che voglio mantenere. Ho eseguito alcune soluzioni alternative con Table.AddColumn, senza successo.

II) Una nuova tabella ottenuta tramite un'espressione DAX

Table = GROUPBY(OriginalTable,OriginalTable[ID],"New Column",SUMX(CURRENTGROUP(),OriginalTable[Feature2]))

ma non funziona: il resto delle colonne e i filtri applicati vengono persi.

Eventuali suggerimenti? Grazie in anticipo!

Risposte

1 MarcPincince Sep 29 2020 at 02:55

Riprendendo da dove hai iniziato, con il raggruppamento dopo aver filtrato le tue righe, questo lo farebbe:

#"Grouped Rows" = Table.Group(#"Filtered Rows", {"ID"}, {{"Feature2", each List.Sum([Feature2]), type nullable number}, {"AllData", each _, type table [ID=nullable text, Feature1=nullable text, Feature2=nullable number]}}),
#"Expanded AllData" = Table.ExpandTableColumn(#"Grouped Rows", "AllData", {"Feature1"}, {"Feature1"}),
#"Reordered Columns" = Table.ReorderColumns(#"Expanded AllData",{"ID", "Feature1", "Feature2"})

Tutto quello che ho fatto è stato impostare il raggruppamento in questo modo:

Che mi ha dato questo:

Quindi ho espanso la colonna AllData, selezionando solo Feature1 e non utilizzando il nome della colonna originale come prefisso:

Che mi ha dato questo:

Quindi ho trascinato la colonna Feature1 a sinistra della colonna Feature2 per ottenere questo: