Skip to main content

WITH CONSUME

Introduced or updated: v1.2.469

Consumes data from a stream within a SELECT query.

See also: WITH Stream Hints

Syntax

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

As long as the query executes successfully, the WITH CONSUME clause will consume all data captured by the stream, even if only a portion of it is queried using a WHERE condition.

Examples

Suppose we have a stream named 's' that has captured the following data:

SELECT * FROM s;

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

If we now query the stream using WITH CONSUME, we would get the following result:

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

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

The stream is now empty because the query above has consumed all of the data present in the stream.

-- empty results
SELECT * FROM s;
Explore Databend Cloud for FREE
Low-cost
Fast Analytics
Easy Data Ingestion
Elastic Scaling
Try it today