我正在处理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]))
但是它不起作用:其余的列和应用的过滤器都会丢失。
有什么建议吗?预先感谢!
答案 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"})
我所做的就是这样设置分组:
这是给我的:
然后,我扩展了AllData列,仅选择Feature1而不使用原始列名作为前缀:
这是给我的:
然后我将Feature1列拖动到Feature2列的左侧以获取此信息: