Let utasítás

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 Weather Weather 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