メインコンテンツまでスキップ
メインコンテンツまでスキップ

avgState

説明

State コンビネータは、avg 関数に適用でき、AggregateFunction(avg, T) 型の中間状態を生成します。ここで T は、平均のために指定された型です。

使用例

この例では、AggregateFunction 型をどのように使用し、avgState 関数と組み合わせてウェブサイトのトラフィックデータを集計するかを見ていきます。

まず、ウェブサイトのトラフィックデータのためのソーステーブルを作成します。

次に、平均応答時間を保存する集約テーブルを作成します。avg は複雑な状態(合計とカウント)を必要とするため、SimpleAggregateFunction 型を使用できません。そのため、AggregateFunction 型を使用します。

新しいデータの挿入トリガーとして機能し、上記で定義されたターゲットテーブルに中間状態データを保存するインクリメンタルマテリアライズドビューを作成します。

ソーステーブルに初期データを挿入し、ディスク上にパーツを作成します。

ディスク上に2番目のパーツを作成するためにさらにデータを挿入します。

ターゲットテーブル page_performance を確認します。

avg_response_time カラムは AggregateFunction(avg, UInt32) タイプであり、中間状態情報を保存していることに注意してください。また、avg_response_time の行データは私たちにとって有用ではなく、�, n, F, } などの奇妙な文字が表示されています。これは端末がバイナリデータをテキストとして表示しようとしたためです。この理由は、AggregateFunction 型が状態を効率的な保存と計算のために最適化されたバイナリ形式で保存し、人間が読めない形式であるためです。このバイナリ状態は平均を計算するために必要なすべての情報を含んでいます。

これを利用するには、Merge コンビネータを使用します。

これで正しい平均が表示されます。

関連項目