pivot
行と列のグループフィールドを指定してレコードをピボットテーブル形式で集計します。
コマンドプロパティ
| 項目 | 説明 |
|---|---|
| コマンドタイプ | 加工クエリ |
| 必要な権限 | なし |
| ライセンス使用量 | 該当なし |
| 並列実行 | 対応 |
| 分散実行 | 制御ノードで実行(reducer) |
構文
オプション
parallel=BOOL- 並列集計を使用するかどうか。
tまたはfを指定します。
ターゲット
AGG_FUNC [as ALIAS], ...- 集計関数とオプションのエイリアス。複数の集計関数はカンマ(
,)で区切ります。 {rows|by} FIELD, ...- 行グループフィールド。
rowsまたはbyキーワードを使用します。複数のフィールドはカンマ(,)で区切ります。 {cols|for} FIELD, ...- 列グループフィールド。
colsまたはforキーワードを使用します。複数のフィールドはカンマ(,)で区切ります。
エラーコード
パースエラー
| エラーコード | メッセージ | 説明 |
|---|---|---|
| 21800 | フィールドを入力してください。 | 集計関数が指定されていない場合 |
ランタイムエラー
該当なし
説明
pivot コマンドは、入力レコードを行と列のグループフィールドの組み合わせでグループ化し、各グループに集計関数を適用します。列グループフィールドの固有値が出力フィールド名になり、ピボットテーブル形式の結果を生成します。
列グループフィールドの固有値の数が 1,000 を超えるとエラーが発生します。
rows と by、cols と for はそれぞれ同等のキーワードです。順序は自由に指定できます。
分散環境では、最終集計は制御ノードで実行されます。
pivotコマンドは、入力レコードを受信する間、メモリ内バッファに集計結果を蓄積します。バッファサイズのデフォルト値は列グループフィールドがある場合は50,000件、ない場合は100,000件であり、この閾値を超えると中間集計結果をディスクにフラッシュします。この値はシステムプロパティaraqne.logdb.aggregate_flush_sizeで列あり:列なしの形式で変更できます。集計が完了した結果は2,000件単位でまとめて出力します。
使用例
-
行と列でピボット
table duration=1d web_logs | pivot count rows method cols statusHTTP メソッド(行)とステータスコード(列)の組み合わせごとのリクエスト数をピボットテーブルとして出力します。
-
byとforキーワードを使用table duration=1d web_logs | pivot sum(bytes) as total_bytes by method for statusbyとforキーワードを使用して、HTTP メソッドとステータスコードごとの合計転送バイト数をピボットテーブルとして出力します。 -
インラインデータをピボット
json "[{'dept': 'sales', 'quarter': 'Q1', 'amount': 100}, {'dept': 'sales', 'quarter': 'Q2', 'amount': 200}, {'dept': 'dev', 'quarter': 'Q1', 'amount': 150}, {'dept': 'dev', 'quarter': 'Q2', 'amount': 180}]" | pivot sum(amount) rows dept cols quarter部門(行)と四半期(列)の組み合わせごとの合計金額をピボットテーブルとして出力します。
-
複数の集計関数を使用
table duration=1d web_logs | pivot count, avg(bytes) as avg_bytes rows method cols statusHTTP メソッド(行)とステータスコード(列)の組み合わせごとのリクエスト数と平均バイト数をピボットテーブルとして出力します。