#azure-data-explorer #kql
#azure-data-explorer #kql
Вопрос:
Я пытаюсь использовать replace
, когда 2-м аргументом функции является поле столбца:
replace("bla", column1Field, orignalString)
Но я получаю следующую ошибку:
replace(): failed to cast argument 2 to scalar constant
Почему я получаю эту ошибку и как по-прежнему использовать поле столбца с этими функциями?
Комментарии:
1. Привет @Ace, пожалуйста, ознакомьтесь с моим обновленным ответом на ваш вопрос.
Ответ №1:
Обновление от июля 2021:
replace()
Функция была заменена на replace_regex()
(просто обратите внимание, что порядок аргументов изменился). replace_regex()
ожидает поиск регулярных выражений, и он должен быть константой, потому что Kusto «компилирует» его, и было бы плохо с точки зрения производительности делать это для каждой записи.
И есть новая replace_string()
функция, которая позволяет вам делать именно то, что вы хотите: заменять одну строку другой (обе могут быть неконстантными). Итак, в вашем случае вам следует использовать replace_string(orignalString, "bla", column1Field)
Старый ответ:
2-й аргумент replace()
должен быть константой, потому что Kusto «компилирует» его, и было бы плохо с точки зрения производительности делать это для каждой записи.
Пример (из документа):
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, которое соответствует тому, что находится внутри ()
s в регулярном выражении, которое является первым параметром.