適用対象: ✅Microsoft Fabric✅Azure データ エクスプローラー✅Azure Monitor✅Microsoft Sentinel
入力テーブルの内容を集計したテーブルを生成します。
構文
T| summarize
[ SummarizeParameters ] [ [Column=
] Aggregation [,
...]] [by
[Column=
] GroupExpression [,
...]]
構文規則について詳しく知る。
パラメーター
件名 | タイプ | 必須 | 説明 |
---|---|---|---|
列 | string |
結果の列の名前。 既定値は式から派生した名前です。 | |
集計 | string |
✔️ | 引数として列名が指定された や count() などのavg() の呼び出し。 |
GroupExpression | スカラー型 | ✔️ | 入力データを参照できるスカラー式。 出力には、すべてのグループ式の個別の値と同じ数のレコードがあります。 |
SummarizeParameters | string |
動作を制御する 0 個以上のスペース区切りパラメーター ( Name= Value の形式。 「サポートされているパラメーター」を参照してください。 |
注
入力テーブルが空の場合、出力は GroupExpression が使用されているかどうかによって異なります。
- GroupExpression が指定されていない場合、出力は 1 つの (空の) 行になります。
- GroupExpression が指定されている場合、出力には行がありません。
サポートされているパラメーター
件名 | 説明 |
---|---|
hint.num_partitions |
クラスター ノードでクエリ負荷を共有するために使用するパーティションの数を指定します。 クエリ*のシャッフルを参照 |
hint.shufflekey=<key> |
shufflekey クエリ*は、データ*をパーティション*化するキー*で、クラスター ノード*のクエリ*負荷*を共有*します。
クエリ*のシャッフルを参照 |
hint.strategy=shuffle |
shuffle 戦略クエリは、クラスター ノードのクエリ負荷を共有します。各ノードで 1つずつ、データのパーティション化を処理します。
クエリ*のシャッフルを参照 |
戻り値
入力列は、by
式の同じ値を持つグループにまとめられます。 次に、指定された集計関数によってグループごとに計算が行われ、各グループに対応する行が生成されます。 結果には、by
列のほか、計算された各集計に対応する 1 つ以上の列も含まれます (一部の集計関数は複数の列を返します)。
結果には、 by
値の個別の組み合わせ (ゼロになる可能性があります) と同じ数の行が含まれます。 グループ キーが指定されていない場合、結果には単一のレコードが含まれます。
数値の範囲をまとめるには、bin()
を使って範囲を不連続値に減らします。
注
- 集計式とグループ化式の両方に任意の式を指定できますが、単純な列名を使用するか、
bin()
を数値列に適用する方がより効率的です。 - datetime 列の自動時間単位ビンはサポートされなくなりました。 代わりに、明示的なビン分割を使用してください。 たとえば、
summarize by bin(timestamp, 1h)
のようにします。
集計の既定値
集計の既定値を以下の表にまとめます。
演算子 | 規定値 |
---|---|
count() 、 countif() 、 dcount() 、 dcountif() 、 count_distinct() 、 sum() 、 sumif() 、 variance() 、 varianceif() 、 stdev() 、 stdevif() |
0 |
make_bag() 、 make_bag_if() 、 make_list() 、 make_list_if() 、 make_set() 、 make_set_if() |
空の動的配列* ([]) |
その他すべて | 無効 |
注
これらの集計を null 値を含むエンティティに適用すると、null 値は無視され、計算に考慮されません。 例を参照してください。
例
この記事の例では、Samples データベースの
StormEvents
テーブルなど、ヘルプ クラスターので一般公開されているテーブルを使用します。
次の例では、直接的なけがをした嵐の State
と EventType
の一意の組み合わせを決定します。 集計関数はなく、グループ別キーだけが使用されます。 出力には、それらの結果の列のみが表示されます。
StormEvents
| where InjuriesDirect > 0
| summarize by State, EventType
出力
次の表は、最初の 5 行のみを示しています。 完全な出力を表示するには、クエリを実行します。
状態 | イベントの種類 |
---|---|
テキサス州 | 雷雨風 |
テキサス州 | 鉄砲水 |
テキサス州 | 冬の天気 |
テキサス州 | 高風 |
テキサス州 | 洪水 |
... | ... |
次の例では、ハワイの最小および最大の大雨の嵐を見つけます。 group by 句はないため、以下のように出力には行が 1 つしかありません。
StormEvents
| where State == "HAWAII" and EventType == "Heavy Rain"
| project Duration = EndTime - StartTime
| summarize Min = min(Duration), Max = max(Duration)
出力
分 | マックス |
---|---|
01:08:00 | 11:55:00 |
次の例では、状態ごとに一意の Storm イベントの種類の数を計算し、結果を一意の Storm の種類の数で並べ替えます。
StormEvents
| summarize TypesOfStorms=dcount(EventType) by State
| sort by TypesOfStorms
出力
次の表は、最初の 5 行のみを示しています。 完全な出力を表示するには、クエリを実行します。
状態 | TypesOfStorms |
---|---|
テキサス州 | 二十七 |
カリフォルニア州 | 26 |
ペンシルベニア | 二十五 |
ジョージア | 二十四 |
イリノイ州 | 23 |
... | ... |
以下の例では、暴風雨が 1 日以上続いた暴風雨イベントの種類のヒストグラムを算出しています。
Duration
には多くの値があるため、bin()
を使用して、その値を 1 日間隔にグループ化します。
StormEvents
| project EventType, Duration = EndTime - StartTime
| where Duration > 1d
| summarize EventCount=count() by EventType, Length=bin(Duration, 1d)
| sort by Length
出力
イベントの種類 | 長さ | イベント数 |
---|---|---|
干ばつ | 30.00:00:00 | 1646 |
野火 | 30.00:00:00 | 11 |
暖房 | 30.00:00:00 | 14 |
洪水 | 30.00:00:00 | 20 |
大雨 | 29.00:00:00 | 42 |
... | ... | ... |
次の例は、入力テーブルが空の場合の集計の既定値を示しています。
summarize
演算子は、集計の既定値を計算するために使用されます。
summarize
演算子の入力に少なくとも 1 つの空のグループ別キーがある場合は、その結果も空になります。
summarize
演算子の入力に空の group-by キーがない場合、結果は summarize
で使用される集計の既定値になります。詳細については、「集計の既定値」を参照してください。
datatable(x:long)[]
| summarize any_x=take_any(x), arg_max_x=arg_max(x, *), arg_min_x=arg_min(x, *), avg(x), buildschema(todynamic(tostring(x))), max(x), min(x), percentile(x, 55), hll(x) ,stdev(x), sum(x), sumif(x, x > 0), tdigest(x), variance(x)
出力
any_x | arg_max_x | arg_min_x | avg_x | schema_x | x/x | min_x | percentile_x_55 | hll_x | stdev_x | sum_x | sumif_x | tdigest_x | variance_x |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
NaN | 0 | 0 | 0 | 0 |
0 で除算するため、avg_x(x)
の結果は NaN
です。
datatable(x:long)[]
| summarize count(x), countif(x > 0) , dcount(x), dcountif(x, x > 0)
出力
count_x | countif_ | dcount_x | dcountif_x |
---|---|---|---|
0 | 0 | 0 | 0 |
datatable(x:long)[]
| summarize make_set(x), make_list(x)
出力
set_x | list_x |
---|---|
[] | [] |
平均集計では、null 以外の値のみが合計され、計算内の値のみがカウントされ、null は無視されます。
range x from 1 to 4 step 1
| extend y = iff(x == 1, real(null), real(5))
| summarize sum(y), avg(y)
出力
sum_y | avg_y |
---|---|
15 | 5 |
標準カウント関数のカウントには null 値が含まれます。
range x from 1 to 2 step 1
| extend y = iff(x == 1, real(null), real(5))
| summarize count(y)
出力
count_y |
---|
2 |
range x from 1 to 2 step 1
| extend y = iff(x == 1, real(null), real(5))
| summarize make_set(y), make_set(y)
出力
set_y | set_y1 |
---|---|
[5.0] | [5.0] |