Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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.
Les instructions let sont utiles pour :
- Décomposer une expression complexe en plusieurs parties, chacune étant représentée par une variable.
- Définir des constantes en dehors du corps de la requête, pour des raisons de lisibilité.
- Définir une variable une seule fois et l’utiliser plusieurs fois dans une requête.
Si la variable représentait auparavant une autre valeur, par exemple dans des instructions imbriquées, l’instruction let la plus à l’intérieur s’applique.
Pour optimiser plusieurs utilisations de l’instruction let dans une même requête, consultez Optimiser les requêtes qui utilisent des expressions nommées.
Note
L’instruction let lie un nom à un calcul, et non à la valeur évaluée de ce calcul. Ce comportement signifie que plusieurs références au même nom peuvent retourner différentes valeurs en raison du calcul évalué plusieurs fois. If this is not the desired behavior, use toscalar() or materialize().
Syntaxe : expressions scalaires ou tabulaires
let
Name=Expression
Important
Les instructions let doivent être suivies d’un point-virgule. Il ne peut pas y avoir de ligne vide entre les instructions let ou entre les instructions let et d’autres instructions de requête.
Learn more about syntax conventions.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| Name | string |
✔️ | Nom de la variable. Vous pouvez placer le nom en échappement avec des crochets. Par exemple : ["Name with spaces"]. |
| Expression | string |
✔️ | Une expression avec un résultat scalaire ou tabulaire. Par exemple, une expression avec un résultat scalaire serait let one=1;, et une expression avec un résultat tabulaire serait let RecentLog = Logs | where Timestamp > ago(1h). |
Syntaxe : vue ou fonction
let
Name= [view] ([ Parameters ]){FunctionBody}
Important
Les instructions let doivent être suivies d’un point-virgule. Il ne peut pas y avoir de ligne vide entre les instructions let ou entre les instructions let et d’autres instructions de requête.
Learn more about syntax conventions.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| FunctionBody | string |
✔️ | Une expression qui produit une fonction définie par l’utilisateur. |
view |
string |
Concerne seulement une instruction let sans paramètres. Quand elle est utilisée, l’instruction let est incluse dans les requêtes avec un opérateur union, avec une sélection de caractères génériques des tables/vues. Pour obtenir un exemple, consultez Créer une vue ou une table virtuelle. |
|
| Parameters | string |
Zéro ou plusieurs paramètres de fonction tabulaires ou scalaires, séparés par une virgule. 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 (*). Si des colonnes sont spécifiées, l’argument tabulaire d’entrée doit contenir ces colonnes. Si un caractère générique est spécifié, l’argument tabulaire d’entrée peut avoir n’importe quel schéma. Pour référencer des colonnes dans le corps de la fonction, elles doivent être spécifiées. Pour obtenir des exemples, consultez Argument tabulaire avec schéma et Argument tabulaire avec caractère générique.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. Les seuls types pris en charge sont bool, string, longdatetime, timespan, real, dynamic et les alias de ces types. |
Note
- Les paramètres tabulaires doivent apparaître avant les paramètres scalaires.
- Deux instructions doivent être séparées par un point-virgule.
Examples
Les exemples de requête montrent la syntaxe et l’utilisation de l’opérateur, de l’instruction ou de la fonction.
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. Vous devrez peut-être modifier le nom de la table dans l’exemple de requête pour qu’elle corresponde à la table de votre espace de travail.
Définir des valeurs scalaires
L’exemple suivant utilise une instruction d’expression scalaire.
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 |
Définir des expressions tabulaires
L’exemple suivant lie le nom some number en utilisant la notation ['name'], puis l’utilise dans une instruction d’expression tabulaire.
let ['some number'] = 20;
range y from 0 to ['some number'] step 5
Output
| y |
|---|
| 0 |
| 5 |
| 10 |
| 15 |
| 20 |
Créer une fonction définie par l’utilisateur avec un calcul scalaire
L’exemple suivant utilise l’instruction Let avec des arguments pour le calcul scalaire. La requête définit la fonction MultiplyByN pour la multiplication de deux nombres.
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 |
Créer une fonction définie par l’utilisateur qui supprime les espaces de l’entrée
L’exemple suivant supprime les espaces de début et de fin de l’entrée.
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 |
Utiliser plusieurs instructions Let
Cet exemple définit deux instructions Let où une instruction (foo2) en utilise une autre (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 |
Créer une vue ou une table virtuelle
Cet exemple vous montre comment utiliser une instruction let pour créer une view ou une table virtuelle.
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 |
Utiliser une fonction materialize
La fonction materialize() vous permet de mettre en cache les résultats de la sous-requête au moment de l’exécution de la requête. Quand vous utilisez la fonction materialize(), les données sont mises en cache et toute appel ultérieur du résultat utilise les données mises en 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 |
| ... | ... | ... | ... |
Utilisation d’instructions let imbriquées
Les instructions let imbriquées sont autorisées, y compris dans une expression de fonction définie par l’utilisateur. Les instructions et les arguments Let s’appliquent à la fois dans l’étendue active et intérieure du corps de la fonction.
let start_time = ago(5h);
let end_time = start_time + 2h;
T | where Time > start_time and Time < end_time | ...
Argument tabulaire avec schéma
L’exemple suivant spécifie que le paramètre de table Tdoit avoir une colonne State de type string. La table T peut également inclure d’autres colonnes, mais elles ne peuvent pas être référencées dans la fonction StateState, car elles ne sont pas déclarées.
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 | ATLANTIQUE SUDATLANTIC SUD |
| FLORIDA | FLORIDAFLORIDA |
| FLORIDA | FLORIDAFLORIDA |
| GEORGIA | GEORGIAGEORGIA |
| MISSISSIPPI | MISSISSIPPIMISSISSIPPI |
| ... | ... |
Argument tabulaire avec caractère générique
Le paramètre de table T peut avoir n’importe quel schéma, et la fonction CountRecordsInTable va fonctionner.
let CountRecordsInTable=(T: (*)) { T | count };
StormEvents | invoke CountRecordsInTable()
Output
| Count |
|---|
| 59,066 |