Zalecenia dla języka zapytań usługi Log Analytics dotyczące operatorów Summarize i Join
Data opublikowania: 29 maja, 2018
W tej aktualizacji podano zalecenia dla składni języka zapytań usług Azure Log Analytics i Application Insights dotyczące operatorów Summarize i Join. Istniejąca składnia jest nadal obsługiwana, ale zdecydowanie zalecamy zmodyfikowanie składni zapytań tam, gdzie to możliwe, w zapisanych wyszukiwaniach i alertach, aby uniknąć niejednoznaczności wyników.
Jeśli masz pytania dotyczące tych zaleceń, skontaktuj się z nami.
Godzinne automatyczne kwantowanie w operatorze Summarize
Obecnie dane agregowane według klucza daty/godziny są automatycznie grupowane w godzinne przedziały. W tym przykładzie kolumna TimeGenerated używana w operatorze Summarize została automatycznie zaokrąglona do godzinnych przedziałów:
SecurityEvent
| where TimeGenerated > ago(1d)
| where EventID == 4625
| summarize count() by TimeGenerated
Oto wyniki zapytania:
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 |
Zalecane akcje:
- Jeśli nie polegasz na funkcji automatycznego kwantowania ani w zapisanych wyszukiwaniach, ani w alertach (np. summarize by TimeGenerated):
- Nie jest wymagana żadna akcja.
- Jeśli nie znasz funkcji automatycznego kwantowania, Twoje zapytania mogą zwracać wyniki z niezamierzoną agregacją godzinową:
- Sprawdź, czy korzystasz z agregowania danych według klucza daty/godziny (np. summarize by TimeGenerated). Jeśli tak, popraw zapytania w taki sposób, aby było używane jawne kwantowanie — np. summarize by bin(TimeGenerated, 1h).
- Jeśli znasz funkcję automatycznego kwantowania i polegasz na niej:
- Popraw zapytania w taki sposób, aby było używane jawne kwantowanie — np. summarize by bin(TimeGenerated, 1h).
Wyrażenia równości w operatorze Join
Obecnie składnia języka zezwala na stosowanie niejednoznacznych wyrażeń równości jako atrybutów operatora Join (np. klucz1 == klucz2) powodujących zwrócenie niepożądanych wyników. Zalecamy zmianę niejednoznacznych wyrażeń równości, aby uniknąć tego zachowania.
Oto przykład niejednoznacznego wyrażenia operatora Join (sumującego czas trwania dziennej sesji na każdym komputerze):
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
Zalecane akcje:
- Jeśli nie używasz wyrażeń równości w operatorach Join ani w zapisanych wyszukiwaniach, ani w alertach:
- Nie jest wymagana żadna akcja.
- Jeśli używasz wyrażeń równości w operatorach Join:
- Popraw składnię operatorów Join.
- Popraw zapytania. Nazwy kolumn powinny być kwalifikowane za pomocą odpowiedniej tabeli właścicieli oznaczonej za pomocą notacji
$left
i$right
. Przykłady:
| join … on $left.Col1 == $right.Col2
| join … on X (odpowiednik: | join … on $left.X == $right.X)