Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
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;