toscalar()
Gibt einen skalaren konstanten Wert des ausgewerteten Ausdrucks zurück.
Diese Funktion ist nützlich für Abfragen, die mehrstufige Berechnungen erfordern. Berechnen Sie beispielsweise eine Gesamtanzahl von Ereignissen, und verwenden Sie dann das Ergebnis, um Gruppen zu filtern, die einen bestimmten Prozentsatz aller Ereignisse überschreiten.
Zwei Anweisungen müssen durch ein Semikolon getrennt werden.
Syntax
toscalar(
expression)
Erfahren Sie mehr über Syntaxkonventionen.
Parameter
Name | Typ | Erforderlich | BESCHREIBUNG |
---|---|---|---|
expression | string |
✔️ | Der Wert, der in einen Skalarwert konvertiert werden soll. |
Gibt zurück
Ein skalarer konstanter Wert des ausgewerteten Ausdrucks. Wenn das Ergebnis tabellarisch ist, werden die erste Spalte und die erste Zeile für die Konvertierung verwendet.
Tipp
Sie können eine let-Anweisung für die Lesbarkeit der Abfrage verwenden, wenn Sie verwenden toscalar()
.
Einschränkungen
toscalar()
kann nicht auf ein Szenario angewendet werden, in dem die Funktion auf jede Zeile angewendet wird. Dies liegt daran, dass die Funktion während der Abfrageausführung nur eine konstante Anzahl von Malen berechnet werden kann.
Wenn diese Einschränkung erreicht wird, wird in der Regel der folgende Fehler zurückgegeben: can't use '<column name>' as it is defined outside its row-context scope.
Im folgenden Beispiel schlägt die Abfrage mit dem Fehler fehl:
'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)
Dieser Fehler kann wie im folgenden Beispiel mithilfe des join
-Operators behoben werden:
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
Ausgabe
x | Y |
---|---|
1 | 2 |
3 | 4 |
5 | 6 |
Beispiele
Werten Sie Start
, End
und Step
als Skalarkonstanten aus, und verwenden Sie das Ergebnis für range
die Auswertung.
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
Ausgabe
z | start | end | Schritt |
---|---|---|---|
1 | 1 | 9 | 2 |
3 | 1 | 9 | 2 |
5 | 1 | 9 | 2 |
7 | 1 | 9 | 2 |
9 | 1 | 9 | 2 |
Das folgende Beispiel zeigt, wie toscalar
ein Ausdruck "korrigiert" werden kann, sodass er genau einmal berechnet wird. In diesem Fall gibt der berechnete Ausdruck einen anderen Wert pro Auswertung zurück.
let g1 = toscalar(new_guid());
let g2 = new_guid();
range x from 1 to 2 step 1
| extend x=g1, y=g2
Ausgabe
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.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für