Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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 instructies zijn handig voor:
- Het opsplitsen van een complexe expressie in meerdere delen, elk vertegenwoordigd door een variabele.
- Constanten buiten de hoofdtekst van de query definiëren voor leesbaarheid.
- Een variabele eenmaal definiëren en meerdere keren gebruiken binnen een query.
Als de variabele eerder een andere waarde weergeeft, bijvoorbeeld in geneste instructies, is de binnenste let instructie van toepassing.
Zie letom meerdere toepassingen van de -instructie binnen één query te optimaliseren.
Note
De instructie let verbindt een naam aan een berekening, niet aan de geëvalueerde waarde van die berekening. Dit gedrag betekent dat meerdere verwijzingen naar dezelfde naam verschillende waarden kunnen retourneren omdat de berekening meerdere keren wordt geëvalueerd. If this is not the desired behavior, use toscalar() or materialize().
Syntaxis: Scalaire of tabellaire expressies
let
Name=Expression
Important
Let-instructies moeten worden gevolgd door een puntkomma. Er kunnen geen lege regels zijn tussen let-instructies of tussen let-instructies en andere query-instructies.
Learn more about syntax conventions.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| Name | string |
✔️ | De naam van de variabele. U kunt de naam met vierkante haken ontsnappen. Bijvoorbeeld ["Name with spaces"]. |
| Expression | string |
✔️ | Een expressie met een scalair of tabellair resultaat. Een expressie met een scalair resultaat zou bijvoorbeeld let one=1;zijn en een expressie met een tabellair resultaat zou let RecentLog = Logs | where Timestamp > ago(1h)zijn. |
Syntaxis: Weergave of functie
let
Name= [view] ([ Parameters ]){FunctionBody}
Important
Let-instructies moeten worden gevolgd door een puntkomma. Er kunnen geen lege regels zijn tussen let-instructies of tussen let-instructies en andere query-instructies.
Learn more about syntax conventions.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| FunctionBody | string |
✔️ | Een expressie die een door de gebruiker gedefinieerde functie oplevert. |
view |
string |
Alleen relevant voor een parameterloze let instructie. Wanneer deze wordt gebruikt, wordt de instructie let opgenomen in query's met een union operator met jokertekens van de tabellen/weergaven. Zie bijvoorbeeld Een weergave of virtuele tabel maken. |
|
| Parameters | string |
Nul of meer door komma's gescheiden parameters voor tabellaire of scalaire functies. 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 (*). Als er kolommen zijn opgegeven, moet het argument in tabelvorm van invoer deze kolommen bevatten. Als er een jokerteken is opgegeven, kan het argument tabellaire invoer elk schema hebben. Als u wilt verwijzen naar kolommen in de hoofdtekst van de functie, moeten ze worden opgegeven. Zie argument Tabellaire tabel met schema- en argument tabellaire tabel met jokertekens.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. De enige ondersteunde typen zijn bool, string, long, datetime, timespan, real, dynamicen de aliassen voor deze typen. |
Note
- Tabellaire parameters moeten worden weergegeven vóór scalaire parameters.
- Twee instructies moeten worden gescheiden door een puntkomma.
Examples
In de queryvoorbeelden ziet u de syntaxis en het voorbeeldgebruik van de operator, instructie of functie.
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. Mogelijk moet u de tabelnaam in de voorbeeldquery wijzigen zodat deze overeenkomt met de tabel in uw werkruimte.
Scalaire waarden definiëren
In het volgende voorbeeld wordt een scalaire expressie-instructie gebruikt.
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 |
Tabellaire expressies definiëren
In het volgende voorbeeld wordt de naam some number gekoppeld met behulp van de notatie ['name'] en wordt deze vervolgens gebruikt in een expressie-instructie in tabelvorm.
let ['some number'] = 20;
range y from 0 to ['some number'] step 5
Output
| y |
|---|
| 0 |
| 5 |
| 10 |
| 15 |
| 20 |
Een door de gebruiker gedefinieerde functie maken met scalaire berekening
In dit voorbeeld wordt de let-instructie gebruikt met argumenten voor scalaire berekeningen. De query definieert functie-MultiplyByN voor het vermenigvuldigen van twee getallen.
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 |
Een door de gebruiker gedefinieerde functie maken waarmee invoer wordt geknipt
In het volgende voorbeeld worden voorloop- en volgvolgende items uit de invoer verwijderd.
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 |
Meerdere let-instructies gebruiken
In dit voorbeeld worden twee let-instructies gedefinieerd waarbij één instructie (foo2) een andere instructie (foo1) gebruikt.
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 |
Een weergave of virtuele tabel maken
In dit voorbeeld ziet u hoe u een let-instructie gebruikt om een view of virtuele tabel te maken.
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 |
Een materialize-functie gebruiken
Met de functie materialize() kunt u subqueryresultaten opslaan tijdens het uitvoeren van query's. Wanneer u de functie materialize() gebruikt, worden de gegevens in de cache opgeslagen en worden bij elke volgende aanroep van het resultaat gegevens in de cache gebruikt.
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 |
| ... | ... | ... | ... |
Geneste let-instructies gebruiken
Geneste let-instructies zijn toegestaan, inclusief binnen een door de gebruiker gedefinieerde functie-expressie. Laat instructies en argumenten toepassen in zowel het huidige als het binnenste bereik van de hoofdtekst van de functie.
let start_time = ago(5h);
let end_time = start_time + 2h;
T | where Time > start_time and Time < end_time | ...
Argument in tabelvorm met schema
In het volgende voorbeeld wordt aangegeven dat de tabelparameter T een kolom moet hebben State van het type string. De tabel T kan ook andere kolommen bevatten, maar er kan niet naar worden verwezen in de functie StateState omdat deze niet zijn gedeclareerd.
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 | ATLANTISCHE ZUIDATLANTISCHE ZUID |
| FLORIDA | FLORIDAFLORIDA |
| FLORIDA | FLORIDAFLORIDA |
| GEORGIA | GEORGIAGEORGIA |
| MISSISSIPPI | MISSISSIPPIMISSISSIPPI |
| ... | ... |
Argument in tabelvorm met jokerteken
De tabelparameter T elk schema kan hebben en de functie CountRecordsInTable werkt.
let CountRecordsInTable=(T: (*)) { T | count };
StormEvents | invoke CountRecordsInTable()
Output
| Count |
|---|
| 59,066 |