我有一个大约有400列的数据文件。我需要将此数据导入PowerPivot。为了减少文件大小,我想使用PowerQuery创建2个不同的行总计,然后在加载时删除所有不需要的列。
虽然我的第一行总列(RowTotal1)将汇总所有400列,但我还希望第二行总计(RowTotal2)从RowTotal1中减去名称包含文本“click”的任何列在它。
其次,我想使用我的Country列中的值作为变量,同时减去包含此var的任何列。 e.g。
网站 ----的国家 ----的 Col1中 ----的 col2的 --- - 的 ClickCol1 ----的 COL3 ----的德国 ----的 RowTotal1 ---- RowTotal2
1A -------- ---------- USA 2 --------- 4 ----------- 8 ---- -------- ---------- 16 24 54 -------------- --------------- 46 -------
2A ----- -------德国2 --------- 4 ----------- ---------- 8 --16 ---------- -------------- 24 54 22 --------------- ----- -
RowTotal1 = 2 + 4 + 8 + 16 + 24
RowTotal2 (第一行) = 54 - 8 (ClickCol1)
RowTotal2 (第二行) = 54 - 24 (德国) - 8 (ClickCol1)
这可能吗? (编辑:是的。请参阅下面的答案)
已修订问题:是否有更多内存效率方法可以尝试一次分组3亿多行?
答案 0 :(得分:1)
代码看起来像这样:
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Site", type text}, {"Country", type text}, {"Col1", Int64.Type}, {"Col2", Int64.Type}, {"ClickCol1", Int64.Type}, {"Col3", Int64.Type}, {"Germany", Int64.Type}}),
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"Country", "Site"}, "Attribute", "Value"),
#"Added Conditional Column" = Table.AddColumn(#"Unpivoted Other Columns", "Value2", each if [Country] = [Attribute] or [Attribute] = "ClickCol1" then 0 else [Value] ),
#"Grouped Rows" = Table.Group(#"Added Conditional Column", {"Site", "Country"}, {{"RowTotal1", each List.Sum([Value]), type number},{"RowTotal2", each List.Sum([Value2]), type number}})
in
#"Grouped Rows"
但是由于你有很多专栏,我应该解释一下步骤: