toscalar()
Retourneert een scalaire constante waarde van de geëvalueerde expressie.
Deze functie is handig voor query's waarvoor gefaseerde berekeningen zijn vereist. Bereken bijvoorbeeld het totale aantal gebeurtenissen en gebruik vervolgens het resultaat om groepen te filteren die een bepaald percentage van alle gebeurtenissen overschrijden.
Twee instructies moeten worden gescheiden door een puntkomma.
Syntax
toscalar(
Expressie)
Meer informatie over syntaxisconventies.
Parameters
Naam | Type | Vereist | Beschrijving |
---|---|---|---|
expression | string |
✔️ | De waarde die moet worden geconverteerd naar een scalaire waarde. |
Retouren
Een scalaire constante waarde van de geëvalueerde expressie. Als het resultaat een tabellair is, worden de eerste kolom en eerste rij gebruikt voor conversie.
Tip
U kunt een let-instructie gebruiken voor de leesbaarheid van de query wanneer u gebruikt toscalar()
.
Beperkingen
toscalar()
kan niet worden toegepast op een scenario dat de functie op elke rij toepast. Dit komt doordat de functie slechts een constant aantal keren kan worden berekend tijdens de uitvoering van de query.
Wanneer deze beperking wordt bereikt, wordt meestal de volgende fout geretourneerd: can't use '<column name>' as it is defined outside its row-context scope.
In het volgende voorbeeld mislukt de query met de fout:
'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)
Deze fout kan worden verzacht met behulp van de join
operator, zoals in het volgende voorbeeld:
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
Uitvoer
x | y |
---|---|
1 | 2 |
3 | 4 |
5 | 6 |
Voorbeelden
Evalueer Start
, End
en Step
als scalaire constanten en gebruik het resultaat voor range
evaluatie.
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
Uitvoer
z | starten | beëindigen | stap |
---|---|---|---|
1 | 1 | 9 | 2 |
3 | 1 | 9 | 2 |
5 | 1 | 9 | 2 |
7 | 1 | 9 | 2 |
9 | 1 | 9 | 2 |
In het volgende voorbeeld ziet u hoe toscalar
u een expressie kunt 'herstellen', zodat deze één keer precies wordt berekend. In dit geval retourneert de expressie die wordt berekend een andere waarde per evaluatie.
let g1 = toscalar(new_guid());
let g2 = new_guid();
range x from 1 to 2 step 1
| extend x=g1, y=g2
Uitvoer
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.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor