WITH CONSUME
SELECT クエリ内でストリームからデータを消費します。
関連情報: WITH ストリームヒント
構文
SELECT ...
FROM <stream_name> WITH CONSUME [ AS <alias> ]
[ WHERE <conditions> ]
例
's' という名前のストリームがあり、次のデータをキャプチャしているとします。
SELECT * FROM s;
┌────────────────────────────────────────────────────────────────────────────────────────────────┐
│ a │ change$action │ change$row_id │ change$is_update │
├─────────────────┼──────────────────┼────────────────────────────────────────┼──────────────────┤
│ 3 │ INSERT │ 4942372d864147e98188f3b486ec18d2000000 │ false │
│ 1 │ DELETE │ 3df95ad8552e4967a704e1c7209d3dff000000 │ false │
└────────────────────────────────────────────────────────────────────────────────────────────────┘
ここで WITH CONSUME を使用してストリームをクエリすると、次の結果が返されます。
SELECT
a
FROM
s WITH CONSUME AS ss
WHERE
ss.change$action = 'INSERT';
┌─────────────────┐
│ a │
├─────────────────┤
│ 3 │
└─────────────────┘
上記のクエリによってストリーム内に存在していたすべてのデータが消費されたため、ストリームは現在空です。
-- empty results
SELECT * FROM s;