Přeskočit na hlavní obsah

Doporučení dotazovacího jazyka Log Analytics pro operátory Summarize a Join

Datum publikování: 29 května, 2018

Tato aktualizace popisuje doporučení pro syntaxi dotazovacího jazyka Azure Log Analytics a Application Insights pro operátory Summarize a Join. Stávající syntaxe se dál podporuje, ale důrazně doporučujeme upravit syntaxi vašich dotazů v uložených hledáních a upozorněních, kde je to možné, abyste se vyhnuli nejednoznačnosti výsledků.

Pokud máte ohledně těchto doporučení nějaké dotazy, kontaktujte nás.

Automatické kvantování v operátoru Summarize každou hodinu

Momentálně se data agregovaná podle klíče datetime automaticky seskupují po hodinách. V tomto příkladu se sloupec TimeGenerated použitý v operátoru Summarize automaticky zaokrouhloval na hodiny:

SecurityEvent

| where TimeGenerated > ago(1d)

| where EventID == 4625

| summarize count() by TimeGenerated

Podívejte se na výsledky dotazu:

TimeGenerated [UTC]

count_

4. 2. 2018, 09:00:00,000

4. 2. 2018, 10:00:00,000

4. 2. 2018, 11:00:00,000

4. 2. 2018, 12:00:00,000

4. 2. 2018, 13:00:00,000

4. 2. 2018, 14:00:00,000

4. 2. 2018, 15:00:00,000

4. 2. 2018, 16:00:00,000

4. 2. 2018, 17:00:00,000

4. 2. 2018, 18:00:00,000

1 205

1 268

1 234

1 173

1 007

1 042

1 041

1 049

1 090

1 113

 

Doporučené akce:

  • Pokud se nespoléháte na funkci automatického kvantování, ať už v uložených hledáních, nebo v upozorněních (například souhrn podle TimeGenerated):
    • Nevyžaduje se žádná akce.
  • Pokud o funkci automatického kvantování nevíte, vaše dotazy mohou vracet výsledky s nezamýšlenou agregací po hodinách:
    • Ověřte, jestli používáte agregaci dat podle klíče datetime (například souhrn podle TimeGenerated). Pokud ano, opravte dotaz tak, aby používal správné kvantování, například souhrn podle bin(TimeGenerated, 1h).
  • Pokud o funkci automatického kvantování víte a spoléháte na ni:
    • Opravte dotaz tak, aby používal správné kvantování, například souhrn podle bin(TimeGenerated, 1h).

Výrazy rovnosti v operátoru Join

Syntaxe jazyka aktuálně umožňuje použití nejednoznačných výrazů rovnosti jako atributů Join (například key1 == key2). Výsledky potom nemusejí odpovídat očekávání. Doporučujeme změnit nejednoznačné výrazy rovnosti a vyhnout se tak tomuto chování.

Tady je příklad nejednoznačného výrazu Join (souhrn doby trvání relací za den na počítač):

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

 

Doporučené akce:

  • Pokud v operátorech Join nepoužíváte výrazy rovnosti, ať už v uložených hledáních, nebo v upozorněních:
    • Nevyžaduje se žádná akce.
  • Pokud v operátorech Join používáte výrazy rovnosti:
    • Opravte syntaxi operátoru Join.
    • Opravte vaše dotazy. Názvy sloupců by měly jako kvalifikátor používat příslušného vlastníka tabulky, a to s využitím notace $left a $right. Příklady:

| join … on $left.Col1 == $right.Col2

| join … on X (equivalent to: | join … on $left.X == $right.X)

 

  • Log Analytics
  • Azure Monitor
  • Services

Související produkty