Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Потоковая таблица — это таблица с поддержкой потоковой или добавочной обработки данных. Потоковые таблицы поддерживаются конвейерами. При каждом обновлении потоковой таблицы новоиспечённые данные в исходных таблицах присоединяются к потоковой таблице. Таблицы потоковой передачи можно обновлять вручную или по расписанию.
Дополнительные сведения о выполнении или планировании обновлений см. в разделе "Запуск обновления конвейера".
Синтаксис
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
Имя только что созданной таблицы. Полное имя таблицы должно быть уникальным.
спецификация таблицы
Это необязательное предложение определяет список столбцов, их типов, свойств, описаний и ограничений столбцов.
-
Имена столбцов должны быть уникальными и сопоставляться с выходными столбцами запроса.
-
Указывает тип данных столбца. Не все типы данных, поддерживаемые Azure Databricks, поддерживаются стриминговыми таблицами.
column_comment
Необязательное литеральное значение
STRING, описывающее столбец. Этот параметр должен быть указан вместе сcolumn_type. Если тип столбца не указан, комментарий столбца пропускается.-
Добавляет ограничение, которое проверяет данные по мере их поступления в таблицу. См. Управление качеством данных, используя ожидания конвейера.
-
Это важно
Эта функция доступна в общедоступной предварительной версии.
Добавляет функцию маски столбца для анонимизации конфиденциальных данных.
-
ограничение_таблицы
Это важно
Эта функция доступна в общедоступной предварительной версии.
При указании схемы можно определить первичные и внешние ключи. Ограничения являются информационными и не применяются. См. пункт 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 INTOANALYZE TABLERESTORETRUNCATEGENERATE 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;