Let utasítás
A következőkre vonatkozik: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
A let
utasítás egy kifejezéssel vagy függvénysel egyenlő változónév beállítására, illetve nézeteklé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.
Jegyzet
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áljon toscalar() vagy materialize().
Szintaxis: Skaláris vagy táblázatos kifejezések
let
Név=
Kifejezés
Fontos
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.
Paraméterek
Név | Típus | Szükséges | Leírás |
---|---|---|---|
név | 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"] . |
Kifejezés | 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
Name=
[view
] (
[ Parameters ])
{
FunctionBody}
Fontos
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.
Paraméterek
Név | Típus | Szükséges | 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é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. |
|
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éternél a paraméternek TableName : TableSchemaformátumban kell lennie, amelyben TableSchema vagy vesszővel tagolt oszloplista ColumnName: ColumnType vagy helyettesítő karakter (* ) formátumban. 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át Név : Típusformátumban. A név megjelenhet a FunctionBody, és a felhasználó által megadott függvény meghívásakor egy adott értékhez van kötve. Az egyetlen támogatott típus az bool , string , long , datetime , timespan , real , dynamic és az ilyen típusok aliasai. |
Jegyzet
- 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
Az ebben a szakaszban szereplő példák bemutatják, hogyan használhatja a szintaxist az első lépésekhez.
A cikkben szereplő példák a nyilvánosan elérhető tábláit használják a fürt, például a
StormEvents
adatbá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 Analytics
StormEvents
táblát, mintaadatokat.
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.
Skaláris értékek definiálása
Az alábbi példa skaláris kifejezési utasí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 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
kimeneti
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)
kimeneti
x | eredmény |
---|---|
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))
kimeneti
x | eredmény |
---|---|
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
kimeneti
eredmény |
---|
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
kimeneti
$table | MyColumn |
---|---|
Tartomány10 | 5 |
Tartomány20 | 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 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
kimeneti
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éma használatával
Az alábbi példa azt határozza meg, hogy a T
táblaparaméternek State
típusú oszlopnak string
kell 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
kimeneti
Állam | 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
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()
kimeneti
Gróf |
---|
59,066 |