CREATE STREAM

Определение потока.

Синтаксис

CREATE STREAM [IF NOT EXISTS] stream_name [ (column_name [, ...] ) ]
AS(
    SELECT [ { * | expression [ [ AS ] output_name ] } [, ...] ]
    FROM STREAMING { ALL | INSERT |UPDATE | DELETE } table_name
    [ WHERE condition ]
    [ join_type ]
    [ GROUP BY grouping_element [, ...] ]
    [ WITH [ NO ] DATA ]
)
[ USING MARS3 ]
[ WITH ( storage_parameter [= value] [, ... ] ) ]
[ DISTRIBUTED BY ( [column_name [, ...] ] ) ]

Описание

CREATE STREAM объявляет определение потока и задаёт внутренние функции управления в базе данных.

Параметры

  • stream_name [ (column_name [, ...] ) ]

    • stream_name: таблица потока. Если используется как конечная точка потока, результат вычислений сохраняется в этой таблице.
    • (column_name [, ...] ): сопоставление полей, может быть опущено. При отсутствии используются по умолчанию поля, перечисленные в секции SELECT блока AS.
  • AS

    • Блок AS определяет логику обработки потока в виде SQL-запроса.
  • SELECT [ { * | expression [ [ AS ] output_name ] } [, ...] ]

    • Указание столбцов для выборки, которые могут быть стандартными полями исходной таблицы либо новыми полями (результатами агрегации и т.п.).
  • FROM STREAMING { ALL | INSERT |UPDATE | DELETE } table_name

    • FROM STREAMING: объявляет, что данные инкрементально подписываются из исходной таблицы в потоке; при этом в соответствующей базе данных запускается набор процессов для отслеживания изменений данных в таблице.
    • ALL | INSERT |UPDATE | DELETE: выбор метода подписки потока на исходную таблицу, то есть отслеживание определённого типа изменений данных в исходной таблице. ALL используется для отслеживания операций вставки, обновления и удаления; INSERT — только вставки; UPDATE — только обновления; DELETE — только удаления.
    • table_name: исходная таблица (входная таблица) потока.
  • join_type

    • В настоящее время поддерживаются только операции [ INNER ] JOIN; операции типа LEFT [OUTER] JOIN, RIGHT [OUTER] JOIN и другие [OUTER] JOIN будут добавлены в последующих версиях.
  • WITH [NO] DATA

    • Указывает, требуется ли обработка исторических данных исходной таблицы при создании потока. [NO] означает, что обработка не требуется.
  • USING MARS3

    • По умолчанию создаётся как HEAP-таблица; с помощью этого параметра можно указать создание таблицы MARS3.
  • WITH ( storage_parameter [= value] [, ... ] )

    • За инструкциями по использованию обратитесь к разделу CREATE_TABLE.
  • DISTRIBUTED BY ( [column_name [, ...] ] )

    • Политика распределения таблиц в базе данных YMatrix.

Пример

Создание базового потока.

CREATE STREAM s1(id, c1, ts, arrive_s1) 
AS ( 
    SELECT *, clock_timestamp() 
    FROM STREAMING t1
    WITH NO DATA 
) 
DISTRIBUTED BY (id); 

Создание потока с использованием движка MARS3 и указанием типов и уровней сжатия данных.

CREATE STREAM s4(id, c1, ts, arrive_s4)
AS (
 SELECT *, clock_timestamp()
 FROM STREAMING t4
 WITH NO DATA
)
USING mars3
WITH (compresstype='zstd', compresslevel=1)
DISTRIBUTED BY (id, arrive_s4);

Дополнительную информацию см. в разделе Примеры функций потоковой обработки