Freigeben über


toscalar()

Gilt für: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

Gibt einen skalaren konstanten Wert des ausgewerteten Ausdrucks zurück.

Diese Funktion ist nützlich für Abfragen, für die mehrstufige Berechnungen erforderlich sind. 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 Type Erforderlich Beschreibung
expression string ✔️ Der Wert, der in einen skalaren Wert konvertiert werden soll.

Gibt zurück

Ein skalarer Konstantenwert des ausgewerteten Ausdrucks. Wenn das Ergebnis tabellarisch ist, wird die erste Spalte und erste Zeile für die Konvertierung verwendet.

Tipp

Sie können eine Let-Anweisung verwenden, um die Lesbarkeit der Abfrage bei Verwendung toscalar()zu ermöglichen.

Begrenzungen

toscalar() kann nicht auf ein Szenario angewendet werden, das die Funktion auf jede Zeile anwendet. Dies liegt daran, dass die Funktion nur eine konstante Anzahl von Malen während der Abfrageausführung berechnet werden kann. Wenn diese Einschränkung erreicht wird, wird normalerweise 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 mithilfe des join Operators abgemildert werden, wie im folgenden Beispiel gezeigt:

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

Wertet Start, , und Step als skalare Konstanten aus, und verwenden Sie das Ergebnis für range die EndAuswertung.

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

Output

z start end step
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 zum Korrigieren eines Ausdrucks verwendet 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