创建双参数返回的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
相关产品推荐
相关产品推荐

