Excel Power Query - M 语言 - 对“ThisTable”的引用

Excel Power Query - M 语言 - 对“ThisTable”的引用

作为 Power Query 新手,我尝试创建 Power Query 函数,该函数将索引列添加到表中。但我很难将表引用传递给AddIndexColumn功能

我尝试过的:

let
    Func = () => Table.AddIndexColumn(Table, "Index", 1, 1)
in
    Func

这会产生一个 Expression.Error(表格无法识别或其他问题 - 它以非 EN 的系统语言显示)


let
    Func = (T as table) => Table.AddIndexColumn(T, "Index", 1, 1)
in
    Func

然后在“MyTable”中使用Invoke Custom Function,并在弹出窗口中显示下拉列表,其中包含除“MyTable”之外的所有其他表,而“MyTable”是我想要添加 IndexColumn 的表。


是否存在一些限制,或者我遗漏了什么?

感谢帮助!

PS:我知道这个函数没有实际用途,并且有其他(更好的)方法来添加索引列。将其视为概念验证。

答案1

好的,添加索引列的函数不适用于Invoke Custom Function。因为它会创建一个新列并为此列中的每个单元格调用该函数 -> 它可以创建数千个新列。

但是可以编写一个具有此类功能的函数,然后在查询代码中使用。请注意,对象Table只提供表相关函数这里并不是和数据表本身相连,数据表引用必须通过Table.function参数提供。

功能代码

let
    AddIndexColumn=(Source as table, IndexColName as text) => Table.AddIndexColumn(Source, IndexColName, 0, 1)

in
    AddIndexColumn

如何在查询中使用函数

let
    Source = ...
    SourceIndex = AddIndexColumn(Source, Name)
in
    SourceIndex

笔记:在 GUI 下拉列表中无法Source引用,必须手动写入Advanced Editor

相关内容