Dela via


toscalar()

Returnerar ett skalärt konstant värde för det utvärderade uttrycket.

Den här funktionen är användbar för frågor som kräver mellanlagrade beräkningar. Du kan till exempel beräkna det totala antalet händelser och sedan använda resultatet för att filtrera grupper som överskrider en viss procent av alla händelser.

Två instruktioner måste avgränsas med semikolon.

Syntax

toscalar( Uttryck)

Läs mer om syntaxkonventioner.

Parametrar

Namn Typ Obligatorisk Beskrivning
expression string ✔️ Värdet som ska konverteras till ett skalärt värde.

Returer

Ett skalärt konstant värde för det utvärderade uttrycket. Om resultatet är en tabell tas den första kolumnen och den första raden för konvertering.

Tips

Du kan använda en let-instruktion för att läsa frågan när du använder toscalar().

Begränsningar

toscalar() kan inte tillämpas på ett scenario som tillämpar funktionen på varje rad. Det beror på att funktionen bara kan beräknas ett konstant antal gånger under frågekörningen. När den här begränsningen uppnås returneras vanligtvis följande fel: can't use '<column name>' as it is defined outside its row-context scope.

I följande exempel misslyckas frågan med felet:

'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)

Det här felet kan undvikas med hjälp av operatorn join , som i följande exempel:

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

Resultat

x y
1 2
3 4
5 6

Exempel

Utvärdera Start, Endoch Step som skalär konstanter och använd resultatet för range utvärdering.

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

Resultat

z start slut steg
1 1 9 2
3 1 9 2
5 1 9 2
7 1 9 2
9 1 9 2

I följande exempel visas hur toscalar du kan använda för att "åtgärda" ett uttryck så att det beräknas exakt en gång. I det här fallet returnerar uttrycket som beräknas ett annat värde per utvärdering.

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

Resultat

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