Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Importante
Esse recurso está em Beta.
Use a CREATE TABLE ... FLOW instrução para criar uma tabela gerenciada em um pipeline, escrito por um ou mais fluxos.
Sintaxe
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
Para inserir várias fontes em uma tabela gerenciada, declare vários fluxos direcionados a ela com CREATE FLOW (pipelines):
CREATE FLOW flow_name AS INSERT INTO table_name BY NAME query
Parameters
table_name
O nome da tabela gerenciada a ser criada. Se o nome não for qualificado, a tabela será criada no esquema de destino do pipeline. O nome ainda não deve pertencer a uma tabela de streaming.
especificação_da_tabela
Opcionalmente, define as colunas, seus tipos, propriedades e descrições. Se omitido, o esquema será inferido da consulta de fluxo.
CONSTRAINT expectation_name ESPERE (expressão_de_expectativa) [ EM CASO DE VIOLAÇÃO { FALHA UPDATE | DESCARTAR LINHA } ]
Adiciona expectativas de qualidade dos dados à tabela gerenciada. Essas expectativas de qualidade dos dados podem ser acompanhadas ao longo do tempo e acessadas através do registro de eventos do pipeline. Uma
FAIL UPDATEexpectativa causa a falha do processamento tanto ao criar a tabela quanto ao atualizá-la. Uma expectativaDROP ROWfaz com que toda a linha seja removida se a expectativa não for atendida. Confira Gerenciar a qualidade dos dados com as expectativas do pipeline.expectation_exprpode ser composta por literais, identificadores de coluna dentro da tabela e funções ou operadores SQL determinísticos e embutidos em SQL exceto:-
Funções de agregação
- Funções de janela analítica
- Classificação de funções de janela
- Funções geradoras com valor de tabela
Além disso,
expectation_exprnão deve conter nenhuma subconsulta.-
Funções de agregação
PARTICIONADO POR (col [, ...])
Opcionalmente, particiona a tabela por um subconjunto de colunas.
Cláusula CLUSTER BY
Opcionalmente, habilita o clustering líquido na tabela. Você não pode combinar
PARTITIONED BYeCLUSTER BY.caminho LOCATION
Um local de armazenamento opcional para os dados da tabela.
COMENTÁRIO table_comment
Um
STRINGliteral que descreve a tabela.Cláusula TBLPROPERTIES
Opcionalmente, define uma ou mais propriedades de tabela definidas pelo usuário.
Cláusula WITH ROW FILTER
Adiciona uma função de filtro de linha à tabela. Consultas futuras para essa tabela recebem um subconjunto das linhas para as quais a função é avaliada
TRUEcomo .FLUXO INSERT [UMA VEZ] POR CONSULTA DE NOME
Define um fluxo de acréscimo que insere o resultado na tabela, correspondendo colunas de
queryresultado a colunas de tabela por nome.querypode fazer referência a fontes de lote ou streaming.ONCEexecuta o fluxo uma única vez (por exemplo, para um backfill) em vez de em cada atualização. Cada fluxo nomeado processa sua entrada exatamente uma vez por atualização de pipeline, idêntica aFLOW INSERT BY NAMEem uma tabela de streaming.
Limitações
- As tabelas gerenciadas não dão suporte a fluxos de alteração CDC.
AUTO CDC INTO(SQL) ouapply_changes/apply_changes_from_snapshot(Python) em uma tabela gerenciada falha comMANAGED_TABLE_DOES_NOT_SUPPORT_CDC. Use um CREATE STREAMING TABLE (pipelines) para destinos CDC. - Tabelas gerenciadas não dão suporte
FLOW ... REPLACE WHEREa . Há suporte apenas paraFLOW INSERT BY NAME. - As tabelas gerenciadas têm suporte apenas em pipelines com o Catálogo do Unity. Não há suporte para o metastore do Hive.
- Não é possível reutilizar o nome de uma tabela de streaming existente para uma tabela gerenciada. Solte a tabela de streaming primeiro ou a instrução falha com
CANNOT_SWITCH_STREAMING_TABLE_TO_MANAGED_TABLE.
Exemplos
-- 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;