説明
State コンビネータは、
avg
関数に適用でき、AggregateFunction(avg, T) 型の中間状態を生成します。ここで、
T は平均値の計算対象として指定された型です。
使用例
AggregateFunction 型と avgState 関数を使用して、ウェブサイトのトラフィックデータを集計する方法を見ていきます。
まず、ウェブサイトトラフィックデータのソーステーブルを作成します:
avg は複雑な
state (合計値とカウント) を必要とするため、SimpleAggregateFunction 型は使用できません。
そのため、AggregateFunction 型を使用します。
page_performance を確認します:
avg_response_time カラムの型が AggregateFunction(avg, UInt32) であり、中間状態の情報を保持していることに注目してください。また、avg_response_time の行データは意味のある形では表示されず、�, n, F, } のような不可解な文字が現れます。これは、ターミナルがバイナリデータをテキストとして表示しようとしているためです。AggregateFunction 型は、効率的なストレージと計算に最適化されたバイナリフォーマットで状態を保持しており、人間が直接読むことを想定した設計ではありません。このバイナリ状態には、平均値を算出するために必要なすべての情報が含まれています。
これを利用するには、Merge コンビネーターを使用します: