Поделиться через


CREATE STREAMING TABLE (конвейерные линии)

Потоковая таблица — это таблица с поддержкой потоковой или добавочной обработки данных. Потоковые таблицы поддерживаются конвейерами. При каждом обновлении потоковой таблицы новоиспечённые данные в исходных таблицах присоединяются к потоковой таблице. Таблицы потоковой передачи можно обновлять вручную или по расписанию.

Дополнительные сведения о выполнении или планировании обновлений см. в разделе "Запуск обновления конвейера".

Синтаксис

CREATE [OR REFRESH] [PRIVATE] STREAMING TABLE
  table_name
  [ table_specification ]
  [ table_clauses ]
  [ AS query ]

table_specification
  ( { column_identifier column_type [column_properties] } [, ...]
    [ column_constraint ] [, ...]
    [ , table_constraint ] [...] )

   column_properties
      { NOT NULL | COMMENT column_comment | column_constraint | MASK clause } [ ... ]

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

Параметры

  • REFRESH

    Если задано, создадит таблицу или обновит существующую таблицу и его содержимое.

  • ЧАСТНЫЙ

    Создает частную потоковую таблицу.

    • Они не добавляются в каталог и доступны только в определяемом конвейере.
    • Они могут иметь то же имя, что и существующий объект в каталоге. В конвейере, если частная потоковая таблица и объект в каталоге имеют то же имя, ссылки на это имя будут разрешены в частную потоковую таблицу.
    • Таблицы потоковой передачи сохраняются частным образом на протяжении всего времени работы конвейера, а не только при одном обновлении.

    Ранее частные потоковые таблицы создавались с параметром TEMPORARY.

  • table_name

    Имя только что созданной таблицы. Полное имя таблицы должно быть уникальным.

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

    Это необязательное предложение определяет список столбцов, их типов, свойств, описаний и ограничений столбцов.

  • ограничение_таблицы

    Это важно

    Эта функция доступна в общедоступной предварительной версии.

    При указании схемы можно определить первичные и внешние ключи. Ограничения являются информационными и не применяются. См. пункт CONSTRAINT в справочной информации по языку SQL.

    Замечание

    Чтобы определить ограничения таблицы, конвейер должен поддерживать Unity Catalog.

  • таблица_условий

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

    • ИСПОЛЬЗОВАНИЕ DELTA

      Задает формат данных. Единственным вариантом является DELTA.

      Это предложение является необязательным и по умолчанию используется delta.

    • РАЗДЕЛЁННО ПО

      Необязательный список одного или нескольких столбцов, используемых для секционирования в таблице. Взаимоисключающ с CLUSTER BY.

      Liquid Clustering предоставляет гибкое и оптимизированное решение для кластеризации. Рекомендуется использовать CLUSTER BY вместо PARTITIONED BY для конвейеров.

    • CLUSTER BY

      Включите кластеризацию жидкости в таблице и определите столбцы, используемые в качестве ключей кластеризации. Используйте автоматическую кластеризацию с CLUSTER BY AUTO, и Databricks интеллектуально выбирает ключи кластеризации для оптимизации производительности запросов. Взаимоисключающ с PARTITIONED BY.

      См. раздел "Использование кластеризации жидкости" для таблиц.

    • МЕСТОПОЛОЖЕНИЕ

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

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

      Необязательный STRING литерал для описания таблицы.

    • TBLPROPERTIES

      Необязательный список свойств таблицы.

    • С ROW FILTER

    Это важно

    Эта функция доступна в общедоступной предварительной версии.

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

    См. ROW FILTER пункт.

  • запрос

    Это предложение заполняет таблицу с помощью данных из query. Этот запрос должен быть потоковым запросом. Используйте ключевое слово STREAM для использования семантики потоковой передачи для чтения из источника. Если чтение сталкивается с изменением или удалением существующей записи, возникает ошибка. Самое безопасное — читать из статических или источников только для добавления. Для приема данных с коммитами изменений можно использовать Python и SkipChangeCommits опцию для обработки ошибок.

    При указании query и table_specification вместе схема таблицы, указанной в table_specification, должна содержать все столбцы, возвращаемые query, в противном случае возникает ошибка. Все столбцы, указанные в table_specification, но не возвращенные query, при запросе возвращают значения null.

    Дополнительные сведения о потоковой передаче данных см. в разделе Преобразование данных с помощью конвейеров.

Необходимые разрешения

Пользователь с правами выполнения для конвейера должен иметь следующие разрешения:

  • SELECT привилегии над базовыми таблицами, на которые ссылается потоковая таблица.
  • USE CATALOG привилегия в отношении родительского каталога и привилегия USE SCHEMA в отношении родительской схемы.
  • CREATE MATERIALIZED VIEW привилегии в схеме для потоковой таблицы.

Чтобы пользователь мог обновить конвейер, в котором определена потоковая таблица, требуется:

  • USE CATALOG привилегия в отношении родительского каталога и привилегия USE SCHEMA в отношении родительской схемы.
  • Владение таблицей потоковой передачи или REFRESH привилегиями в потоковой таблице.
  • Владелец потоковой таблицы должен иметь SELECT привилегии над базовыми таблицами, на которые ссылается потоковая таблица.

Для того чтобы пользователь мог запрашивать полученную потоковую таблицу, им требуется:

  • USE CATALOG привилегия в отношении родительского каталога и привилегия USE SCHEMA в отношении родительской схемы.
  • SELECT привилегия на потоковую таблицу.

Ограничения

  • Только владельцы таблиц могут обновлять потоковые таблицы, чтобы получить последние данные.
  • Использование команд ALTER TABLE запрещено в потоковых таблицах. Определение и свойства таблицы должны быть изменены с помощью инструкции CREATE OR REFRESH или ALTER STREAMING TABLE.
  • Эволюционирование схемы таблицы с помощью команд DML, таких как INSERT INTO, и MERGE не поддерживается.
  • Следующие команды не поддерживаются в таблицах потоковой передачи:
    • CREATE TABLE ... CLONE <streaming_table>
    • COPY INTO
    • ANALYZE TABLE
    • RESTORE
    • TRUNCATE
    • GENERATE MANIFEST
    • [CREATE OR] REPLACE TABLE
  • Переименование таблицы или изменение владельца не поддерживается.
  • Сгенерированные столбцы, идентификационные столбцы и столбцы по умолчанию не поддерживаются.

Примеры

-- Define a streaming table from a volume of files:
CREATE OR REFRESH STREAMING TABLE customers_bronze
AS SELECT * FROM STREAM read_files("/databricks-datasets/retail-org/customers/*", format => "csv")

-- Define a streaming table from a streaming source table:
CREATE OR REFRESH STREAMING TABLE customers_silver
AS SELECT * FROM STREAM(customers_bronze)

-- Define a table with a row filter and column mask:
CREATE OR REFRESH STREAMING TABLE customers_silver (
  id int COMMENT 'This is the customer ID',
  name string,
  region string,
  ssn string MASK catalog.schema.ssn_mask_fn COMMENT 'SSN masked for privacy'
)
WITH ROW FILTER catalog.schema.us_filter_fn ON (region)
AS SELECT * FROM STREAM(customers_bronze)

-- Define a streaming table that you can add flows into:
CREATE OR REFRESH STREAMING TABLE orders;