← Cloudflare Pipelines / pipelines / sql-reference
Příkazy SELECT
Příkazy SELECT slouží k transformaci dat v Cloudflare Pipelines. Obecný tvar je následující:
[WITH with_query [, ...]]
SELECT select_expr [, ...]
FROM from_item
[WHERE condition]Pipeline spouští jednu nebo více INSERT INTO sink SELECT ... FROM stream příkazy. Chcete-li ze stejné pipeline zapisovat do více sinků, oddělte příkazy středníky. Viz Více příkazů.
Klauzule WITH
Klauzule WITH umožňuje definovat pojmenované poddotazy, na které lze odkazovat v hlavním dotazu. Díky tomu můžete rozložit složité transformace a zlepšit tak čitelnost dotazu.
Syntaxe:
WITH query_name AS (subquery) [, ...]Jednoduchý příklad:
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';Klauzule SELECT
Klauzule SELECT je seznam výrazů oddělených čárkami, s volitelnými aliasy. Názvy sloupců musí být jedinečné.
SELECT select_expr [, ...]Příklady:
-- 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 eventsKlauzule FROM
Klauzule FROM určuje zdroj dat pro dotaz. Může jít buď o název tabulky, nebo o poddotaz. Název tabulky může odkazovat na název streamu nebo na tabulku vytvořenou v klauzuli WITH.
FROM from_itemTabulkám lze přiřadit aliasy:
SELECT e.user_id, e.amount
FROM user_events e
WHERE e.event_type = 'purchase'Klauzule WHERE
Klauzule WHERE filtruje data pomocí booleovských podmínek. Predikáty se aplikují na vstupní řádky.
WHERE conditionPříklady:
-- 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 NULLOperátor UNNEST
Operátor UNNEST převádí pole na více řádků. To je užitečné při zpracování datových typů seznamu.
Omezení UNNEST:
- Smí se objevit pouze v klauzuli SELECT
- V rámci jednoho příkazu SELECT lze rozbalit jen jedno pole
Příklad:
SELECT
UNNEST([1, 2, 3]) as numbers
FROM events;Výsledkem bude:
+---------+
| numbers |
+---------+
| 1 |
| 2 |
| 3 |
+---------+Více příkazů
Pipeline může obsahovat více INSERT příkazy oddělené středníky. Každý příkaz čte ze streamu a zapisuje do sinku. Pomocí více příkazů můžete směrovat události z jednoho streamu do několika sinků podle jejich obsahu.
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';Chcete-li přes Wrangler CLI zadat více příkazů najednou, předejte soubor pomocí parametru --sql-file příznak:
npx wrangler pipelines create my-pipeline --sql-file pipeline.sqlUkázkový příklad najdete v Rozdělení streamu do více tabulek Iceberg.