WITH CONSUME
引入或更新: v1.2.469
在SELECT查询中从流中消费数据。
另请参阅: WITH Stream Hints
语法
SELECT ...
FROM <stream_name> WITH CONSUME [ AS <alias> ]
[ WHERE <conditions> ]
备注
只要查询成功执行,WITH CONSUME子句将消费流捕获的所有数据,即使只使用WHERE条件查询了其中一部分数据。
示例
假设我们有一个名为'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 │
└─────────────────┘
流现在为空,因为上面的查询已经消费了流中的所有数据。
-- 空结果
SELECT * FROM s;