使用replace()时,未能将参数2强制转换为标量常量



当函数的第二个参数是列字段时,我试图使用replace

replace("bla", column1Field, orignalString)

但我得到了以下错误:

replace(): failed to cast argument 2 to scalar constant

为什么我会出现这个错误,以及如何将列字段与这些函数一起使用?

2021年7月更新:

replace()函数已替换为replace_regex()(只需注意参数的顺序已更改(。replace_regex()期望正则表达式查找,并且它必须是常量,因为Kusto";编译";它,如果按记录来做,性能会很差。

还有一个新的replace_string()函数,它可以让你做你想做的事情:用另一个字符串替换一个字符串(两者都可以是非常数(。因此,在您的情况下,您应该使用replace_string(orignalString, "bla", column1Field)

旧答案:

CCD_ 7的第二个自变量必须是常数;编译";它,如果按记录来做,性能会很差。

一个例子(来自文档(:

range x from 1 to 5 step 1
| extend str=strcat('Number is ', tostring(x))
| extend replaced=replace(@'is (d+)', @'was: 1', str)

正如您所看到的,第二个参数包含1,它将采用str中的值,该值与第一个参数regex中()内部的值相匹配。

最新更新