在PowerQuery中基于列名的行总计

我有一个大约有400列的数据文件。 我需要将这些数据导入PowerPivot。 为了减less我的文件大小,我想使用PowerQuery创build2个不同的行总数 ,然后删除所有不需要的列加载。

虽然我的第一行总列(RowTotal1)将总计所有400列,我还想第二行总计(RowTotal2)从RowTotal1减去其名称中包含文本“点击”的任何列。

其次,我想使用我的国家/地区列中的值作为variables,也可以减去包含此variables的任何列。 例如

网站 —- 国家 —- 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亿以上的行?

代码看起来像这样:

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" 

但是由于你有很多专栏,我应该解释一下这些步骤:

  • (假设你在Excel文件中有这些)将它们导入Power Query
  • select“网站”和“国家/地区”列(使用Ctrl),右键单击>不透明的其他列
  • 添加具有此公式的列(您可能需要使用高级编辑器):Table.AddColumn(#“Unpivoted Other Columns”,“Value2”,each if [Country] = [Attribute] or [Attribute] =“ClickCol1”then 0 else [值])
  • select“站点和国家”列,右键单击>分组依据
  • 使它看起来像这样: 在这里输入图像说明