跳到主要内容

WITH CONSUME

Introduced or updated: v1.2.469

在 SELECT 查询中从流中消费数据。

另请参阅:WITH Stream Hints

语法

SELECT ...
FROM <stream_name> WITH CONSUME [ AS <alias> ]
[ WHERE <conditions> ]
备注

只要查询成功执行,即使仅使用 WHERE 条件查询了部分数据,WITH CONSUME 子句也会消费流捕获的所有数据。

示例

假设我们有一个名为 's' 的流,它捕获了以下数据:

SELECT * FROM s;

┌────────────────────────────────────────────────────────────────────────────────────────────────┐
│ a │ change$action │ change$row_id │ change$is_update │
├─────────────────┼──────────────────┼────────────────────────────────────────┼──────────────────┤
3INSERT4942372d864147e98188f3b486ec18d2000000 │ false
1DELETE3df95ad8552e4967a704e1c7209d3dff000000 │ false
└────────────────────────────────────────────────────────────────────────────────────────────────┘

如果现在我们使用 WITH CONSUME 查询流,我们将得到以下结果:

SELECT
a
FROM
s WITH CONSUME AS ss
WHERE
ss.change$action = 'INSERT';

┌─────────────────┐
│ a │
├─────────────────┤
3
└─────────────────┘

该流现在为空,因为上面的查询已经消费了流中存在的所有数据。

-- 空结果
SELECT * FROM s;
欢迎体验 Databend Cloud

基于 Rust + 对象存储构建的新一代多模态数仓,一个平台即可进行 BI、向量、全文检索及地理空间分析。

支持标准 SQL,自动弹性伸缩,助您快速构建现代化数据平台。

注册即领 ¥200 代金券。

注册体验