Dela via


toscalar()

Gäller för: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel

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 ett totalt antal händelser och sedan använda resultatet för att filtrera grupper som överskrider en viss procent av alla händelser.

Två instruktioner avgränsas med ett semikolon.

Syntax

toscalar( uttryck)

Läs mer om syntaxkonventioner.

Parametrar

Namn Typ Krävs Beskrivning
uttryck string ✔️ Värdet som ska konverteras till ett skalärt värde.

Returnerar

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.

Dricks

Du kan använda en låta instruktionen för läsbarhet för 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 åtgärdas 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

utdata

x y
1 2
3 4
5 6

Exempel

Exemplen i det här avsnittet visar hur du använder syntaxen för att komma igång.

Ange intervall för utvärdering

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

utdata

z starta ände steg
1 1 9 2
3 1 9 2
5 1 9 2
7 1 9 2
9 1 9 2

Generera ett fast och dynamiskt GUID

I följande exempel visas hur toscalar() kan användas för att generera en fast guid, som beräknas exakt en gång och dynamiska värden för guid.

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

utdata

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