summarize 演算子

入力テーブルの内容を集計したテーブルを生成します。

構文

T| summarize [ SummarizeParameters ] [[Column=] Aggregation [, ...]] [by [Column=] GroupExpression [, ...]]

構文規則について詳しく知る。

パラメーター

名前 必須 説明
string 結果の列の名前。 既定値は式から派生した名前です。
集計 string ✔️ 引数として列名が指定された count()avg() などの集計関数の呼び出し。
GroupExpression スカラー (scalar) ✔️ 入力データを参照できるスカラー式。 出力には、すべてのグループ式の個別の値と同じ数のレコードが含まれます。
SummarizeParameters string 動作を制御する、"名前 = 値" という形式の 0 個以上の (スペースで区切られた) パラメーター。サポートされているパラメーター」を参照してください。

Note

入力テーブルが空の場合、出力は GroupExpression が使用されているかどうかによって異なります。

  • GroupExpression が指定されていない場合、出力は単一の (空の) 行になります。
  • GroupExpression が指定されている場合、出力に行は含まれません。

サポートされているパラメーター

Name 説明
hint.num_partitions クラスター ノードでクエリ負荷を共有するために使用するパーティションの数を指定します。 クエリ*のシャッフルを参照
hint.shufflekey=<key> shufflekey クエリ*は、データ*をパーティション*化するキー*で、クラスター ノード*のクエリ*負荷*を共有*します。 クエリ*のシャッフルを参照
hint.strategy=shuffle shuffle 戦略クエリ*は、クラスター ノード*のクエリ*負荷*を共有*します。各ノード*で 1つずつ、データ*のパーティション*化を処理します。 クエリ*のシャッフルを参照

戻り値

入力列は、by 式の同じ値を持つグループにまとめられます。 次に、指定された集計関数によってグループごとに計算が行われ、各グループに対応する行が生成されます。 結果には、by 列のほか、計算された各集計に対応する 1 つ以上の列も含まれます (一部の集計関数は複数の列を返します)。

結果には、by 値の個別の組み合わせと同数の行が含まれます (0 の場合があります)。 グループ キーが指定されていない場合、結果には単一のレコードが含まれます。

数値の範囲をまとめるには、bin() を使って範囲を不連続値に減らします。

Note

  • 集計式とグループ化式の両方に任意の式を指定できますが、単純な列名を使用するか、 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 値を含むエンティティに適用すると、null 値は無視され、計算に考慮されません。 例については、「集計の既定値」を参照してください。

果物と仕入れ先別の価格の集計。

一意の組み合わせ

次のクエリでは、直接的な被害をもたらした嵐について、StateEventType の一意の組み合わせを決定します。 集計関数はなく、グループ別キーだけが使用されます。 出力には、これらの結果の列のみが表示されます。

StormEvents
| where InjuriesDirect > 0
| summarize by State, EventType

出力

次の表は、最初の 5 行のみを示しています。 完全な出力を表示するには、クエリを実行します。

状態 EventType
テキサス州 雷雨風
テキサス州 鉄砲水
テキサス州 冬の天気
テキサス州 High Wind
テキサス州 洪水
... ...

最小と最大のタイムスタンプ

ハワイで発生した暴風雨の最低値と最大値をみつけます。 group by 句はないため、以下のように出力には行が 1 つしかありません。

StormEvents
| where State == "HAWAII" and EventType == "Heavy Rain"
| project Duration = EndTime - StartTime
| summarize Min = min(Duration), Max = max(Duration)

出力

Min Max
01:08:00 11:55:00

個別のカウント

大陸ごとに行を作成し、アクティビティが発生した都市の数を示します。 "大陸" の値は少ないため、'by' 句にグループ化関数は必要ありません。

StormEvents
| summarize TypesOfStorms=dcount(EventType) by State
| sort by TypesOfStorms

出力

次の表は、最初の 5 行のみを示しています。 完全な出力を表示するには、クエリを実行します。

State TypesOfStorms
テキサス州 27
CALIFORNIA 26
ペンシルベニア 25
GEORGIA 24
ILLINOIS 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

出力

EventType 長さ EventCount
干ばつ 30.00:00:00 1646
Wildfire 30.00:00:00 11
暖房 30.00:00:00 14
洪水 30.00:00:00 20
Heavy Rain 29.00:00:00 42
... ... ...

既定値を集計する

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
[] []

集計の avg では、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

通常の count では、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]