KQL是否支持通过自定义函数为Kusto表每行追加列?
KQL实现基于自定义逻辑为每行追加列的正确方式
KQL支持你要的功能,但你用错了运算符:Invoke是用来调用表值函数(返回完整表表达式的函数)的,而你写的Test是标量函数(返回单个值的函数),直接用Invoke会失败。
正确实现方式(标量函数+extend)
你的标量函数定义可以保留,KQL函数默认以最后一行表达式作为返回值,当前写法已满足要求:
.create-or-alter function Test(input: string, column: dynamic) { // custom logic tostring(column.value1); }
要为每行追加新列,直接用extend运算符调用这个标量函数即可:
MyTable | extend ResultColumn = Test("inputString", column)
若要用Invoke实现(需改为表值函数)
如果一定要用Invoke,需要把函数改成表值函数,接收输入表作为参数,同时指定其他参数:
.create-or-alter function TestTable(inputTable:(*), inputStr:string) { inputTable | extend ResultColumn = tostring(column.value1) // 这里可直接编写自定义逻辑,或调用上述标量函数 }
调用方式:
MyTable | invoke TestTable("inputString")
内容的提问来源于stack exchange,提问作者DxG
相关产品推荐
相关产品推荐

