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)

 

  • Log Analytics
  • Azure Monitor
  • Services

Tillhörande produkter