toscalar()
Gilt für: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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 End
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
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 |