summarize 演算子を使用して結果をフィルター処理する
arg_max() および arg_min() 関数で、上位と下位の行をそれぞれフィルターで除外します。
arg_max 関数
次のステートメントでは、SQL10.NA.contosohotels.com コンピューターの SecurityEvent テーブルから最新の行が返されます。 arg_max 関数の * で、その行のすべての列を要求します。
SecurityEvent
| where Computer == "SQL10.na.contosohotels.com"
| summarize arg_max(TimeGenerated,*) by Computer
arg_min 関数
このステートメントでは、SQL10.NA.contosohotels.com コンピューターの最も古い SecurityEvent が結果セットとして返されます。
SecurityEvent
| where Computer == "SQL10.na.contosohotels.com"
| summarize arg_min(TimeGenerated,*) by Computer
結果パイプの再考
順序結果でパイプ文字の問題がパススルーされています。 次の 2 つの KQL ステートメントを確認します。 結果セットの違いは何ですか?
各クエリを個別に実行して、結果を確認します。
// Statement 1
SecurityEvent
| summarize arg_max(TimeGenerated, *) by Account
| where EventID == "4624"
// Statement 2
SecurityEvent
| where EventID == "4624"
| summarize arg_max(TimeGenerated, *) by Account
Statement 1 には、最後のアクティビティがログオンだった Account が含まれます。
SecurityEvent テーブルが集計され、各 Account の最新の行が返されます。 その後、EventID が 4624 (ログオン) に等しい行のみが返されます。
Statement 2 には、ログオンしている Account の最新のログインが含まれます。
SecurityEvent テーブルは、EventID = 4624 のみを含むようにフィルター処理されます。 これらの結果は、Account ごとに最新のログオン行に対して集計されます。