Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Szolgáltatások váltása a Verzió legördülő listával. További információ a navigációról.
A következőkre vonatkozik: ✅ Microsoft Fabric ✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft Sentinel
Az let utasítás egy kifejezéssel vagy függvénysel egyenlő változónév beállítására, illetve nézetek létrehozására szolgál.
let utasítások a következőkhöz hasznosak:
- Összetett kifejezés több részre bontása, amelyeket egy változó jelöl.
- A lekérdezés törzsén kívüli állandók definiálása az olvashatóság érdekében.
- Változó definiálása egyszer és többször egy lekérdezésen belül.
Ha a változó korábban egy másik értéket, például beágyazott utasításokban jelent meg, a legbelső let utasítás érvényes.
A let utasítás több használatának optimalizálásáról az Elnevezett kifejezéseket használó lekérdezések optimalizálásacímű témakörben olvashat.
Note
A let utasítás a nevet egy számításhoz köti, nem pedig a számítás kiértékelt értékéhez. Ez a viselkedés azt jelenti, hogy több, ugyanarra a névre mutató hivatkozás is visszaadhat különböző értékeket, mivel a számítást többször is kiértékelik. Ha nem ez a kívánt viselkedés, használja a toscalar() vagy materialize()t.
Szintaxis: Skaláris vagy táblázatos kifejezések
let
Név=Kifejezés
Important
Az utasításokat pontosvesszővel kell követni. A let utasítás vagy a let utasítás és más lekérdezési utasítások között nem lehetnek üres sorok.
További információ szintaxiskonvenciákról.
Parameters
| Name | Típus | Required | Description |
|---|---|---|---|
| Name | string |
✔️ | A változó neve. A név elől szögletes zárójelekkel is el lehet menekülni. Például ["Name with spaces"]. |
| Expression | string |
✔️ | Skaláris vagy táblázatos eredményt tartalmazó kifejezés. Egy skaláris eredményt tartalmazó kifejezés például let one=1;, a táblázatos eredményt tartalmazó kifejezés pedig let RecentLog = Logs | where Timestamp > ago(1h). |
Szintaxis: Nézet vagy függvény
let
Név= [view] ([ Paraméterek ]){FunctionBody}
Important
Az utasításokat pontosvesszővel kell követni. A let utasítás vagy a let utasítás és más lekérdezési utasítások között nem lehetnek üres sorok.
További információ szintaxiskonvenciákról.
Parameters
| Name | Típus | Required | Description |
|---|---|---|---|
| FunctionBody | string |
✔️ | Felhasználó által definiált függvényt eredményező kifejezés. |
view |
string |
Csak paraméter nélküli let utasítás esetében releváns. Használat esetén a let utasítást egy union operátorral rendelkező lekérdezések tartalmazzák, és helyettesítő karaktereket választanak ki a táblákból/nézetekből. Példa: Nézet vagy virtuális tábla létrehozása. |
|
| Parameters | string |
Nulla vagy több vesszővel tagolt táblázatos vagy skaláris függvényparaméter. Minden táblázatos típusú paraméternél a paraméternek TableName :TableSchema formátumban kell lennie, amelyben a TableSchema vagy a ColumnName:ColumnType formátumú oszlopok vesszővel tagolt listája vagy helyettesítő karakter (*). Ha oszlopok vannak megadva, akkor a bemeneti táblázatos argumentumnak tartalmaznia kell ezeket az oszlopokat. Ha helyettesítő karakter van megadva, a bemeneti táblázatos argumentum bármilyen sémával rendelkezhet. A függvény törzsében lévő oszlopokra való hivatkozáshoz meg kell adni őket. Példák: Táblázatos argumentum séma és Táblázatos argumentum helyettesítő karakterekkel.Minden skaláris típusú paraméterhez adja meg a paraméter nevét és paramétertípusátnévtípus :. A név megjelenhet a FunctionBodyban , és egy adott értékhez van kötve a felhasználó által definiált függvény meghívásakor. Az egyetlen támogatott típus az bool, string, long, datetime, timespan, real, dynamicés az ilyen típusok aliasai. |
Note
- A táblázatos paramétereknek a skaláris paraméterek előtt kell megjelennie.
- A két utasítást pontosvesszővel kell elválasztani.
Examples
A lekérdezési példák az operátor, utasítás vagy függvény szintaxisát és példahasználatát mutatják be.
A cikkben szereplő példák nyilvánosan elérhető táblákat használnak a súgófürtben, például a
StormEventsMintaadatbázis tábláját.
A cikkben szereplő példák nyilvánosan elérhető táblákat használnak, például a
WeatherWeather Analytics mintagyűjteményében található táblázatot. Előfordulhat, hogy módosítania kell a tábla nevét a példa lekérdezésben, hogy megfeleljen a munkaterület táblájának.
Skaláris értékek definiálása
Az alábbi példa skaláris kifejezési utasítást használ.
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 |
Táblázatos kifejezések definiálása
Az alábbi példa a some number jelöléssel köti össze a nevet ['name'], majd egy táblázatos kifejezési utasításban használja.
let ['some number'] = 20;
range y from 0 to ['some number'] step 5
Output
| y |
|---|
| 0 |
| 5 |
| 10 |
| 15 |
| 20 |
Felhasználó által definiált függvény létrehozása skaláris számítással
Ez a példa a let utasítást használja argumentumokkal a skaláris számításhoz. A lekérdezés két szám szorzásához MultiplyByN függvényt definiál.
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 |
Felhasználó által definiált függvény létrehozása, amely kivágja a bemenetet
Az alábbi példa eltávolítja a bevezető és a záró elemeket a bemenetből.
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 |
Több let utasítás használata
Ez a példa két let utasítást határoz meg, amelyekben az egyik utasítás (foo2) egy másikat (foo1) használ.
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 |
Nézet vagy virtuális tábla létrehozása
Ez a példa bemutatja, hogyan hozhat létre let utasítást view vagy virtuális tábla.
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 |
Materialize függvény használata
A materialize() függvény lehetővé teszi az alkérések eredményeinek gyorsítótárazását a lekérdezés végrehajtása során. A materialize() függvény használatakor az adatok gyorsítótárazva lesznek, és az eredmény későbbi meghívása gyorsítótárazott adatokat használ.
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 |
| ... | ... | ... | ... |
Beágyazott let utasítások használata
A beágyazott let utasítások engedélyezettek, beleértve a felhasználó által definiált függvénykifejezéseket is. Hagyja, hogy az utasítások és az argumentumok a függvény törzsének aktuális és belső hatókörére is vonatkozzanak.
let start_time = ago(5h);
let end_time = start_time + 2h;
T | where Time > start_time and Time < end_time | ...
Táblázatos argumentum séma használatával
Az alábbi példa azt határozza meg, hogy a T táblaparaméternek State típusú oszlopnak stringkell lennie. A T tábla más oszlopokat is tartalmazhat, de a függvény nem hivatkozhat rájuk StateState, mert nincsenek deklarálva.
let StateState=(T: (State: string)) { T | extend s_s=strcat(State, State) };
StormEvents
| invoke StateState()
| project State, s_s
Output
| State | s_s |
|---|---|
| DÉL-ATLANTI | ATLANTI-ÓCEÁN DÉL-ATLANTI DÉLI RÉGIÓJA |
| FLORIDA | FLORIDAFLORIDA |
| FLORIDA | FLORIDAFLORIDA |
| GEORGIA | GEORGIAGEORGIA |
| MISSISSIPPI | MISSISSIPPIMISSISSIPPI |
| ... | ... |
Táblázatos argumentum helyettesítő karakterrel
A T táblaparaméter bármilyen sémával rendelkezhet, és a CountRecordsInTable függvény működni fog.
let CountRecordsInTable=(T: (*)) { T | count };
StormEvents | invoke CountRecordsInTable()
Output
| Count |
|---|
| 59,066 |