Criar tabelas Apache Iceberg™ dinâmicas¶
Este tópico explica como criar os seguintes tipos de tabelas dinâmicas e suas considerações associadas:
Tabelas dinâmicas que leem tabelas Apache Iceberg™ gerenciadas pelo Snowflake como tabela base.
Tabelas Iceberg dinâmicas, que armazenam resultados de consulta no formato de tabela Iceberg.
A tabela base Iceberg gerenciada pelo Snowflake pode ser uma tabela Iceberg gerenciada pelo Snowflake regular ou uma tabela Iceberg gerenciada pelo Snowflake dinâmica.
Criar tabelas dinâmicas que leem tabelas Iceberg¶
Tabelas dinâmicas que leem de uma tabela Iceberg gerenciada pelo Snowflake são úteis se você deseja que seus pipelines operem com dados em uma tabela Iceberg gerenciada pelo Snowflake ou se deseja que seus dados processados possam ser consultados por outros mecanismos, como usar o Apache Iceberg SDK com Spark.
Criar uma tabela dinâmica a partir de uma tabela Iceberg é semelhante a criar uma tabela dinâmica a partir de uma tabela regular. Para fazer isso, execute a instrução SQL CREATE DYNAMIC TABLE como você faria para uma tabela regular.
Criar tabelas Iceberg dinâmicas¶
As tabelas Iceberg dinâmicas combinam os benefícios das tabelas dinâmicas e das tabelas Iceberg gerenciadas pelo Snowflake, oferecendo recursos como gerenciamento de armazenamento em nuvem externo, transformação automatizada de dados e otimização de desempenho.
As tabelas Iceberg dinâmicas integram-se com dados lakes, o que permite armazenar dados em um armazenamento em nuvem externo, como AWS S3 ou Azure Blob Storage, enquanto são gerenciadas pelo Snowflake. Essas tabelas oferecem suporte a transações ACID, evolução de esquema, particionamento oculto e snapshots de tabela.
A transformação automatizada de dados com tabelas Iceberg dinâmicas usa SQL declarativo para definir o estado final desejado sem gerenciar etapas intermediárias. O Snowflake lida com a orquestração, o agendamento e a atualização de transformações de dados com base nas metas de atualização de dados especificadas.
O desempenho é otimizado por meio de processamento incremental, que processa apenas dados alterados para melhorar o desempenho e reduzir custos em comparação com atualizações completas de dados. Além disso, você pode fazer a transição entre o processamento em lote e o streaming de dados com um comando simples, proporcionando flexibilidade nos fluxos de trabalho de processamento de dados.
Exemplos de casos de uso para tabelas Iceberg dinâmicas incluem o seguinte:
Integração do Data Lake: você pode armazenar grandes conjuntos de dados de forma econômica enquanto realiza transformações e análises no Snowflake, aproveitando o formato Iceberg para consultas e gerenciamento eficientes.
Definição de pipelines de transformação contínua de dados: ao usar tabelas dinâmicas, você pode garantir que os dados estejam sempre atualizados sem intervenção manual e lidar com fluxos de dados de alta velocidade, de forma eficiente, com processamento incremental.
Para criar uma tabela Iceberg dinâmica, execute a instrução CREATE DYNAMIC ICEBERG TABLE SQL. Por exemplo, para criar uma tabela Iceberg dinâmica chamada product
que lê de my_iceberg_table
, use a seguinte sintaxe:
CREATE DYNAMIC ICEBERG TABLE product (date TIMESTAMP_NTZ, id NUMBER, content STRING)
TARGET_LAG = '20 minutes'
WAREHOUSE = mywh
EXTERNAL_VOLUME = 'my_external_volume'
CATALOG = 'SNOWFLAKE'
BASE_LOCATION = 'my_iceberg_table'
AS
SELECT product_id, product_name FROM staging_table;
Concessões futuras em tabelas Iceberg dinâmicas¶
Para garantir o acesso a quaisquer novas tabelas Iceberg dinâmicas criadas no esquema, use a sintaxe GRANT … ON FUTURE ICEBERG TABLES sem a palavra-chave DYNAMIC
. Por exemplo:
GRANT <privilege> ON FUTURE ICEBERG TABLES IN SCHEMA my_schema TO ROLE my_role;
Se você usar a palavra-chave DYNAMIC
, a concessão não fornecerá acesso às novas tabelas Iceberg dinâmicas criadas no esquema. Por exemplo, o comando a seguir não se aplica a tabelas Iceberg dinâmicas:
GRANT <privilege> ON FUTURE DYNAMIC TABLES IN SCHEMA my_schema TO ROLE my_role;
Considerações e limitações¶
As tabelas Iceberg dinâmicas oferecem suporte aos mesmos tipos de dados que as tabelas Iceberg regulares no Snowflake. Para obter mais informações, consulte Tipos de dados suportados.
O Catálogo é um parâmetro de conta, esquema ou banco de dados que você pode configurar para ser implícito, assim como as tabelas Iceberg gerenciadas Snowflake.
As tabelas Iceberg dinâmicas atualmente não oferecem suporte à cláusula
IF NOT EXISTS
. Usar a cláusulaIF NOT EXISTS
gera um erro se a tabela de destino já existir.Atualmente, tabelas Iceberg dinâmicas são aceitas apenas para instruções
CREATE
. EspecificarDYNAMIC ICEBERG
em qualquer outro comando (por exemplo,ALTER DYNAMIC ICEBERG TABLE <name>
) resulta em um erro.