Compartilhar via


toscalar()

Retorna um valor constante escalar da expressão avaliada.

Essa função é útil para consultas que exigem cálculos preparados. Por exemplo, calcule uma contagem total de eventos e use o resultado para filtrar grupos que excedem uma determinada porcentagem de todos os eventos.

Duas instruções devem ser sempre separadas por ponto e vírgula.

Sintaxe

toscalar(expression)

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Tipo Obrigatório Descrição
expressão string ✔️ O valor a ser convertido em um valor escalar.

Retornos

Um valor de constante escalar da expressão avaliada. Se o resultado for um tabular, a primeira coluna e a primeira linha serão usadas 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 será 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 join operador , 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

Saída

x a
1 2
3 4
5 6

Exemplos

Avalie Start, Ende 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

Saída

z iniciar end Etapa
1 1 9 2
3 1 9 2
5 1 9 2
7 1 9 2
9 1 9 2

O exemplo a seguir mostra como toscalar pode ser usado para "corrigir" uma expressão para que ela seja calculada precisamente uma vez. Nesse caso, a expressão que está sendo calculada retorna um valor diferente por avaliação.

let g1 = toscalar(new_guid());
let g2 = new_guid();
range x from 1 to 2 step 1
| extend x=g1, y=g2

Saída

x a
e6a15e72-756d-4c93-93d3-fe85c18d19a3 c2937642-0d30-4b98-a157-a6706e217620
e6a15e72-756d-4c93-93d3-fe85c18d19a3 c6a48cb3-9f98-4670-bf5b-589d0e0dcaf5