强大的查询:聚合加计算

时间:2020-09-28 17:49:21

标签: powerbi powerquery

我正在处理PowerBi报表,尝试使用Power Query预处理数据。我无法解决这个问题:我试图通过根据标准对行(具有相同ID的行)进行分组来过滤表,同时对分组后的行的值(Feature2之和)进行计算并记录下覆盖同一列(或将该值添加到新列中)。我为我的英语道歉。 简而言之:

我拥有的是:

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 

我想要的是(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 

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

我一直在寻找两种没有成功的解决方案:

I)Power Query编辑器中的过滤器 我试图在Power Query编辑器中应用“分组行”步骤:

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

但是这删除了我要保留的其余列。 我对Table.AddColumn执行了一些变通办法,但没有成功。

II)通过DAX表达式获得的新表

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

但是它不起作用:其余的列和应用的过滤器都会丢失。

有什么建议吗?预先感谢!

1 个答案:

答案 0 :(得分:1)

只需从开始的地方开始,在过滤行后进行分组,即可做到:

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

我所做的就是这样设置分组:

enter image description here

这是给我的:

enter image description here

然后,我扩展了AllData列,仅选择Feature1而不使用原始列名作为前缀:

enter image description here

这是给我的:

enter image description here

然后我将Feature1列拖动到Feature2列的左侧以获取此信息:

enter image description here