我正在尝试使用 Power Query 将汇总列添加到包含多个不同银行账户交易记录的表格中。我对 Power Query 和 M 还不太熟悉,我正在遵循本教程中的第一种方法:

但我在第一个障碍上就卡住了。当我按照教程中列出的语法操作时,它工作正常:

= let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Amount],BufferedValues = List.Buffer(Source[Value]),RT = Table.FromColumns({Source[Value], fxRunningTotal(BufferedValues)},{"Value","Running Total"}) in RT

但我不想为了查询而将此表导入工作簿,我想直接引用查询。当我尝试这样做时:

= let Source = #"Query1"[Amount],BufferedValues = List.Buffer(Source[Amount]),RT = Table.FromColumns({Source[Amount], fxRunningTotal(BufferedValues)},{"Amount","Running Total"}) in RT

我收到以下错误:

⚠️ Expression.Error:我们无法将字段访问应用于 List 类型。详细信息:Value=[List] Key=Amount

有没有专家可以帮忙?

8

  • 从哪來的#"Query1"


    – 

  • 我使用Table1Query1来代表表和查询的名称。


    – 

  • 是的,但是Query1 的数据来源是什么?


    – 

  • 哦,我明白了。它正在从 CSV 文件中提取数据。Table1是将数据拉入 Excel 工作簿中的表格,而Query1查询是从 CSV 文件中提取数据。为了保持整洁,我想从 Power Query 中的各种 CSV 中提取和合并所有数据,并仅显示工作簿中所需的内容。


    – 

  • 您的 .csv 文件是否位于同一文件夹中?它们是否具有相同的结构和列名?如果是这样,并且文件夹中没有不相关的 .csv 文件,请先使用Data>>Get from folder合并文件。从那里,您应该能够通过替换为新的仅连接查询名称来编辑原始语法。LoadOnly create connectionTable1


    – 



最佳答案
1

正如评论中所讨论的,Get and Transform您的 .csv 文件,将它们加载为Only create connection;然后,Combine >> Append连接仅查询您的 Query1。将 Query1 加载为。然后根据以下经过测试并在 PQ 中运行的代码为您的Running SumOnly create connection建模。请注意,您发布的内容返回表,而以下代码返回表,它将列数据类型更改为整数。 M CodeM CodeRT#Changed Type

let
Source = Query1,
BufferedValues = List.Buffer(Source[YourColumnToBeSummed]),

RT = Table.FromColumns(
{
    Source[YourColumnToBeSummed], fxRunningTotal(BufferedValues)
},
{
    "YourColumnToBeSummed",
    "Running Total"
}),
#"Changed Type" = Table.TransformColumnTypes(RT,{{"YourColumnToBeSummed", Int64.Type}, {"Running Total", Int64.Type}})
in     
#"Changed Type"

原始代码来源: