INTEGRITY Dokumentace

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 events

Klauzule 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_item

Tabulká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 condition

Pří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 NULL

Operá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:

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.sql

Ukázkový příklad najdete v Rozdělení streamu do více tabulek Iceberg.