Rekommendationer för Log Analytics-frågespråket för operatorerna summarize och join
Publiceringsdatum: 29 maj, 2018
Den här uppdateringen beskriver rekommendationer för Azure Log Analytics- och Application Insights-frågespråkssyntax för operatorerna summarize (summera) och join (koppla). Befintlig syntax stöds fortfarande men vi rekommenderar starkt att du ändrar frågesyntaxen där det går i sparade sökningar och aviseringar, för att undvika tvetydigheter i resultatet.
Kontakta oss om du har frågor om dessa rekommendationer.
Automatisk gruppering per timme i summarize-opetatorn
För närvarande grupperas aggregerade data efter datetime-nyckel i timbaserade grupper. I det här exemplet har kolumnen TimeGenerated som används i operatorn summarize automatiskt avrundats i timbaserade grupper:
SecurityEvent
| where TimeGenerated > ago(1d)
| where EventID == 4625
| summarize count() by TimeGenerated
Här är frågeresultatet:
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 |
1,205 1,268 1,234 1,173 1,007 1,042 1,041 1,049 1,090 1,113 |
Rekommenderade åtgärder:
- Om du inte förlitar dig på automatisk gruppering, i sparade sökningar eller i aviseringar (t.ex. summarize by TimeGenerated):
- Ingen åtgärd krävs.
- Om du inte är medveten om den automatiska grupperingsfunktionen kan dina frågor returnera resultat med oavsiktlig aggregering per timme:
- Verifiera om du använder aggregering av data efter datetime-nyckel (t.ex. summarize by TimeGenerated). I så fall korrigerar du frågorna så att explicit gruppering används – t.ex. summarize by bin(TimeGenerated, 1h).
- Om du är medveten om automatisk gruppering och förlitar dig på funktionen:
- Korrigera frågorna så att explicit gruppering används – t.ex. summarize by bin(TimeGenerated, 1h).
Likhetsuttryck i join-operatorn
För närvarande tillåter språksyntaxen användning av tvetydiga likhetsuttryck som join-attribut (t.ex. key1 == key2) som genererar oönskade resultat. Vi rekommenderar att du ändrar likhetsuttrycken för att undvika det här beteendet.
Här är ett exempel på ett tvetydigt join-uttryck (som summerar varaktigheten för den dagliga sessionen per dator):
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
Rekommenderade åtgärder:
- Om du inte använder likhetsuttryck i join-operatorer, i sparade sökningar eller i aviseringar:
- Ingen åtgärd krävs.
- Om du använder likhetsuttryck i join-operatorer:
- Korrigera join-operatorsyntaxen.
- Korrigera frågorna. Kolumnnamnen ska kvalificeras med tillämplig ägartabell som anges av noteringarna
$left
och$right
. Exempel:
| join … on $left.Col1 == $right.Col2
| join … on X (equivalent to: | join … on $left.X == $right.X)