如何单步执行 M 中的 evaluate 函数

How to step through evaluate function in M

有没有办法逐步执行用 M 编写的自定义函数来逐行评估结果?这类似于在 Visual Basic 中使用 F8 单步执行代码,或使用 Excel 中公式功能区中的计算工具。

我编写了一个没有报错的函数,但它也没有返回我预期的结果。它包含将一个文本字符串转换为另一个字符串的多个步骤,我不确定它哪里出错了——我需要一种方法来遍历每一行并查看它在做什么,这样我就可以查明问题并修复它.

谢谢!

假设,你有这样的功能:

    (tbl as table, col as text) =>
let
    i = Table.AddIndexColumn(tbl, "i", 0, 1),
    add = Table.AddColumn(i, "new",  each Table.Column(i, col){[i]}*10),
    del = Table.RemoveColumns(add, "i")
in
    del

然后您可以为每个参数添加步骤并注释掉第一行:

//(tbl as table, col as text) =>
let
    tbl = #table(3,List.Zip({{"a".."d"},{1..4},List.Numbers(10,4,10)})),
    col = "Column3",
    i = Table.AddIndexColumn(tbl, "i", 0, 1),
    add = Table.AddColumn(i, "new",  each Table.Column(i, col){[i]}*10),
    del = Table.RemoveColumns(add, "i")
in
    del

调试后可以注释掉参数步骤:

(tbl as table, col as text) =>
let
//    tbl = #table(3,List.Zip({{"a".."d"},{1..4},List.Numbers(10,4,10)})),
//    col = "Column3",
    i = Table.AddIndexColumn(tbl, "i", 0, 1),
    add = Table.AddColumn(i, "new",  each Table.Column(i, col){[i]}*10),
    del = Table.RemoveColumns(add, "i")
in
    del

我认为 M 代码没有与 F8 等效的功能。分析其正在执行的操作的最佳方法是使用示例参数将函数重新创建为查询,并逐步执行查询编辑器中的“应用步骤”窗格。你必须给它一些东西才能看到发生了什么。如果您的示例引用其他参数,只要在您选择参数的过程中的某处生成要用于分析的实例化 table/list/value/column(或您的函数作为输入的任何内容)就可以了。