CREATE STREAMING TABLE (pipeline)
Uma tabela "diálogo" é uma tabela com suporte para "diálogo" ou processamento incremental de dados. As tabelas de transmissão são suportadas por pipeline. Cada vez que uma tabela de transmissão é atualizada, os dados adicionados às tabelas de origem são anexados à tabela de transmissão. Você pode refresh as tabelas de transmissão manualmente ou por meio de um programa.
Para saber mais sobre como executar uma atualização programada, consulte a execução de uma atualização pipeline.
Sintaxe
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 } } [ ... ]
Parâmetros
-
REFRESH
Se especificado, criará a tabela ou atualizará uma tabela existente e seu conteúdo.
-
PRIVADO
Cria uma tabela de transmissão privada.
- Eles não são adicionados ao catálogo e só são acessíveis dentro do pipeline de definição
- Eles podem ter o mesmo nome de um objeto existente no catálogo. Dentro do pipeline, se uma tabela de transmissão privada e um objeto no catálogo tiverem o mesmo nome, as referências ao nome serão resolvidas para a tabela de transmissão privada.
- As tabelas de transmissão privadas são persistidas apenas durante a vida útil do pipeline, não apenas durante uma única atualização.
Tabelas de transmissão privadas foram criadas anteriormente com o parâmetro
TEMPORARY. -
nome_da_tabela
O nome da tabela recém-criada. O nome da tabela totalmente qualificado deve ser exclusivo.
-
especificação_de_tabela
Esta cláusula opcional define a lista de colunas, seus tipos, propriedades, descrições e restrições de coluna.
-
Os nomes das colunas devem ser exclusivos e mapeados para as colunas de saída da consulta.
-
Especifica o tipo de dados da coluna. Nem todos os tipos de dados suportados pelo Databricks são suportados pelas tabelas de transmissão.
-
comentário_de_coluna
Um literal
STRINGopcional que descreve a coluna. Esta opção deve ser especificada junto comcolumn_type. Se o tipo de coluna não for especificado, o comentário da coluna será ignorado. -
Adiciona uma restrição que valida os dados conforme eles fluem para a tabela. Veja gerenciar a qualidade dos dados com expectativas pipeline.
-
Visualização
Este recurso está em Visualização Pública.
Adiciona uma função de máscara de coluna para tornar dados confidenciais anônimos.
Veja Filtros de linha e máscaras de coluna.
- restrição_de_tabela
Visualização
Este recurso está em Visualização Pública.
Ao especificar um esquema, você pode definir uma chave primária e uma chave estrangeira. As restrições são informativas e não são impostas. Veja a cláusula CONSTRAINT na referência da linguagem SQL.
Para definir restrições de tabela, seu pipeline deve ser um pipeline habilitado para o Unity Catalog.
-
cláusulas_de_tabela
Opcionalmente, especifique particionamento, comentários e propriedades definidas pelo usuário para a tabela. Cada subcláusula só pode ser especificada uma vez.
-
USANDO DELTA
Especifica o formato dos dados. A única opção é DELTA.
Esta cláusula é opcional e o padrão é DELTA.
-
PARTICIONADO POR
Uma lista opcional de uma ou mais colunas a serem usadas para particionamento na tabela. Mutuamente exclusivo com
CLUSTER BY.clustering líquido oferece uma solução flexível e otimizada para clustering. Considere usar
CLUSTER BYem vez dePARTITIONED BYpara pipeline. -
cluster POR
Habilite clustering líquido na tabela e defina as colunas a serem usadas como chave clustering . Use clustering líquido automático com
CLUSTER BY AUTOe Databricks escolhe de forma inteligente a chave clustering para otimizar o desempenho da consulta. Mutuamente exclusivo comPARTITIONED BY.Consulte Usar clustering líquido para tabelas.
-
Localização
Um local de armazenamento opcional para dados da tabela. Se não estiver definido, o sistema adotará como padrão o local de armazenamento do pipeline.
-
comentário
Um literal
STRINGopcional para descrever a tabela. -
PROPRIEDADES TBL
Uma lista opcional de propriedades de tabela para a tabela.
-
COM FILTRO DE LINHA
-
Visualização
Este recurso está em Visualização Pública.
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 como VERDADEIRO. Isso é útil para controle de acesso refinado, porque permite que a função inspecione a identidade e as associações de grupo do usuário que faz a chamada para decidir se deve filtrar determinadas linhas.
Veja a cláusulaROW FILTER.
-
Esta cláusula preenche a tabela usando os dados de
query. Esta consulta deve ser uma consulta de transmissão . Use a palavra-chave transmissão para usar a semântica de transmissão para ler a fonte. Se a leitura encontrar uma alteração ou exclusão em um registro existente, um erro será gerado. É mais seguro ler de fontes estáticas ou somente de acréscimos. Para ingerir dados que tenham confirmação de alteração, você pode usar Python e a opçãoSkipChangeCommitspara lidar com erros.Quando você especifica um
querye umtable_specificationjuntos, o esquema da tabela especificado emtable_specificationdeve conter todas as colunas retornadas peloquery, caso contrário, você receberá um erro. Todas as colunas especificadas emtable_specification, mas não retornadas porquery, retornam valoresnullquando consultadas.Para mais informações sobre transmissão de dados, veja transformação de dados com pipeline.
Permissões necessárias
O usuário execução-as para um pipeline deve ter as seguintes permissões:
SELECTprivilégio sobre as tabelas base referenciadas pela tabela de transmissão.USE CATALOGprivilégio no catálogo pai e o privilégioUSE SCHEMAno esquema pai.CREATE MATERIALIZED VIEWprivilégio no esquema da tabela de transmissão.
Para que um usuário possa atualizar o pipeline no qual a tabela de transmissão está definida, ele precisa:
USE CATALOGprivilégio no catálogo pai e o privilégioUSE SCHEMAno esquema pai.- Propriedade da tabela transmissão ou privilégio
REFRESHna tabela transmissão. - O proprietário da tabela de transmissão deve ter o privilégio
SELECTsobre as tabelas base referenciadas pela tabela de transmissão.
Para que um usuário possa consultar a tabela de transmissão resultante, ele precisa:
USE CATALOGprivilégio no catálogo pai e o privilégioUSE SCHEMAno esquema pai.SELECTprivilégio sobre a tabela de transmissão.
Limitações
-
Somente os proprietários das tabelas podem refresh as tabelas de transmissão para obter os dados mais recentes.
-
ALTER TABLEcomando não são permitidos em tabelas de transmissão. A definição e as propriedades da tabela devem ser alteradas por meio da instruçãoCREATE OR REFRESHou ALTER STREAMING TABLE . -
A evolução do esquema da tabela por meio de comandos DML como
INSERT INTOeMERGEnão é suportada. -
Os seguintes comandos não são suportados em tabelas de transmissão:
CREATE TABLE ... CLONE <streaming_table>COPY INTOANALYZE TABLERESTORETRUNCATEGENERATE MANIFEST[CREATE OR] REPLACE TABLE
-
Não há suporte para renomear a tabela ou alterar o proprietário.
-
Colunas geradas, colunas de identidade e colunas default não são suportadas.
Exemplos
-- 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;