← Cloudflare Pipelines / pipelines / sql-reference
Операторы SELECT
Операторы SELECT используются для преобразования данных в Cloudflare Pipelines. Общий вид:
[WITH with_query [, ...]]
SELECT select_expr [, ...]
FROM from_item
[WHERE condition]Конвейер выполняет один или несколько INSERT INTO sink SELECT ... FROM stream операторов. Чтобы записывать данные в несколько sink из одного pipeline, разделяйте операторы точкой с запятой. См. Несколько SQL-инструкций.
Предложение WITH
Секция WITH позволяет определять именованные подзапросы, на которые можно ссылаться в основном запросе. Это повышает читаемость запроса, разбивая сложные преобразования на отдельные шаги.
Синтаксис:
WITH query_name AS (subquery) [, ...]Простой пример:
WITH filtered_events AS
(SELECT user_id, event_type, amount
FROM user_events WHERE amount > 50)
SELECT user_id, amount * 1.1 as amount_with_tax
FROM filtered_events
WHERE event_type = 'purchase';Секция SELECT
Секция SELECT представляет собой список выражений, разделённых запятыми, с необязательными псевдонимами. Имена столбцов должны быть уникальными.
SELECT select_expr [, ...]Примеры:
-- Select specific columns
SELECT user_id, event_type, amount FROM events
-- Use expressions and aliases
SELECT
user_id,
amount * 1.1 as amount_with_tax,
UPPER(event_type) as event_type_upper
FROM events
-- Select all columns
SELECT * FROM eventsСекция FROM
Секция FROM определяет источник данных для запроса. Это может быть имя таблицы или подзапрос. В качестве имени таблицы можно указать имя потока или таблицу, созданную в секции WITH.
FROM from_itemТаблицам можно присваивать псевдонимы:
SELECT e.user_id, e.amount
FROM user_events e
WHERE e.event_type = 'purchase'Секция WHERE
Секция WHERE фильтрует данные с помощью булевых условий. Предикаты применяются к входным строкам.
WHERE conditionПримеры:
-- Filter by field value
SELECT * FROM events WHERE event_type = 'purchase'
-- Multiple conditions
SELECT * FROM events
WHERE event_type = 'purchase' AND amount > 50
-- String operations
SELECT * FROM events
WHERE user_id LIKE 'user_%'
-- Null checks
SELECT * FROM events
WHERE description IS NOT NULLОператор UNNEST
Оператор UNNEST преобразует массивы в несколько строк. Это полезно при обработке данных типа список.
Ограничения UNNEST:
- Может использоваться только в предложении SELECT
- В одном операторе SELECT можно развернуть только один массив
Пример:
SELECT
UNNEST([1, 2, 3]) as numbers
FROM events;В результате получится:
+---------+
| numbers |
+---------+
| 1 |
| 2 |
| 3 |
+---------+Несколько SQL-инструкций
Конвейер может содержать несколько INSERT операторов, разделённых точкой с запятой. Каждый оператор считывает данные из stream и записывает их в sink. Используйте несколько операторов, чтобы направлять события из одного stream в несколько sink в зависимости от их содержимого.
INSERT INTO purchases_sink
SELECT user_id, product_id, amount FROM events
WHERE event_type = 'purchase';
INSERT INTO signups_sink
SELECT user_id, created_at FROM events
WHERE event_type = 'signup';Чтобы указать несколько операторов через Wrangler CLI, передайте файл с флагом --sql-file флаг:
npx wrangler pipelines create my-pipeline --sql-file pipeline.sqlПрактический пример см. в Распределение stream по нескольким таблицам Iceberg.