跳至主要內容

針對 Summarize 及 Join 運算子的 Log Analytics 查詢語言建議

發佈日期: 五月 29, 2018

此更新的內容為針對 SummarizeJoin 運算子的 Azure Log Analytics 與 Application Insights 查詢語言語法建議。 現有語法仍會予以支援,但強烈建議修改已儲存搜尋及警示中適用的查詢語法,以免結果不明確。

如果對這些建議有任何疑問,請連絡我們

Summarize 運算子中的每小時自動間隔

依日期時間索引鍵彙總的資料目前會自動分成以小時為單位的間隔。在此範例中,在 Summarize 運算子中使用的 TimeGenerated 欄位會自動四捨五入至以小時為單位的間隔:

SecurityEvent

| where TimeGenerated > ago(1d)

| where EventID == 4625

| summarize count() by TimeGenerated

下列為查詢結果:

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

 

建議動作:

  • 如果您無論在已儲存搜尋或警示中,都不需要自動間隔功能 (例如:依 TimeGenerated 彙總):
    • 不需執行任何動作。
  • 如果您不知道自動間隔功能,您的查詢可能會傳回含有預期外每小時彙總的結果:
    • 請確認您是否正在使用依日期時間索引鍵彙總的資料 (例如:依 TimeGenerated 彙總)。如果是,請修正查詢以使用明確的間隔,例如依 bin(TimeGenerated, 1h) 彙總。
  • 如果您知道自動間隔功能,而且已在使用:
    • 請修正查詢以使用明確的間隔,例如依 bin(TimeGenerated, 1h) 彙總。

Join 運算子中的等號比較運算式

語言語法目前允許使用不明確的相等運算式作為 Join 屬性 (例如 key1 == key2),這會產生不需要的結果。建議變更不明確的相等運算式來避免此行為。

下列為不明確 Join 運算式的範例 (加總每部電腦的每日工作階段持續時間):

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

 

建議動作:

  • 如果您無論已儲存搜尋或警示中,皆不會於 Join 運算子中使用相等運算式:
    • 不需執行任何動作。
  • 如果您在 Join 運算子中使用了相等運算式:
    • 請修正 Join 運算子語法
    • 請修正您的查詢。欄位名稱應使用透過 $left$right 標記法表示的適用擁有者資料表加以限定。範例:

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

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

 

  • Log Analytics
  • Azure 監視器
  • Services

相關產品