Condividi tramite


toscalar()

Si applica a: ✅Microsoft Fabric✅Azure Esplora dati Azure MonitorMicrosoft 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, Ende 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