Pular para o conteúdo principal

CREATE STREAMING TABLE ( )DLT

Uma tabela de transmissão é uma tabela com suporte para transmissão ou processamento incremental de dados. As tabelas de transmissão definidas em um pipeline Notebook são apoiadas por um DLT pipeline. 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 um DLT 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 a possibilidade de usar CLUSTER BY em vez de PARTITIONED BY para DLT.

    • 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 Delta.

    • 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 o Delta Sharing.

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