Let utasítás
Az let
utasítás egy kifejezéssel vagy függvénnyel egyenlő változónév beállítására, illetve nézetek létrehozására szolgál.
let
az utasítások a következőkhöz hasznosak:
- Egy ö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 jelentett, például beágyazott utasításokban, akkor a legbelső let
utasítás lesz alkalmazva.
Ha egyetlen lekérdezésben szeretné optimalizálni az let
utasítás több használatát, tekintse meg a nevesített kifejezéseket használó lekérdezések optimalizálását ismertető cikket.
Megjegyzés
Az 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 eltérő értéket adhat vissza, mivel a számítást többször is kiértékelték. Ha nem ez a kívánt viselkedés, használja a toscalar() vagy materialize() függvényt.
Szintaxis: Skaláris vagy táblázatos kifejezések
let
Név=
Kifejezés
Fontos
Az utasításokat pontosvesszővel kell követni. Nem lehetnek üres sorok a let utasítások, illetve a let utasítások és más lekérdezési utasítások között.
További információ a szintaxis konvenciókról.
Paraméterek
Név | Típus | Kötelező | Leírás |
---|---|---|---|
Név | string |
✔️ | A változó neve. A nevet szögletes zárójelekkel feloldhatja. Például: ["Name with spaces"] . |
Expression | string |
✔️ | Skaláris vagy táblázatos eredményt tartalmazó kifejezés. Egy skaláris eredményt let one=1; tartalmazó kifejezés például a , a táblázatos eredményű kifejezés pedig let RecentLog = Logs | where Timestamp > ago(1h) . |
Szintaxis: Nézet vagy függvény
let
Név=
[view
] (
[ Paraméterek ])
{
FunctionBody}
Fontos
Az utasításokat pontosvesszővel kell követni. Nem lehetnek üres sorok a let utasítások, illetve a let utasítások és más lekérdezési utasítások között.
További információ a szintaxis konvenciókról.
Paraméterek
Név | Típus | Kötelező | Leírás |
---|---|---|---|
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én releváns. Használat esetén a utasítás szerepel a let táblák/nézetek helyettesítő karakteres kijelölésével rendelkező operátorral rendelkező union lekérdezésekben. Példa: Nézet vagy virtuális tábla létrehozása. |
|
Paraméterek | 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éter esetében a paraméternek TableName : TableSchema formátumban kell lennie, amelyben a TableSchema oszlopainak vesszővel tagolt listája ColumnName: ColumnType 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, akkor 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ért lásd: Táblázatos argumentum séma ésTáblázatos argumentum helyettesítő karakterrel.Minden skaláris típusú paraméterhez adja meg a paraméter nevét és a paraméter típusát a Név : típusa formátumban. 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 a bool , string , long , datetime , timespan , real , dynamic és az ilyen típusok aliasai. |
Megjegyzés
- 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.
Példák
Skaláris értékek definiálása
Az alábbi példa egy skaláris kifejezésutasítást használ.
let n = 10; // number
let place = "Dallas"; // string
let cutoff = ago(62d); // datetime
Events
| where timestamp > cutoff
and city == place
| take n
Az alábbi példa a nevet some number
a ['name']
jelöléssel köti össze, majd egy táblázatos kifejezésutasításban használja.
let ['some number'] = 20;
range y from 0 to ['some number'] step 5
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 függvényt MultiplyByN
határoz meg két szám szorzásához.
let MultiplyByN = (val:long, n:long) { val * n };
range x from 1 to 5 step 1
| extend result = MultiplyByN(x, 5)
Kimenet
x | result |
---|---|
1 | 5 |
2 | 10 |
3 | 15 |
4 | 20 |
5 | 25 |
Felhasználó által definiált függvény létrehozása, amely levágja a bemenetet
Az alábbi példa eltávolítja a kezdő és 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))
Kimenet
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 definiál, 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
Kimenet
result |
---|
50 |
Nézet vagy virtuális tábla létrehozása
Ez a példa bemutatja, hogyan hozhat létre view
egy vagy virtuális táblát let utasítással.
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
Kimenet
$table | MyColumn |
---|---|
Tartomány10 | 5 |
Tartomány20 | 5 |
Materialize függvény használata
A materialize()
függvény lehetővé teszi a lekérdezések eredményeinek gyorsítótárazását a lekérdezés végrehajtása során. A függvény használatakor a materialize()
rendszer gyorsítótárazza az adatokat, és az eredmény minden későbbi meghívása gyorsítótárazott adatokat használ.
let totalPagesPerDay = PageViews
| summarize by Page, Day = startofday(Timestamp)
| summarize count() by Day;
let materializedScope = PageViews
| summarize by Page, Day = startofday(Timestamp);
let cachedResult = materialize(materializedScope);
cachedResult
| project Page, Day1 = Day
| join kind = inner
(
cachedResult
| project Page, Day2 = Day
)
on Page
| where Day2 > Day1
| summarize count() by Day1, Day2
| join kind = inner
totalPagesPerDay
on $left.Day1 == $right.Day
| project Day1, Day2, Percentage = count_*100.0/count_1
Kimenet
1. nap | 2. nap | Százalék |
---|---|---|
2016-05-01 00:00:00.0000000 | 2016-05-02 00:00:00.0000000 | 34.0645725975255 |
2016-05-01 00:00:00.0000000 | 2016-05-03 00:00:00.0000000 | 16.618368960101 |
2016-05-02 00:00:00.0000000 | 2016-05-03 00:00:00.0000000 | 14.6291376489636 |
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émával
Az alábbi példa azt határozza meg, hogy a táblaparaméternek T
egy típusú string
oszloppal State
kell rendelkeznie. A tábla T
más oszlopokat is tartalmazhat, de nem hivatkozhatók rájuk a függvényben StateState
, mert a nincs deklarálva.
let StateState=(T: (State: string)) { T | extend s_s=strcat(State, State) };
StormEvents
| invoke StateState()
| project State, s_s
Kimenet
Állapot | s_s |
---|---|
ATLANTI-ÓCEÁN DÉLI RÉGIÓJA | ATLANTI-ÓCEÁN DÉL-ATLANTI DÉLI RÉGIÓJA |
FLORIDA | FLORIDAFLORIDA |
FLORIDA | FLORIDAFLORIDA |
GRÚZIA | GEORGIAGEORGIA |
MISSISSIPPI | MISSISSIPPIMISSISSIPPI |
... | ... |
Táblázatos argumentum helyettesítő karakterrel
A táblaparaméter T
bármilyen sémával rendelkezhet, és a függvény CountRecordsInTable
működni fog.
let CountRecordsInTable=(T: (*)) { T | count };
StormEvents | invoke CountRecordsInTable()
Kimenet
Darabszám |
---|
59,066 |
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: