minSimpleState
説明
SimpleState コンビネータを min
関数に適用することで、すべての入力値の中での最小値を返すことができます。戻り値の型は
SimpleAggregateFunction です。
使用例
日々の気温観測値を記録するテーブルを使った実用的な例を見てみます。各地点ごとに、記録された最低気温を保持したいとします。
SimpleAggregateFunction 型を min と合わせて使用すると、より低い気温が記録されたときに保存されている値が自動的に更新されます。
生の気温データを保存するためのソーステーブルを作成します:
最低気温を格納する集約テーブルを作成します:
挿入されたデータに対する INSERT トリガーとして機能し、各ロケーションごとの最小・最大温度を保持するインクリメンタルマテリアライズドビューを作成します。
初期の温度データをいくつか挿入します:
これらの値はマテリアライズドビューによって自動的に処理されます。現在の状態を確認してみましょう。
データをさらに挿入します:
新しいデータを追加した後の最新の極値を表示:
上に示したように、各 location には 2 つの値が挿入されています。これは、
parts がまだマージされておらず(AggregatingMergeTree による集約も行われていない)ためです。部分状態から最終的な結果を得るには、GROUP BY を追加する必要があります。
これで期待どおりの結果が得られました。
注記
SimpleState を使用すると、部分集計状態を結合するために Merge コンビネータを使う必要がなくなります。