toscalar()
Область применения: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Возвращает скалярное постоянное значение вычисленного выражения.
Эта функция полезна для запросов, требующих поэтапного вычисления. Например, вычислите общее количество событий, а затем используйте результат для фильтрации групп, превышающих определенный процент всех событий.
Любые два оператора должны быть разделены точкой с запятой.
Синтаксис
toscalar(
выражение)
Дополнительные сведения о соглашениях синтаксиса.
Параметры
Имя (название) | Type | Обязательно | Описание |
---|---|---|---|
выражение | string |
✔️ | Значение для преобразования в скалярное значение. |
Возвраты
Скалярное константное значение вычисляемого выражения. Если результат является табличным, для преобразования будет взят первый столбец и первая строка.
Совет
При использовании toscalar()
можно использовать инструкцию let для удобочитаемости запроса.
Ограничения
toscalar()
Нельзя применять к сценарию, применяющей функцию к каждой строке. Это связано с тем, что функция может вычисляться только постоянное количество раз во время выполнения запроса.
Обычно при достижении этого ограничения возвращается следующая ошибка: can't use '<column name>' as it is defined outside its row-context scope.
В следующем примере запрос завершается ошибкой:
'toscalar': can't use 'x' as it is defined outside its row-context scope.
let _dataset1 = datatable(x:long)[1,2,3,4,5];
let _dataset2 = datatable(x:long, y:long) [ 1, 2, 3, 4, 5, 6];
let tg = (x_: long)
{
toscalar(_dataset2| where x == x_ | project y);
};
_dataset1
| extend y = tg(x)
Этот сбой join
можно устранить с помощью оператора, как показано в следующем примере:
let _dataset1 = datatable(x: long)[1, 2, 3, 4, 5];
let _dataset2 = datatable(x: long, y: long) [1, 2, 3, 4, 5, 6];
_dataset1
| join (_dataset2) on x
| project x, y
Выходные данные
x | г |
---|---|
1 | 2 |
3 | 4 |
5 | 6 |
Примеры
Оцените Start
, End
а Step
также скалярные константы и используйте результат для range
оценки.
let Start = toscalar(print x=1);
let End = toscalar(range x from 1 to 9 step 1 | count);
let Step = toscalar(2);
range z from Start to End step Step | extend start=Start, end=End, step=Step
Выходные данные
z | start | end | step |
---|---|---|---|
1 | 1 | 9 | 2 |
3 | 1 | 9 | 2 |
5 | 1 | 9 | 2 |
7 | 1 | 9 | 2 |
9 | 1 | 9 | 2 |
В следующем примере показано, как toscalar
можно использовать для "исправления" выражения, чтобы вычислить его точно один раз. В этом случае вычисляемое выражение возвращает другое значение для каждой оценки.
let g1 = toscalar(new_guid());
let g2 = new_guid();
range x from 1 to 2 step 1
| extend x=g1, y=g2
Выходные данные
x | г |
---|---|
e6a15e72-756d-4c93-93d3-fe85c18d19a3 | c2937642-0d30-4b98-a157-a6706e217620 |
e6a15e72-756d-4c93-93d3-fe85c18d19a3 | c6a48cb3-9f98-4670-bf5b-589d0e0dcaf5 |