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
, 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
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 |
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för