You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建双参数返回的KQL字符串处理函数及调用报错排查

KQL函数创建与调用问题解决

你的错误根源在于:用print输出的函数会返回表格类型结果,但extend操作符需要的是标量值,两者上下文不匹配,因此触发"Tabular expression is not expected in the current context"错误。

根据需求,分三种场景给出解决方案:

场景1:返回处理后的单个组合标量值

如果需要将两个处理后的字符串合并为一个值返回,使用标量函数:

let myfunction = (s1:string, s2:string) {
    // 这里添加你的字符串处理逻辑,示例为转大写
    let processed_s1 = toupper(s1);
    let processed_s2 = toupper(s2);
    // 返回拼接后的单个标量字符串
    strcat(processed_s1, ", ", processed_s2)
};

// 调用方式1:在表中用extend生成新列
MyTable
| extend processed_result = myfunction(ColumnA, ColumnB)

// 调用方式2:直接验证结果
print result = myfunction("a", "b")

场景2:返回两个独立的处理后值

如果需要同时返回两个处理后的字符串,可通过动态数组封装,后续拆分使用:

let myfunction = (s1:string, s2:string) {
    let processed_s1 = toupper(s1);
    let processed_s2 = toupper(s2);
    // 用动态数组返回两个值
    dynamic([processed_s1, processed_s2])
};

// 调用并拆分数组
MyTable
| extend processed_pair = myfunction(ColumnA, ColumnB)
| extend first_processed = processed_pair[0], second_processed = processed_pair[1]

场景3:返回多列表格结果

如果需要直接返回包含两个处理后列的表格,需定义表格函数,并用invoke调用(不能用extend):

let myfunction = (T:(input_s1:string, input_s2:string)) {
    T
    | extend processed_s1 = toupper(input_s1), processed_s2 = toupper(input_s2)
};

// 调用方式:传入表格并invoke
datatable(input_s1:string, input_s2:string)
[
    "a", "b",
    "c", "d"
]
| invoke myfunction()

内容的提问来源于stack exchange,提问作者Hopeful-Lead-7252

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 16:35:02