Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Přepněte služby pomocí rozevíracího seznamu Verze . Přečtěte si další informace o navigaci.
Platí pro: ✅ Microsoft Fabric ✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft Sentinel
Příkaz let slouží k nastavení názvu proměnné, který se rovná výrazu nebo funkci, nebo k vytvoření zobrazení.
let příkazy jsou užitečné pro:
- Rozdělení komplexního výrazu do několika částí, které jsou reprezentované proměnnou
- Definování konstant mimo tělo dotazu pro čitelnost
- Definování proměnné jednou a jeho použití několikrát v dotazu.
Pokud proměnná dříve reprezentovala jinou hodnotu, například v vnořených příkazech, použije se nejvnitřnější let příkaz.
Pokud chcete optimalizovat více použití let příkazu v rámci jednoho dotazu, přečtěte si téma Optimalizace dotazů, které používají pojmenované výrazy.
Note
Příkaz let vytvoří vazbu názvu na výpočet, nikoli na vyhodnocenou hodnotu daného výpočtu. Toto chování znamená, že více odkazů na stejný název může vrátit různé hodnoty z důvodu výpočtu, který se vyhodnocuje vícekrát. Pokud se nejedná o požadované chování, použijte toscalar() nebo materialize().
Syntaxe: Skalární nebo tabulkové výrazy
let
Jméno=Výraz
Important
Příkazy Let musí následovat středník. Mezi příkazy let nebo mezi příkazy let a jinými příkazy dotazu nesmí existovat žádné prázdné řádky.
Přečtěte si další informace o konvencích syntaxe.
Parameters
| Name | Typ | Required | Description |
|---|---|---|---|
| Name | string |
✔️ | Název proměnné. Název můžete utéct závorkami. Například ["Name with spaces"]. |
| Expression | string |
✔️ | Výraz se skalárním nebo tabulkovým výsledkem. Například výraz s skalárním výsledkem by byl let one=1;a výraz s tabulkovým výsledkem by byl let RecentLog = Logs | where Timestamp > ago(1h). |
Syntaxe: Zobrazení nebo funkce
let
Jméno= [view] ([ Parametry ]){FunctionBody}
Important
Příkazy Let musí následovat středník. Mezi příkazy let nebo mezi příkazy let a jinými příkazy dotazu nesmí existovat žádné prázdné řádky.
Přečtěte si další informace o konvencích syntaxe.
Parameters
| Name | Typ | Required | Description |
|---|---|---|---|
| FunctionBody | string |
✔️ | Výraz, který poskytuje uživatelem definovanou funkci. |
view |
string |
Relevantní pouze pro příkaz bez let parametru. Při použití se příkaz let zahrne do dotazů s operátorem union s výběrem zástupných znaků tabulek/zobrazení. Příklad najdete v tématu Vytvoření zobrazení nebo virtuální tabulky. |
|
| Parameters | string |
Nula nebo více tabulkových nebo skalárních parametrů tabulkových nebo skalárních funkcí oddělených čárkami. Pro každý parametr tabulkového typu by měl být parametr ve formátu TableName :TableSchema, ve kterém TableSchema je seznam sloupců oddělený čárkami ve formátu ColumnName:ColumnType nebo zástupný znak (*). Pokud jsou zadány sloupce, vstupní tabulkový argument musí obsahovat tyto sloupce. Pokud je zadán zástupný znak, může vstupní tabulkový argument obsahovat jakékoli schéma. Pokud chcete odkazovat na sloupce v těle funkce, musí být zadány. Příklady najdete v tabulkovém argumentu se schématem a tabulkovým argumentem se zástupným znakem.Pro každý parametr skalárního typu zadejte název parametru a typ parametru ve formátu Name :Type. Název se může objevit v funkci FunctionBody a je vázán na určitou hodnotu při vyvolání uživatelem definované funkce. Jedinými podporovanými typy jsou bool, , string, longdatetimetimespanreal, , , dynamica aliasy pro tyto typy. |
Note
- Tabulkové parametry musí být uvedeny před skalárními parametry.
- Všechny dva příkazy musí být oddělené středníkem.
Examples
Příklady dotazu ukazují syntaxi a příklad použití operátoru, příkazu nebo funkce.
Příklady v tomto článku používají veřejně dostupné tabulky v clusteru nápovědy, jako je
StormEventstabulka v databázi Ukázky.
Příklady v tomto článku používají veřejně dostupné tabulky, například
Weathertabulku v galerii ukázek analýzy počasí. Možná budete muset změnit název tabulky v ukázkovém dotazu tak, aby odpovídal tabulce v pracovním prostoru.
Definování skalárních hodnot
Následující příklad používá příkaz skalárního výrazu.
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 |
Definování tabulkových výrazů
Následující příklad vytvoří vazbu názvu some number pomocí zápisu ['name'] a pak ho použije v tabulkovém příkazu výrazu.
let ['some number'] = 20;
range y from 0 to ['some number'] step 5
Output
| y |
|---|
| 0 |
| 5 |
| 10 |
| 15 |
| 20 |
Vytvoření uživatelem definované funkce pomocí skalárního výpočtu
Tento příklad používá příkaz let s argumenty pro skalární výpočet. Dotaz definuje funkci MultiplyByN pro násobení dvou čísel.
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 |
Vytvoření uživatelem definované funkce, která oříznou vstup
Následující příklad odebere úvodní a koncové položky ze vstupu.
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 |
Použití více příkazů let
Tento příklad definuje dva příkazy let, kde jeden příkaz (foo2) používá jiný (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 |
Vytvoření zobrazení nebo virtuální tabulky
Tento příklad ukazuje, jak pomocí příkazu let vytvořit view nebo virtuální tabulku.
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 |
Použití materializace funkce
Funkce materialize() umožňuje ukládat výsledky poddotazů do mezipaměti během provádění dotazu. Při použití materialize() funkce se data ukládají do mezipaměti a jakékoli následné vyvolání výsledku používá data uložená v mezipaměti.
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 |
| LOTTY | 6,910 | 1 | 691,000 |
| SERVICE | 997 | 1 | 99,700 |
| ... | ... | ... | ... |
Použití vnořených příkazů let
Vnořené příkazy let jsou povolené, včetně výrazu uživatelem definované funkce. Příkazy a argumenty let se použijí v aktuálním i vnitřním rozsahu těla funkce.
let start_time = ago(5h);
let end_time = start_time + 2h;
T | where Time > start_time and Time < end_time | ...
Tabulkový argument se schématem
Následující příklad určuje, že parametr T tabulky musí mít sloupec State typu string. Tabulka T může obsahovat i jiné sloupce, ale na ně nelze ve funkci StateState odkazovat, protože nejsou deklarovány.
let StateState=(T: (State: string)) { T | extend s_s=strcat(State, State) };
StormEvents
| invoke StateState()
| project State, s_s
Output
| State | s_s |
|---|---|
| ATLANTICKÝ JIH | ATLANTIC SOUTHATLANTIC SOUTH |
| FLORIDA | FLORIDAFLORIDA |
| FLORIDA | FLORIDAFLORIDA |
| GEORGIA | GEORGIAGEORGIA |
| MISSISSIPPI | MISSISSIPPIMISSISSIPPI |
| ... | ... |
Tabulkový argument se zástupným znakem
Parametr tabulky T může mít jakékoli schéma a funkce CountRecordsInTable bude fungovat.
let CountRecordsInTable=(T: (*)) { T | count };
StormEvents | invoke CountRecordsInTable()
Output
| Count |
|---|
| 59,066 |