Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 instrukcje są przydatne w następujących celach:
- Podzielenie złożonego wyrażenia na wiele części, z których każda jest reprezentowana przez zmienną.
- Definiowanie stałych poza treścią zapytania w celu zapewnienia czytelności.
- Definiowanie zmiennej raz i używanie jej wiele razy w zapytaniu.
Jeśli zmienna wcześniej reprezentowała inną wartość, na przykład w instrukcjach zagnieżdżonych, stosuje się najbardziej let wewnętrzną instrukcję.
Aby zoptymalizować wiele zastosowań instrukcji let w ramach jednego zapytania, zobacz Optymalizowanie zapytań używających nazwanych wyrażeń.
Note
Instrukcja let wiąże nazwę z obliczeniami, a nie z obliczoną wartością tego obliczenia. To zachowanie oznacza, że wiele odwołań do tej samej nazwy może zwracać różne wartości ze względu na wielokrotne obliczanie obliczeń. If this is not the desired behavior, use toscalar() or materialize().
Składnia: wyrażenia skalarne lub tabelaryczne
let
Name=Expression
Important
Instrukcje Let muszą być zgodne ze średnikiem. Nie może istnieć puste wiersze między instrukcjami let lub między instrukcjami let i innymi instrukcjami zapytania.
Learn more about syntax conventions.
Parameters
| Name | Typ | Required | Description |
|---|---|---|---|
| Name | string |
✔️ | Nazwa zmiennej. Możesz uciec od nazwy za pomocą nawiasów kwadratowych. Na przykład ["Name with spaces"]. |
| Expression | string |
✔️ | Wyrażenie z wynikiem skalarnym lub tabelarycznym. Na przykład wyrażenie z wynikiem skalarnym będzie let one=1;miało wartość , a wyrażenie z wynikiem tabelarycznym to let RecentLog = Logs | where Timestamp > ago(1h). |
Składnia: Wyświetlanie lub funkcja
let
Name= [view] ([ Parameters ]){FunctionBody}
Important
Instrukcje Let muszą być zgodne ze średnikiem. Nie może istnieć puste wiersze między instrukcjami let lub między instrukcjami let i innymi instrukcjami zapytania.
Learn more about syntax conventions.
Parameters
| Name | Typ | Required | Description |
|---|---|---|---|
| FunctionBody | string |
✔️ | Wyrażenie, które daje funkcję zdefiniowaną przez użytkownika. |
view |
string |
Dotyczy tylko instrukcji bez let parametrów. W przypadku użycia instrukcja let jest uwzględniana w zapytaniach z operatorem z wyborem union symboli wieloznacznych tabel/widoków. Aby zapoznać się z przykładem, zobacz Tworzenie widoku lub tabeli wirtualnej. |
|
| Parameters | string |
Zero lub więcej parametrów funkcji rozdzielonych przecinkami tabelarycznych lub skalarnych. 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 (*). Jeśli określono kolumny, argument tabelaryczny danych wejściowych musi zawierać te kolumny. Jeśli zostanie określony symbol wieloznaczny, argument tabelaryczny danych wejściowych może mieć dowolny schemat. Aby odwołać się do kolumn w treści funkcji, należy je określić. Przykłady można znaleźć w temacie Tabelaryczny argument ze schematem i argumentem tabelarycznym z symbolami wieloznacznymi.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. Jedynymi obsługiwanymi typami są bool, , stringlongdatetimetimespanreal, dynamici aliasy dla tych typów. |
Note
- Parametry tabelaryczne muszą pojawić się przed parametrami skalarnym.
- Wszystkie dwie instrukcje muszą być oddzielone średnikiem.
Examples
Przykłady zapytań pokazują składnię i przykładowe użycie operatora, instrukcji lub funkcji.
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. Może być konieczne zmodyfikowanie nazwy tabeli w przykładowym zapytaniu, aby było zgodne z tabelą w obszarze roboczym.
Definiowanie wartości skalarnych
W poniższym przykładzie użyto instrukcji wyrażenia skalarnego.
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 |
Definiowanie wyrażeń tabelarycznych
Poniższy przykład wiąże nazwę some number przy użyciu ['name'] notacji, a następnie używa jej w instrukcji wyrażenia tabelarycznego.
let ['some number'] = 20;
range y from 0 to ['some number'] step 5
Output
| y |
|---|
| 0 |
| 5 |
| 10 |
| 15 |
| 20 |
Tworzenie funkcji zdefiniowanej przez użytkownika przy użyciu obliczeń skalarnych
W tym przykładzie użyto instrukcji let z argumentami dla obliczeń skalarnych. Zapytanie definiuje funkcję MultiplyByN mnożenia dwóch liczb.
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 |
Tworzenie funkcji zdefiniowanej przez użytkownika, która przycina dane wejściowe
Poniższy przykład usuwa wiodące i końcowe z danych wejściowych.
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 |
Używanie wielu instrukcji let
W tym przykładzie zdefiniowano dwie instrukcje let, w których jedna instrukcja (foo2) używa innej (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 |
Tworzenie widoku lub tabeli wirtualnej
W tym przykładzie pokazano, jak utworzyć tabelęview lub za pomocą instrukcji let.
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 |
Używanie funkcji materializowania
Funkcja materialize() umożliwia buforowanie wyników podzapytania w czasie wykonywania zapytania. Gdy używasz materialize() funkcji, dane są buforowane, a każde kolejne wywołanie wyniku używa buforowanych danych.
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 |
| ... | ... | ... | ... |
Używanie zagnieżdżonych instrukcji let
Zagnieżdżone instrukcje let są dozwolone, w tym w wyrażeniu funkcji zdefiniowanej przez użytkownika. Instrukcje i argumenty let mają zastosowanie zarówno w bieżącym, jak i wewnętrznym zakresie treści funkcji.
let start_time = ago(5h);
let end_time = start_time + 2h;
T | where Time > start_time and Time < end_time | ...
Tabelaryczny argument ze schematem
W poniższym przykładzie określono, że parametr T tabeli musi mieć kolumnę State typu string. Tabela T może również zawierać inne kolumny, ale nie można odwoływać się do nich w funkcji StateState , ponieważ nie są zadeklarowane.
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 | POŁUDNIOWOALANTYCZNY POŁUDNIOWY ATLANTYK |
| FLORIDA | FLORIDAFLORIDA |
| FLORIDA | FLORIDAFLORIDA |
| GEORGIA | GEORGIAGEORGIA |
| MISSISSIPPI | MISSISSIPPIMISSISSIPPI |
| ... | ... |
Argument tabelaryczny z symbolem wieloznacznym
Parametr T tabeli może mieć dowolny schemat, a funkcja CountRecordsInTable będzie działać.
let CountRecordsInTable=(T: (*)) { T | count };
StormEvents | invoke CountRecordsInTable()
Output
| Count |
|---|
| 59,066 |