Toscalar()
Aplica-se a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Retorna um valor constante escalar da expressão avaliada.
Esta função é útil para consultas que exigem cálculos em estágios. Por exemplo, calcule uma contagem total de eventos e use o resultado para filtrar grupos que excedam uma determinada porcentagem de todos os eventos.
Quaisquer duas instruções são separadas por ponto-e-vírgula.
Sintaxe
toscalar(
expressão)
Saiba mais sobre convenções de sintaxe.
Parâmetros
Designação | Tipo | Necessário | Descrição |
---|---|---|---|
expressão | string |
✔️ | O valor a ser convertido em um valor escalar. |
Devoluções
Um valor constante escalar da expressão avaliada. Se o resultado for uma tabela, a primeira coluna e a primeira linha serão tomadas para conversão.
Dica
Você pode usar uma instrução let para legibilidade da consulta ao usar toscalar()
.
Limitações
toscalar()
não pode ser aplicado em um cenário que aplica a função em cada linha. Isso ocorre porque a função só pode ser calculada um número constante de vezes durante a execução da consulta.
Normalmente, quando essa limitação é atingida, o seguinte erro é retornado: can't use '<column name>' as it is defined outside its row-context scope.
No exemplo a seguir, a consulta falha com o erro:
'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)
Essa falha pode ser atenuada usando o operador join
, como no exemplo a seguir:
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
Output
x | y |
---|---|
1 | 2 |
3 | 4 |
5 | 6 |
Exemplos
Os exemplos nesta seção mostram como usar a sintaxe para ajudá-lo a começar.
Definir intervalo para avaliação
Avalie Start
, End
e Step
como constantes escalares e use o resultado para range
avaliação.
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
Output
z | Início | fim | passo a passo |
---|---|---|---|
1 | 1 | 9 | 2 |
3 | 1 | 9 | 2 |
5 | 1 | 9 | 2 |
7 | 1 | 9 | 2 |
9 | 1 | 9 | 2 |
Gerar GUID fixo e dinâmico
O exemplo a seguir mostra como toscalar()
pode ser usado para gerar um guid
fixo, calculado precisamente uma vez, e valores dinâmicos para guid
.
let g1 = toscalar(new_guid());
let g2 = new_guid();
range x from 1 to 2 step 1
| extend x=g1, y=g2
Output
x | y |
---|---|
E6A15E72-756D-4C93-93D3-FE85C18D19A3 | C2937642-0D30-4B98-A157-A6706E217620 |
E6A15E72-756D-4C93-93D3-FE85C18D19A3 | C6A48CB3-9F98-4670-BF5B-589D0E0DCAF5 |