当函数的第二个参数是列字段时,我试图使用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中()
内部的值相匹配。