toscalar()
Si applica a: ✅Microsoft Fabric✅
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 sono 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, viene 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, viene 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
Negli esempi di questa sezione viene illustrato come usare la sintassi per iniziare.
Impostare l'intervallo per la valutazione
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 |
Generare GUID fissi e dinamici
Nell'esempio seguente viene illustrato come usare toscalar()
per generare un guid
fisso, calcolato esattamente una volta e valori dinamici per guid
.
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 |