Power Query: Aggregation plus Berechnungen

Sep 29 2020

Ich arbeite in einem PowerBi-Bericht und versuche, Daten mit Power Query vorzuverarbeiten. Ich kann das nicht lösen: Ich versuche, eine Tabelle zu filtern, indem ich Zeilen nach einem Kriterium gruppiere (Zeilen mit derselben ID), während ich die Werte der gruppierten Zeilen (Summe von Feature2) berechne und aufzeichne Überschreiben derselben Spalte (oder Hinzufügen dieses Werts in einer neuen Spalte). Ich entschuldige mich für mein Englisch. In einer Nussschale:

Was ich habe ist:

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 

Was ich will ist (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 

oder (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 

Ich habe erfolglos nach zwei Arten von Lösungen gesucht:

I) Ein Filter im Power Query Editor Ich habe versucht, einen Schritt für gruppierte Zeilen im Power Query Editor anzuwenden:

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

Dadurch werden jedoch die restlichen Spalten entfernt, die ich behalten möchte. Ich habe einige Problemumgehungen mit Table.AddColumn durchgeführt, ohne Erfolg.

II) Eine neue Tabelle, die durch einen DAX-Ausdruck erhalten wurde

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

aber es funktioniert nicht: Der Rest der Spalten und die angewendeten Filter gehen verloren.

Irgendwelche Vorschläge? Danke im Voraus!

Antworten

1 MarcPincince Sep 29 2020 at 02:55

Wenn Sie einfach dort weitermachen, wo Sie begonnen haben, und gruppieren, nachdem Sie Ihre Zeilen gefiltert haben, würde dies Folgendes bewirken:

#"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"})

Ich habe die Gruppierung nur so eingerichtet:

Welches gab mir das:

Dann habe ich die AllData-Spalte erweitert, nur Feature1 ausgewählt und nicht den ursprünglichen Spaltennamen als Präfix verwendet:

Welches gab mir das:

Dann habe ich die Spalte Feature1 links von der Spalte Feature2 gezogen, um Folgendes zu erhalten: