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 Snowflake como catálogo, você deve especificar um volume externo e um local base (diretório no volume externo) onde o Snowflake pode gravar dados e metadados da tabela. Para obter instruções sobre como criar um volume externo, consulte Configuração de um volume externo.

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.

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)
  )
  CATALOG = 'SNOWFLAKE'
  EXTERNAL_VOLUME = 'my_ext_vol'
  BASE_LOCATION = 'my/relative/path/from/extvol';
Copy

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.

AWS Glue

Importante

Você deve configurar uma integração de catálogo para o AWS Glue para estabelecer uma relação de confiança entre o Snowflake e o catálogo de dados do Glue. Para obter instruções, consulte Configuração de uma integração de catálogo para AWS Glue.

O exemplo a seguir cria uma tabela Iceberg que usa o catálogo de dados do AWS Glue, especificando o nome de uma integração de catálogo que foi configurada para o AWS Glue (glueCatalogInt) e um valor para a propriedade CATALOG_TABLE_NAME.

CREATE ICEBERG TABLE myGlueTable
  EXTERNAL_VOLUME='glueCatalogVolume'
  CATALOG='glueCatalogInt'
  CATALOG_TABLE_NAME='myGlueTable';
Copy

Depois de criar uma tabela com AWS Glue como catálogo, você poderá realizar ações como:

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';
Copy

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 objeto.

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/';
Copy

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';
Copy