Язык запросов Kusto - передача значения параметра в пользовательскую функцию - PullRequest
1 голос
/ 17 марта 2020

Я пытаюсь отправить вывод из значения времени записи таблицы в Function1 в качестве значения параметра. но я получаю ошибку ниже для Function1()

semanti c ошибка: SEM0100: оператор 'toscalar': не удалось разрешить скалярное выражение с именем 'recordtime'.

Я пытался с рекордным временем передачи как tostring() и todatetime()

Function definitions:
Function1(fromdate string,recordtime string)
Function2(fromdate string,enddatetime string)
Main (startdate,enddatetime,id)

Function Main (startdate,enddatetime,id){
    TestTable 
    | where (fromdate >= datetime(startdate)
    and todate <= datetime(enddatetime))
    and deviceid == id
    | summarize cnt = count(), recordtime = Timestamp
    | extend getdates = case (
                              cnt == 1,toscalar(Function1(startdate,recordtime)),
                              cnt == 2,toscalar(Function2(startdate,enddatetime )),
                             "Out of range"
                             )
    | Project getdates 
}
Function1 and Function2 returns single array like ([{"fromdate":"2020-03-11T16:39:47.6730000Z"},{"todate":"2020-03-11T16:44:23.8800000Z"}]

любые предложения, заранее спасибо

1 Ответ

0 голосов
/ 18 марта 2020

Function1 является табличной функцией и поэтому не может быть вызван таким образом в середине запроса.

Если Function1 «функционально возвращает скаляр», то переместите toscalar () внутри Function1, так что вы можете удалить toscalar при вызове и вызвать эту функцию в столбце запроса.

...