toscalar()
Si applica a: ✅Microsoft Fabric✅Azure Esplora dati✅ Azure Monitor✅Microsoft Sentinel
Restituisce un valore costante scalare dell'espressione valutata.
Questa funzione è utile per le query che richiedono calcoli a fasi. Ad esempio, calcolare un conteggio totale di eventi e quindi usare il risultato per filtrare i gruppi che superano una determinata percentuale di tutti gli eventi.
Le due istruzioni devono essere separate da un punto e virgola.
Sintassi
toscalar(
expression)
Altre informazioni sulle convenzioni di sintassi.
Parametri
Nome | Digita | Obbligatorio | Descrizione |
---|---|---|---|
expression | string |
✔️ | Valore da convertire in un valore scalare. |
Valori restituiti
Valore costante scalare dell'espressione valutata. Se il risultato è un tabulare, verrà eseguita la prima colonna e la prima riga per la conversione.
Suggerimento
È possibile usare un'istruzione let per la leggibilità della query quando si usa toscalar()
.
Limiti
toscalar()
non può essere applicato a uno scenario che applica la funzione in ogni riga. Ciò è dovuto al fatto che la funzione può essere calcolata solo un numero costante di volte durante l'esecuzione della query.
In genere, quando viene raggiunta questa limitazione, verrà restituito l'errore seguente: can't use '<column name>' as it is defined outside its row-context scope.
Nell'esempio seguente la query ha esito negativo e viene visualizzato l'errore:
'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)
Questo errore può essere risolto usando l'operatore join
, come nell'esempio seguente:
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
Output
x | y |
---|---|
1 | 2 |
3 | 4 |
5 | 6 |
Esempi
Valutare Start
, End
e Step
come costanti scalari e usare il risultato per range
la valutazione.
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 | Avvio | end | step |
---|---|---|---|
1 | 1 | 9 | 2 |
3 | 1 | 9 | 2 |
5 | 1 | 9 | 2 |
7 | 1 | 9 | 2 |
9 | 1 | 9 | 2 |
Nell'esempio seguente viene illustrato come toscalar
usare per "correggere" un'espressione in modo che venga calcolata esattamente una volta. In questo caso, l'espressione calcolata restituisce un valore diverso per ogni valutazione.
let g1 = toscalar(new_guid());
let g2 = new_guid();
range x from 1 to 2 step 1
| extend x=g1, y=g2
Output
x | y |
---|---|
e6a15e72-756d-4c93-93d3-fe85c18d19a3 | c2937642-0d30-4b98-a157-a6706e217620 |
e6a15e72-756d-4c93-93d3-fe85c18d19a3 | c6a48cb3-9f98-4670-bf5b-589d0e0dcaf5 |