CREATE DATABASE flow_join_fixture; Affected Rows: 1 CREATE TABLE flow_join_fixture."left_samples" ( source_id STRING, left_value DOUBLE, event_ts TIMESTAMP, observed_at TIMESTAMP TIME INDEX ); Affected Rows: 0 CREATE TABLE flow_join_fixture."right_samples" ( source_id STRING, right_value DOUBLE, sample_kind STRING, event_ts TIMESTAMP, observed_at TIMESTAMP TIME INDEX ); Affected Rows: 0 -- Verify batching flow creation accepts aggregate subqueries joined by LEFT JOIN. CREATE FLOW flow_batch_join_subquery SINK TO flow_batch_join_sink EVAL INTERVAL '5m' AS SELECT l.source_id, l.measure_name, l.bucket_time, l.left_event_ts, l.left_value, r.right_event_ts, r.right_value FROM ( SELECT source_id, 'sample' AS measure_name, date_trunc('minute', now()) AS bucket_time, max(event_ts) AS left_event_ts, last_value(left_value ORDER BY observed_at) AS left_value FROM flow_join_fixture."left_samples" WHERE observed_at BETWEEN date_trunc('minute', now()) - INTERVAL '5 minutes' AND date_trunc('minute', now()) GROUP BY source_id ) l LEFT JOIN ( SELECT source_id, 'sample' AS measure_name, date_trunc('minute', now()) AS bucket_time, max(event_ts) AS right_event_ts, last_value(right_value ORDER BY observed_at) AS right_value FROM flow_join_fixture."right_samples" WHERE observed_at BETWEEN date_trunc('minute', now()) - INTERVAL '5 minutes' AND date_trunc('minute', now()) AND sample_kind = 'primary' GROUP BY source_id ) r ON l.source_id = r.source_id AND l.bucket_time = r.bucket_time; Affected Rows: 0 SELECT source_table_names LIKE '%left_samples%' AS has_left_source, source_table_names LIKE '%right_samples%' AS has_right_source, options LIKE '%"flow_type":"batching"%' AS is_batching_flow FROM INFORMATION_SCHEMA.FLOWS WHERE flow_name = 'flow_batch_join_subquery'; +-----------------+------------------+------------------+ | has_left_source | has_right_source | is_batching_flow | +-----------------+------------------+------------------+ | true | true | true | +-----------------+------------------+------------------+ INSERT INTO flow_join_fixture."left_samples" VALUES ('source-a', 0.12, date_trunc('minute', now()), date_trunc('minute', now())); Affected Rows: 1 INSERT INTO flow_join_fixture."right_samples" VALUES ('source-a', 100.5, 'primary', date_trunc('minute', now()), date_trunc('minute', now())); Affected Rows: 1 -- SQLNESS REPLACE (ADMIN\sFLUSH_FLOW\('\w+'\)\s+\|\n\+-+\+\n\|\s+)[0-9]+\s+\| $1 FLOW_FLUSHED | ADMIN FLUSH_FLOW('flow_batch_join_subquery'); +----------------------------------------------+ | ADMIN FLUSH_FLOW('flow_batch_join_subquery') | +----------------------------------------------+ | FLOW_FLUSHED | +----------------------------------------------+ SELECT source_id, measure_name, left_value, right_value FROM flow_batch_join_sink ORDER BY source_id; +-----------+--------------+------------+-------------+ | source_id | measure_name | left_value | right_value | +-----------+--------------+------------+-------------+ | source-a | sample | 0.12 | 100.5 | +-----------+--------------+------------+-------------+ DROP FLOW flow_batch_join_subquery; Affected Rows: 0 DROP TABLE flow_batch_join_sink; Affected Rows: 0 DROP TABLE flow_join_fixture."left_samples"; Affected Rows: 0 DROP TABLE flow_join_fixture."right_samples"; Affected Rows: 0 DROP DATABASE flow_join_fixture; Affected Rows: 0