CREATE TABLE ... FLOW (конвейеры)

Important

Эта функция доступна в бета-версии.

Используйте инструкцию CREATE TABLE ... FLOW для создания управляемой таблицы в конвейере, написанной одним или несколькими потоками.

Syntax

CREATE TABLE
  table_name
  [ table_specification ]
  [ table_clauses ]
  [ flow_clause ]

table_specification
  ( { column_identifier column_type [column_properties] } [, ...]
    [ CONSTRAINT expectation_name EXPECT (expectation_expr)
        [ ON VIOLATION { FAIL UPDATE | DROP ROW } ] ] [, ...] )

table_clauses
  { PARTITIONED BY (col [, ...]) |
    CLUSTER BY clause |
    LOCATION path |
    COMMENT table_comment |
    TBLPROPERTIES clause |
    WITH { ROW FILTER clause } } [ ... ]

flow_clause
  FLOW INSERT [ONCE] BY NAME query

Чтобы развернуть несколько источников в одну управляемую таблицу, объявите несколько потоков, предназначенных для него с помощью CREATE FLOW (конвейеров).

CREATE FLOW flow_name AS INSERT INTO table_name BY NAME query

Parameters

  • table_name

    Имя создаваемой управляемой таблицы. Если имя не указано, таблица создается в целевой схеме конвейера. Имя не должно принадлежать к таблице потоковой передачи.

  • спецификация таблицы

    При необходимости определяет столбцы, их типы, свойства и описания. Если опущено, схема выводится из запроса потока.

  • CONSTRAINT EXPECTATION_NAME ОЖИДАТЬ (expectation_expr) [ ON VIOLATION { FAIL UPDATE | DROP ROW } ]

    Добавляет ожидания по качеству данных в управляемую таблицу. Эти ожидания по качеству данных можно отслеживать со временем и получать доступ через журнал событий конвейера. Ожидание FAIL UPDATE приводит к сбою обработки при создании таблицы, а также обновлении таблицы. Ожидание DROP ROW приводит к тому, что вся строка будет удалена, если ожидание не выполнено. См. Управление качеством данных, используя ожидания конвейера.

    expectation_expr может состоять из литералов, идентификаторов столбцов внутри таблицы и детерминированных встроенных SQL-функций или операторов, за исключением:

    Кроме того, expectation_expr не должен содержать какой-либо вложенный запрос.

  • РАЗДЕЛЕНО ПО (col [, ...])

    При необходимости секционирует таблицу по подмножествам столбцов.

  • CLUSTER BY оговорка

    При необходимости включает кластеризацию жидкости в таблице. Не удается объединить PARTITIONED BY и CLUSTER BY.

  • LOCATION путь

    Необязательное расположение хранилища для данных таблицы.

  • КОММЕНТАРИЙ table_comment

    Литерал STRING , описывающий таблицу.

  • Предложение TBLPROPERTIES

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

  • Предложение WITH ROW FILTER

    Добавляет функцию фильтра строк в таблицу. Будущие запросы для этой таблицы получают подмножество строк, для которых функция оценивается TRUE.

  • FLOW INSERT [ОДИН РАЗ] ЗАПРОС BY NAME

    Определяет поток добавления, который вставляет результат query в таблицу, сопоставляя столбцы результатов с столбцами таблицы по имени. query может ссылаться на пакеты или источники потоковой передачи. ONCE выполняет поток один раз (например, для обратной заполнения), а не во всех обновлениях. Каждый именованный поток обрабатывает входные данные ровно один раз на обновление конвейера, идентичный FLOW INSERT BY NAME потоковой таблице.

Ограничения

  • Управляемые таблицы не поддерживают потоки изменений CDC. AUTO CDC INTO(SQL) или apply_changes / apply_changes_from_snapshot (Python) для управляемой таблицы завершается сбоемMANAGED_TABLE_DOES_NOT_SUPPORT_CDC. CREATE STREAMING TABLE Используйте (конвейеры) для целевых объектов CDC.
  • Управляемые таблицы не поддерживаются FLOW ... REPLACE WHERE. Поддерживается только FLOW INSERT BY NAME.
  • Управляемые таблицы поддерживаются только в конвейерах с каталогом Unity. Хранилище метаданных Hive не поддерживается.
  • Нельзя повторно использовать имя существующей потоковой таблицы для управляемой таблицы. Сначала удалите таблицу потоковой передачи или оператор завершается CANNOT_SWITCH_STREAMING_TABLE_TO_MANAGED_TABLEошибкой.

Примеры

-- Create a managed table populated by an append flow
CREATE TABLE output
FLOW INSERT BY NAME SELECT id FROM LIVE.source;

-- Create a partitioned managed table from a streaming source
CREATE TABLE events
PARTITIONED BY (bucket)
FLOW INSERT BY NAME
  SELECT id, bucket FROM STREAM read_files('abfss://my_path', format => 'json');

-- Create a managed table with a data quality expectation that drops violating rows
CREATE TABLE valid_events
  (CONSTRAINT positive_id EXPECT (id > 0) ON VIOLATION DROP ROW)
FLOW INSERT BY NAME SELECT id FROM LIVE.source;

Дополнительные ресурсы