A Log Analytics lekérdezési nyelve Summarize és Join operátorokhoz
Közzététel dátuma: május 29, 2018
Ez a frissítés az Azure Log Analytics és Application Insights Summarize és Join operátorainak a lekérdezési nyelv szintaxisára vonatkozó javaslatait ismerteti. A meglévő szintaxist továbbra is támogatjuk, azonban erősen javasolt a megfelelő helyeken módosítani a lekérdezések szintaxisát a mentett keresésekben és riasztásokban, így elkerülheti az eredmények félreérthetőségét.
Ha a javaslatokkal kapcsolatban kérdése van, írjon nekünk.
Óránkénti automatikus dobozolás a Summarize operátorban
A rendszer a datetime kulcs által összesített adatokat jelenleg óránként dobozolja. Ebben a példában a Summarize operátorban használt TimeGenerated oszlop automatikusan óránkénti dobozokba került:
SecurityEvent
| where TimeGenerated > ago(1d)
| where EventID == 4625
| summarize count() by TimeGenerated
Íme, a lekérdezés eredményei:
TimeGenerated [UTC] |
count_ |
2018-02-04T09:00:00.000 2018-02-04T10:00:00.000 2018-02-04T11:00:00.000 2018-02-04T12:00:00.000 2018-02-04T13:00:00.000 2018-02-04T14:00:00.000 2018-02-04T15:00:00.000 2018-02-04T16:00:00.000 2018-02-04T17:00:00.000 2018-02-04T18:00:00.000 |
1205 1268 1234 1173 1007 1042 1041 1049 1090 1113 |
Javasolt műveletek:
- Ha nem használja az automatikus dobozolás funkciót sem a mentett keresésekben, sem a riasztásokban (például a TimeGenerated elem alapján összesítve):
- Nincs szükség műveletre.
- Ha nem tudja, hogy használja-e az automatikus dobozolás funkciót, a lekérdezések nem szándékos óránkénti összesítést eredményezhetnek:
- Ellenőrizze, hogy a datetime kulcs alapján összesíti-e az adatokat (például TimeGenerated elemmel való összegzéssel). Ha igen, módosítsa a lekérdezéseket explicit dobozolásra – például: bin(TimeGenerated, 1h).
- Ha ismeri az automatikus dobozolás funkciót, és használja:
- Módosítsa a lekérdezéseket explicit dobozolásra – például: bin(TimeGenerated, 1h).
Egyenlőségi kifejezések a Join operátorban
A nyelvi szintaxis jelenleg engedélyezi félreérthető egyenlőségi kifejezések a Join attribútumaiként való használatát (például: key1 == key2), ami nem kívánatos eredményekhez vezet. Azt javasoljuk, hogy módosítsa a félreérthető egyenlőségi kifejezéseket ennek elkerülése érdekében.
Íme, egy példa egy félreérthető Join kifejezésre (amely a napi munkamenet időtartamát összegzi számítógépenként):
SecurityEvent
| where EventID == 4624
| join kind= inner (
SecurityEvent
| where EventID == 4634
) on TargetLogonId == TargetLogonId
| extend Duration = LogoffTime - LogonTime
| summarize sum(Duration) by bin(LogonTime, 1d), Computer
Javasolt műveletek:
- Ha nem használ egyenlőségi kifejezéseket a Join operátorokban, sem a mentett keresésekben, sem a riasztásokban:
- Nincs szükség műveletre.
- Ha egyenlőségi kifejezéseket használ a Join operátorokban:
- Javítsa ki a Join operátor szintaxisát.
- Javítsa ki a lekérdezéseket. Az oszlopok neveit a megfelelő,
$left
és$right
jelöléssel ellátott tulajdonosi tábla minősíti. Példák:
| join … on $left.Col1 == $right.Col2
| join … on X (equivalent to: | join … on $left.X == $right.X)