Pular para o conteúdo principal

CREATE STREAMING TABLE ( Declarative pipeline)LakeFlow

Uma tabela de transmissão é uma tabela com suporte para transmissão ou processamento incremental de dados. As tabelas de transmissão são apoiadas pelo pipeline declarativo LakeFlow. Cada vez que uma tabela de transmissão é atualizada, os dados adicionados às tabelas de origem são anexados à tabela de transmissão. O senhor pode refresh tabelas de transmissão manualmente ou em um programador.

Para saber mais sobre como executar ou programar a atualização, consulte executar uma atualização em LakeFlow Declarative 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ó podem ser acessados dentro do pipeline de definição
    • Eles podem ter o mesmo nome de um objeto existente no catálogo. No site 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 mantidas apenas durante a vida útil do site pipeline, não apenas em uma única atualização.

    As 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 qualificada deve ser exclusivo.

  • especificação_tabela

    Essa cláusula opcional define a lista de colunas, seus tipos, propriedades, descrições e restrições de coluna.

    • identificador de coluna

      Os nomes das colunas devem ser exclusivos e mapeados para as colunas de saída da consulta.

    • tipo_coluna

      Especifica o tipo de dados da coluna. Nem todos os tipos de dados suportados pelo site Databricks são suportados pelas tabelas de transmissão.

    • comentário_coluna

      Um literal STRING opcional descrevendo a coluna. Essa opção deve ser especificada junto com column_type. Se o tipo de coluna não for especificado, o comentário da coluna será ignorado.

    • restrição_coluna

      Adiciona uma restrição que valida os dados à medida que eles fluem para a tabela. Veja como gerenciar a qualidade dos dados com pipeline expectativas.

    • Cláusula MASK

info

Visualização

Esse recurso está em Public Preview.

Adiciona uma função de máscara de coluna para anonimizar dados confidenciais.

Consulte Filtro sensível à tabela uso de dados filtros de linha e máscaras de coluna.

  • restrição_de_tabela
info

Visualização

Esse recurso está em Public Preview.

Ao especificar um esquema, o senhor pode definir chaves primárias e estrangeiras. As restrições são informativas e não são aplicadas. Consulte a cláusula CONSTRAINT na referência da linguagem SQL.

nota

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.

      Essa cláusula é opcional e o padrão é DELTA.

    • PARTICIONADO POR

      Uma lista opcional de uma ou mais colunas a serem usadas para particionar na tabela. Mutuamente exclusivo com CLUSTER BY.

      O Liquid clustering oferece soluções flexíveis e otimizadas para clustering. Considere usar CLUSTER BY em vez de PARTITIONED BY para o pipeline declarativo LakeFlow.

    • agrupamento POR

      Habilite o clustering líquido na tabela e defina as colunas a serem usadas como chave clustering. Mutuamente exclusivo com PARTITIONED 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 STRING opcional para descrever a tabela.

    • PROPRIEDADES DA TABELA

      Uma lista opcional de propriedades da tabela.

    • COM FILTRO DE LINHA

info

Visualização

Esse recurso está em Public Preview.

Adiciona uma função de filtro de linha à tabela. As consultas futuras dessa tabela recebem um subconjunto das linhas para as quais a função é avaliada como TRUE. Isso é útil para um controle de acesso refinado, pois permite que a função inspecione a identidade e as associações de grupo do usuário que está invocando para decidir se deseja filtrar determinadas linhas.

Veja a cláusulaROW FILTER.

  • query

    Essa cláusula preenche a tabela usando os dados de query. Essa 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 partir da 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 anexadas. Para ingerir dados com commit de alteração, o senhor pode usar Python e a opção SkipChangeCommits para lidar com erros.

    Quando você especifica query e table_specification juntos, o esquema de tabela especificado em table_specification deve conter todas as colunas retornadas pelo query, caso contrário, você receberá um erro. Todas as colunas especificadas em table_specification, mas não retornadas por query, retornam valores null quando consultadas.

    Para obter mais informações sobre transmissão de dados, consulte transformação de dados com pipeline.

Permissões necessárias

O usuário executor de um pipeline deve ter as seguintes permissões:

  • SELECT privilégio sobre as tabelas de base referenciadas pela tabela de transmissão.
  • USE CATALOG privilégio no catálogo principal e o privilégio USE SCHEMA no esquema principal.
  • CREATE MATERIALIZED VIEW no esquema da tabela de transmissão.

Para que um usuário possa atualizar o site pipeline em que a tabela de transmissão está definida, ele precisa

  • USE CATALOG privilégio no catálogo principal e o privilégio USE SCHEMA no esquema principal.
  • Propriedade da tabela de transmissão ou REFRESH privilégio na tabela de transmissão.
  • O proprietário da tabela de transmissão deve ter o privilégio SELECT sobre as tabelas de base referenciadas pela tabela de transmissão.

Para que um usuário possa consultar a tabela de transmissão resultante, é necessário:

  • USE CATALOG privilégio no catálogo principal e o privilégio USE SCHEMA no esquema principal.
  • SELECT privilégio sobre a tabela de transmissão.

Limitações

  • Somente os proprietários de tabelas podem refresh transmitir tabelas para obter os dados mais recentes.

  • ALTER TABLE comando não são permitidos nas tabelas de transmissão. A definição e as propriedades da tabela devem ser alteradas por meio da instrução CREATE OR REFRESH ou ALTER STREAMING TABLE.

  • Não há suporte para a evolução do esquema da tabela por meio de comandos DML, como INSERT INTO e MERGE.

  • Os comandos a seguir não são compatíveis com as tabelas de transmissão:

    • CREATE TABLE ... CLONE <streaming_table>
    • COPY INTO
    • ANALYZE TABLE
    • RESTORE
    • TRUNCATE
    • GENERATE MANIFEST
    • [CREATE OR] REPLACE TABLE
  • Não há suporte para renomear a tabela ou alterar o proprietário.

  • Não há suporte para colunas geradas, colunas de identidade e colunas default.

Exemplos

SQL
-- 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;