Share via


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, Endund 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