Criar tabelas Apache Iceberg™ dinâmicas¶
Este tópico explica como criar tabelas Iceberg dinâmicas, que armazenam resultados de consultas no formato de tabela Iceberg.
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 que lê em my_iceberg_table, use a seguinte sintaxe:
Configurar particionamento, tamanho de arquivo e layout de caminho¶
As tabelas Iceberg dinâmicas oferecem suporte às propriedades de tabela PARTITION_BY, TARGET_FILE_SIZE e PATH_LAYOUT. Essas propriedades funcionam da mesma maneira que nas tabelas Iceberg regulares gerenciadas pelo Snowflake.
PARTITION_BY: especifica uma ou mais expressões de partição Iceberg que controlam como o Snowflake particiona os arquivos de dados na tabela. Por exemplo, para particionar uma tabela Iceberg dinâmica pelo ano de uma coluna
order_time:Para saber as transformações de partição compatíveis, consulte Parâmetros de expressão de partição (partitionExpression).
TARGET_FILE_SIZE: especifica um tamanho de arquivo Parquet de destino para a tabela. Usa o padrão
AUTO, que permite ao Snowflake escolher o tamanho do arquivo com base nas características da tabela. Para obter mais informações, consulte Definir um tamanho de arquivo de destino.PATH_LAYOUT: especifica se o Snowflake grava arquivos de dados Parquet usando um layout de caminho simples ou hierárquico. O padrão é
FLAT. UseHIERARCHICALcomPARTITION_BYpara habilitar caminhos particionados em estilo Hive no diretóriodata/.
Para obter detalhes completos dos parâmetros, consulte CREATE DYNAMIC ICEBERG 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:
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:
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 EXISTSgera um erro se a tabela de destino já existir.Atualmente, tabelas Iceberg dinâmicas são aceitas apenas para instruções
CREATE. EspecificarDYNAMIC ICEBERGem qualquer outro comando (por exemplo,ALTER DYNAMIC ICEBERG TABLE <name>) resulta em um erro.Não é possível clonar tabelas Iceberg dinâmicas. Além disso, clonar um banco de dados ou esquema contendo uma tabela Iceberg dinâmica não clona a tabela no novo local.