toscalar()
Gäller för: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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
, End
och 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 |