Empfehlungen zur Log Analytics-Abfragesprache für die Operatoren Summarize und Join
Veröffentlichungsdatum: 29 Mai, 2018
Dieses Update beschreibt Empfehlungen für die Abfragesprachensyntax in Azure Log Analytics und Application Insights für die Operatoren Summarize und Join. Bestehende Syntax wird weiterhin unterstützt, wir empfehlen jedoch dringend, Ihre Abfragesyntax in gespeicherten Suchen ggf. zu ändern, um mehrdeutige Ergebnisse zu vermeiden.
Wenn Sie zu diesen Empfehlungen Fragen haben, kontaktieren Sie uns.
Automatische Stundengruppierung im Summarize-Operator
Derzeit werden Daten, die nach datetime-Schlüssel aggregiert werden, automatisch in Stunden gruppiert. In diesem Beispiel wird die vom Summarize-Operator verwendete Gruppe TimeGenerated automatisch auf Stundengruppen gerundet:
SecurityEvent
| where TimeGenerated > ago(1d)
| where EventID == 4625
| summarize count() by TimeGenerated
Hier sind die Abfrageergebnisse:
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 |
Empfohlene Aktionen:
- Wenn Sie die automatische Einteilung in Gruppen weder in gespeicherten Gruppen noch in Warnungen verwenden (z.B. bei Zusammenfassung nach TimeGenerated):
- Es ist keine Aktion erforderlich.
- Wenn Sie die Funktion zum automatischen Einteilen in Gruppen nicht beachten, geben Ihre Abfragen möglicherweise Ergebnisse mit einer nicht beabsichtigten Aggregation nach Stunden zurück:
- Überprüfen Sie, ob Sie Daten nach dem datetime-Schlüssel aggregieren (z.B. durch Zusammenfassen nach TimeGenerated). Korrigieren Sie in diesem Fall die Abfragen so, dass eine ausdrückliche Gruppierung verwendet wird, z.B. durch Zusammenfassen nach bin(TimeGenerated, 1h).
- Wenn Sie die Funktion zum automatischen Einteilen in Gruppen beachten und sich auf sie verlassen:
- Korrigieren Sie die Abfragen so, dass eine ausdrückliche Gruppierung verwendet wird, z.B. durch Zusammenfassen nach bin(TimeGenerated, 1h).
Gleichheitsausdrücke im Join-Operator
Derzeit erlaubt die Sprachsyntax, mehrdeutige Gleichheitsausdrücke als Join-Attribute zu verwenden (z.B. key1 == key2), die zu unerwünschten Ergebnissen führen. Wir empfehlen, mehrdeutige Gleichheitsausdrücke zu ändern, um dieses Verhalten zu vermeiden.
Hier ist ein Beispiel für einen mehrdeutigen Join-Ausdruck (Summieren der täglichen Sitzungsdauer pro Computer):
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
Empfohlene Aktionen:
- Wenn Sie Gleichheitsausdrücke in Join-Operatoren weder in gespeicherten Suchen noch in Warnungen verwenden:
- Es ist keine Aktion erforderlich.
- Wenn Sie Gleichheitsausdrücke in Join-Operatoren verwenden:
- Korrigieren Sie die Syntax des Join-Operators.
- Korrigieren Sie Ihre Abfragen. Die Spaltennamen sollten entsprechend der Besitzertabelle, die durch die Notationen
$left
und$right
angegeben ist, qualifiziert sein. Beispiele:
| join … on $left.Col1 == $right.Col2
| join … on X (entspricht: | join … on $left.X == $right.X)