Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Applies to: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
A let statement is used to set a variable name equal to an expression or a function, or to create views.
let le istruzioni sono utili per:
- Suddividere un'espressione complessa in più parti, ognuna rappresentata da una variabile.
- Definizione di costanti esterne al corpo della query per la leggibilità.
- Definizione di una variabile una sola volta e uso più volte all'interno di una query.
Se la variabile in precedenza rappresentava un altro valore, ad esempio nelle istruzioni nidificate, si applica l'istruzione più let interna.
Per ottimizzare più usi dell'istruzione let all'interno di una singola query, vedere Ottimizzare le query che usano espressioni denominate.
Note
L'istruzione let associa un nome a un calcolo, non al valore valutato di tale calcolo. Questo comportamento significa che più riferimenti allo stesso nome possono restituire valori diversi a causa del calcolo valutato più volte. If this is not the desired behavior, use toscalar() or materialize().
Sintassi: espressioni scalari o tabulari
let
Name=Expression
Important
Le istruzioni Let devono essere seguite da un punto e virgola. Non possono esistere righe vuote tra istruzioni let o tra istruzioni let e altre istruzioni di query.
Learn more about syntax conventions.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| Name | string |
✔️ | Nome della variabile. È possibile eseguire l'escape del nome con parentesi quadre. Ad esempio: ["Name with spaces"]. |
| Expression | string |
✔️ | Espressione con un risultato scalare o tabulare. Ad esempio, un'espressione con un risultato scalare sarà let one=1;e un'espressione con un risultato tabulare sarà let RecentLog = Logs | where Timestamp > ago(1h). |
Sintassi: visualizzazione o funzione
let
Name= [view] ([ Parameters ]){FunctionBody}
Important
Le istruzioni Let devono essere seguite da un punto e virgola. Non possono esistere righe vuote tra istruzioni let o tra istruzioni let e altre istruzioni di query.
Learn more about syntax conventions.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| FunctionBody | string |
✔️ | Espressione che restituisce una funzione definita dall'utente. |
view |
string |
Rilevante solo per un'istruzione senza let parametro. Se utilizzata, l'istruzione let viene inclusa nelle query con un union operatore con selezione con caratteri jolly delle tabelle/viste. Per un esempio, vedere Creare una vista o una tabella virtuale. |
|
| Parameters | string |
Zero o più parametri di funzione tabulari o scalari delimitati da virgole. For each parameter of tabular type, the parameter should be in the format TableName :TableSchema, in which TableSchema is either a comma-separated list of columns in the format ColumnName:ColumnType or a wildcard (*). Se vengono specificate colonne, l'argomento tabulare di input deve contenere queste colonne. Se viene specificato un carattere jolly, l'argomento tabulare di input può avere qualsiasi schema. Per fare riferimento alle colonne nel corpo della funzione, è necessario specificare . Per esempi, vedere Argomento tabulare con schema e argomento tabulare con carattere jolly.For each parameter of scalar type, provide the parameter name and parameter type in the format Name :Type. The name can appear in the FunctionBody and is bound to a particular value when the user defined function is invoked. Gli unici tipi supportati sono bool, string, longdatetime, timespan, , real, dynamic, e gli alias a questi tipi. |
Note
- I parametri tabulari devono essere visualizzati prima dei parametri scalari.
- Le due istruzioni devono essere separate da un punto e virgola.
Examples
Gli esempi di query mostrano la sintassi e l'utilizzo di esempio dell'operatore, dell'istruzione o della funzione.
The examples in this article use publicly available tables in the help cluster, such as the
StormEventstable in the Samples database.
The examples in this article use publicly available tables, such as the
Weathertable in the Weather analytics sample gallery. Potrebbe essere necessario modificare il nome della tabella nella query di esempio in modo che corrisponda alla tabella nell'area di lavoro.
Definire valori scalari
Nell'esempio seguente viene utilizzata un'istruzione di espressione scalare.
let threshold = 50;
let region = "West";
datatable(Name:string, Score:int, Region:string)
[
"Alice", 45, "West",
"Bob", 60, "East",
"Charlie", 55, "West",
"Dana", 70, "North"
]
| where Score > threshold and Region == region
Output
| Name | Score | Region |
|---|---|---|
| Charlie | 55 | West |
Definire espressioni tabulari
Nell'esempio seguente viene associato il nome some number usando la ['name'] notazione e quindi lo usa in un'istruzione di espressione tabulare.
let ['some number'] = 20;
range y from 0 to ['some number'] step 5
Output
| y |
|---|
| 0 |
| 5 |
| 10 |
| 15 |
| 20 |
Creare una funzione definita dall'utente con calcolo scalare
Questo esempio usa l'istruzione let con argomenti per il calcolo scalare. La query definisce la funzione MultiplyByN per moltiplicare due numeri.
let MultiplyByN = (val:long, n:long) { val * n };
range x from 1 to 5 step 1
| extend result = MultiplyByN(x, 5)
Output
| x | result |
|---|---|
| 1 | 5 |
| 2 | 10 |
| 3 | 15 |
| 4 | 20 |
| 5 | 25 |
Creare una funzione definita dall'utente che taglia l'input
Nell'esempio seguente vengono rimossi quelli iniziali e finali dall'input.
let TrimOnes = (s:string) { trim("1", s) };
range x from 10 to 15 step 1
| extend result = TrimOnes(tostring(x))
Output
| x | result |
|---|---|
| 10 | 0 |
| 11 | |
| 12 | 2 |
| 13 | 3 |
| 14 | 4 |
| 15 | 5 |
Usare più istruzioni let
Questo esempio definisce due istruzioni let in cui un'istruzione (foo2) usa un altro valore (foo1).
let foo1 = (_start:long, _end:long, _step:long) { range x from _start to _end step _step};
let foo2 = (_step:long) { foo1(1, 100, _step)};
foo2(2) | count
Output
| result |
|---|
| 50 |
Creare una vista o una tabella virtuale
Questo esempio illustra come usare un'istruzione let per creare una view tabella virtuale o .
let Range10 = view () { range MyColumn from 1 to 10 step 1 };
let Range20 = view () { range MyColumn from 1 to 20 step 1 };
search MyColumn == 5
Output
| $table | MyColumn |
|---|---|
| Range10 | 5 |
| Range20 | 5 |
Usare una funzione di materializzazione
La funzione materialize() consente di memorizzare nella cache i risultati della sottoquery durante l'esecuzione della query. Quando si usa la materialize() funzione, i dati vengono memorizzati nella cache e qualsiasi chiamata successiva del risultato usa i dati memorizzati nella cache.
let TotalEventsbyLocation = StormEvents
| summarize TotalCount = count() by Location = BeginLocation;
let materializedScope = StormEvents
| summarize by EventType, Location = EndLocation;
let cachedResult = materialize(materializedScope);
cachedResult
| project EventType, Location
| join kind = inner
(
cachedResult
| project EventType, Location
)
on EventType
| where Location != ""
| summarize EventCount = count() by Location
| join kind = inner
TotalEventsbyLocation
on $left.Location == $right.Location
| project Location, EventCount, TotalCount, Percentage = EventCount * 100.0 / TotalCount
Output
| Location | EventCount | TotalCount | Percentage |
|---|---|---|---|
| MELBOURNE BEACH | 112 | 1 | 11,200 |
| EUSTIS | 13,854 | 12 | 115,450 |
| LOTTS | 6,910 | 1 | 691,000 |
| SERVICE | 997 | 1 | 99,700 |
| ... | ... | ... | ... |
Uso di istruzioni let annidate
Le istruzioni let annidate sono consentite, incluse all'interno di un'espressione di funzione definita dall'utente. Le istruzioni e gli argomenti let si applicano sia nell'ambito corrente che interno del corpo della funzione.
let start_time = ago(5h);
let end_time = start_time + 2h;
T | where Time > start_time and Time < end_time | ...
Argomento tabulare con schema
Nell'esempio seguente viene specificato che il parametro T table deve avere una colonna State di tipo string. La tabella T può includere anche altre colonne, ma non è possibile farvi riferimento nella funzione StateState perché non sono dichiarate.
let StateState=(T: (State: string)) { T | extend s_s=strcat(State, State) };
StormEvents
| invoke StateState()
| project State, s_s
Output
| State | s_s |
|---|---|
| ATLANTIC SOUTH | ATLANTIC SOUTHATLANTIC SOUTH |
| FLORIDA | FLORIDAFLORIDA |
| FLORIDA | FLORIDAFLORIDA |
| GEORGIA | GEORGIAGEORGIA |
| MISSISSIPPI | MISSISSIPPIMISSISSIPPI |
| ... | ... |
Argomento tabulare con carattere jolly
Il parametro T table può avere qualsiasi schema e la funzione CountRecordsInTable funzione funzionerà.
let CountRecordsInTable=(T: (*)) { T | count };
StormEvents | invoke CountRecordsInTable()
Output
| Count |
|---|
| 59,066 |