pivot プラグイン
入力テーブルの 1 つの列から出力テーブルの複数の列に一意の値を変換してテーブルを回転させ、最終出力内の残りの列値に対して必要に応じて集計を実行します。
Note
OutputSchema が指定されていない場合、pivot
プラグインの出力スキーマは入力データに基づきます。 したがって、異なるデータ入力によってプラグインを複数回実行すると、異なる出力スキーマが生成される場合があります。 これは、展開された列を参照しているクエリがいつでも "破損した" 状態になるおそれがあることも意味します。 このため、OutputSchema 関数を指定せずに自動化ジョブにこのプラグインを使用することはお勧めしません。
構文
T | evaluate pivot(
pivotColumn[,
aggregationFunction] [,
column1 [,
column2 ... ]])
[:
OutputSchema]
構文規則について詳しく知る。
パラメーター
件名 | タイプ | Required | 説明 |
---|---|---|---|
pivotColumn | string |
✔️ | 回転する列。 この列からの一意の値はそれぞれ、出力テーブルの列になります。 |
aggregationFunction | string |
入力テーブル内の複数の行を出力テーブルの 1 つの行に集計するために使用される集計関数。 現在サポートされている関数: min() 、 max() 、 take_any() 、 sum() 、 dcount() 、 avg() 、 stdev() 、 variance() 、 make_list() 、 make_bag() 、 make_set() 、 count() 。 既定値は、count() です。 |
|
column1, column2, ... | string |
列名または列名のコンマ区切りのリスト。 出力テーブルには、指定される列ごとに追加の列が含まれます。 既定値は、ピボット列と集計列以外のすべての列です。 | |
OutputSchema | pivot プラグイン出力の予想される列の名前と型。構文: ( ColumnName : ColumnType [, ...] ) 予想されるスキーマを指定すると、最初に実際のクエリを実行してスキーマを探索することなく、クエリの実行が最適化されます。 実行時スキーマが OutputSchema スキーマと一致しない場合、エラーが発生します。 |
返品
Pivot は、指定された列 (column1、column2、...) とピボット列のすべての一意の値を含む、回転したテーブルを返します。 ピボットされた列の各セルには、集計関数の計算が含まれます。
例
列によるピボット
EventType と "AL" で始まる州ごとに、この州内のこの種類のイベント数を数えます。
StormEvents
| project State, EventType
| where State startswith "AL"
| where EventType has "Wind"
| evaluate pivot(State)
出力
EventType | ALABAMA | ALASKA |
---|---|---|
雷雨風 | 352 | 1 |
High Wind | 0 | 95 |
極寒/風速冷却 | 0 | 10 |
強風 | 22 | 0 |
集計関数を含む列によるピボット
EventType と "AR" で始まる州ごとに、直接の死因の合計数を表示します。
StormEvents
| where State startswith "AR"
| project State, EventType, DeathsDirect
| where DeathsDirect > 0
| evaluate pivot(State, sum(DeathsDirect))
出力
EventType | アーカンソー | アリゾナ |
---|---|---|
Heavy Rain | 1 | 0 |
雷雨風 | 1 | 0 |
Lightning | 0 | 1 |
鉄砲水 | 0 | 6 |
強風 | 1 | 0 |
暖房 | 3 | 0 |
集計関数と 1 つの追加列を含む列によるピボット
結果は前の例と同じです。
StormEvents
| where State startswith "AR"
| project State, EventType, DeathsDirect
| where DeathsDirect > 0
| evaluate pivot(State, sum(DeathsDirect), EventType)
出力
EventType | アーカンソー | アリゾナ |
---|---|---|
Heavy Rain | 1 | 0 |
雷雨風 | 1 | 0 |
Lightning | 0 | 1 |
鉄砲水 | 0 | 6 |
強風 | 1 | 0 |
暖房 | 3 | 0 |
ピボットされた列、集計関数、複数の追加列を指定する
イベントの種類、情報源、州ごとに、直接の死因の数を合計します。
StormEvents
| where State startswith "AR"
| where DeathsDirect > 0
| evaluate pivot(State, sum(DeathsDirect), EventType, Source)
出力
EventType | ソース | アーカンソー | アリゾナ |
---|---|---|---|
Heavy Rain | 非常事態担当マネージャー | 1 | 0 |
雷雨風 | 非常事態担当マネージャー | 1 | 0 |
Lightning | 新聞 | 0 | 1 |
鉄砲水 | 訓練を受けた観測員 | 0 | 2 |
鉄砲水 | 放送メディア | 0 | 3 |
鉄砲水 | 新聞 | 0 | 1 |
強風 | 法執行機関 | 1 | 0 |
暖房 | 新聞 | 3 | 0 |
クエリ定義の出力スキーマを使用したピボット
次の例では、StormEvents テーブル内の特定の列を選択します。 これは、実際のクエリを実行する前に、さまざまな最適化を評価できる明示的なスキーマ定義を使用します。
StormEvents
| project State, EventType
| where EventType has "Wind"
| evaluate pivot(State): (EventType:string, ALABAMA:long, ALASKA:long)
出力
EventType | ALABAMA | ALASKA |
---|---|---|
雷雨風 | 352 | 1 |
High Wind | 0 | 95 |
海上雷雨風 | 0 | 0 |
強風 | 22 | 0 |
極寒/風速冷却 | 0 | 10 |
寒い/風速冷却 | 0 | 0 |
海上の強風 | 0 | 0 |
海上の非常に強い風 | 0 | 0 |