Criar uma tabela Apache Iceberg™ no Snowflake

Crie Tabelas Apache Iceberg™ no Snowflake para diferentes Opções de catálogo. Você pode criar uma tabela Iceberg usando o comando CREATE ICEBERG TABLE.

Nota

Gerenciado pelo Snowflake

Para criar uma tabela Iceberg com o Snowflake como catálogo, você especifica um volume externo e um local base (diretório no volume externo) onde o Snowflake pode gravar os dados e metadados da tabela.

Você pode usar uma das seguintes opções de armazenamento:

Para definir colunas de tabela, você pode usar tipos de dados Iceberg. Para obter mais informações, consulte Tipos de dados para tabelas Apache Iceberg™.

O exemplo a seguir cria uma tabela Iceberg com Snowflake como catálogo Iceberg e usa o valor da coluna chamada int_col para particionar a tabela:

CREATE OR REPLACE ICEBERG TABLE my_iceberg_table (
    boolean_col boolean,
    int_col int,
    long_col long,
    float_col float,
    double_col double,
    decimal_col decimal(10,5),
    string_col string,
    fixed_col fixed(10),
    binary_col binary,
    date_col date,
    time_col time,
    timestamp_ntz_col timestamp_ntz(6),
    timestamp_ltz_col timestamp_ltz(6)
  )
  PARTITION BY (int_col)
  CATALOG = 'SNOWFLAKE'
  EXTERNAL_VOLUME = 'my_ext_vol'
  BASE_LOCATION = 'my/relative/path/from/extvol';

Nota

Como alternativa, use a sintaxe variante. Para obter mais informações, consulte CREATE TABLE … AS SELECT e CREATE ICEBERG TABLE … LIKE.

Depois de criar uma tabela que usa Snowflake como catálogo, você pode realizar ações como:

Para obter mais informações, consulte Gerenciar tabelas Apache Iceberg™.

Catálogo externo

Para criar uma tabela Iceberg que use um catálogo externo ou nenhum catálogo, você deve especificar um volume externo e uma integração de catálogo. Se você usar um catálogo Iceberg externo, também poderá precisar especificar parâmetros adicionais. Por exemplo, ao usar o AWS Glue como catálogo, você deve especificar um nome de tabela de catálogo.

Ao criar uma tabela Iceberg que usa um catálogo externo, o Snowflake executa uma atualização inicial de metadados. Você também pode atualizar manualmente os metadados da tabela usando o comando ALTER ICEBERG TABLE … REFRESH para sincronizar os metadados com as alterações mais recentes da tabela. Para obter mais informações, consulte Atualização dos metadados da tabela.

Nota

O comando CREATE ICEBERG TABLE oferece suporte a diferentes opções para diferentes catálogos externos. Os exemplos desta seção especificam apenas algumas das opções disponíveis. Para visualizar a sintaxe completa, consulte as páginas a seguir:

Você também pode configurar a governança de dados (por exemplo, políticas de mascaramento ou de acesso a linhas) para tabelas gerenciadas externamente usando ALTER ICEBERG TABLE.

Arquivos Iceberg no armazenamento de objetos

O exemplo a seguir cria uma tabela Iceberg a partir de metadados Iceberg no armazenamento em nuvem externo, especificando um caminho relativo para os metadados da tabela no volume externo (METADATA_FILE_PATH).

CREATE ICEBERG TABLE myIcebergTable
  EXTERNAL_VOLUME='icebergMetadataVolume'
  CATALOG='icebergCatalogInt'
  METADATA_FILE_PATH='path/to/metadata/v1.metadata.json';

Arquivos Delta no armazenamento de objetos

O comando de exemplo a seguir cria uma tabela Iceberg a partir de arquivos de tabela Delta no armazenamento de objetos com a atualização automatizada.

O exemplo especifica um volume externo associado ao local da nuvem dos arquivos da tabela Delta, uma integração de catálogo configurada para Delta e um valor para o parâmetro BASE_LOCATION necessário.

CREATE ICEBERG TABLE my_delta_iceberg_table
  CATALOG = delta_catalog_integration
  EXTERNAL_VOLUME = delta_external_volume
  BASE_LOCATION = 'relative/path/from/ext/vol/'
  AUTO_REFRESH = TRUE;

Se a tabela Delta usar um esquema de particionamento, o Snowflake interpretará automaticamente o esquema do log Delta.

Catálogo Apache Iceberg™ REST

O exemplo a seguir cria uma tabela que usa um catálogo Iceberg REST remoto.

CREATE OR REPLACE ICEBERG TABLE my_iceberg_table
  EXTERNAL_VOLUME = 'my_external_volume'
  CATALOG = 'my_rest_catalog_integration'
  CATALOG_TABLE_NAME = 'my_remote_table'
  AUTO_REFRESH = TRUE;

Para obter mais exemplos por caso de uso, consulte os seguintes tópicos: