Gerenciar tabelas Apache Iceberg™¶
Gerenciar Tabelas Apache Iceberg™ no Snowflake:
Você também pode converter uma tabela Iceberg que usa um catálogo externo em uma tabela que use Snowflake como catálogo Iceberg. Para saber mais, consulte Converter uma tabela Apache Iceberg™ para usar o Snowflake como catálogo.
Consulta a uma tabela¶
Para consultar uma tabela Iceberg, um usuário deve receber ou herdar os seguintes privilégios:
O privilégio USAGE no banco de dados e no esquema com a tabela
O privilégio SELECT na tabela
Você pode consultar uma tabela Iceberg usando uma instrução SELECT. Por exemplo:
SELECT col1, col2 FROM my_iceberg_table;
Usar comandos DML com tabelas gerenciadas pelo Snowflake¶
As tabelas Iceberg que usam o Snowflake como catálogo oferecem suporte Comandos de linguagem de manipulação de dados (DML) completo, incluindo o seguinte:
Você também pode copiar dados em massa para uma tabela gerenciada pelo Snowflake com COPY INTO <tabela> ou usando Snowpipe.
Exemplo: atualizar uma tabela¶
Você pode usar instruções INSERT e UPDATE para modificar tabelas Iceberg gerenciadas pelo Snowflake.
O exemplo a seguir insere um novo valor em uma tabela Iceberg chamada store_sales
e atualiza a coluna cola
para 1 se o valor for atualmente -99.
INSERT INTO store_sales VALUES (-99);
UPDATE store_sales
SET cola = 1
WHERE cola = -99;
Geração de instantâneos de alterações de DML¶
Para tabelas que usam Snowflake como catálogo, o Snowflake gera automaticamente os metadados do Iceberg. Snowflake grava os metadados em uma pasta chamada metadata
em seu volume externo no local especificado pelo parâmetro BASE_LOCATION
quando a tabela foi criada.
Como alternativa, você pode chamar a função SYSTEM$GET_ICEBERG_TABLE_INFORMATION para gerar metadados do Iceberg para quaisquer novas alterações.
Para tabelas que não são gerenciadas pelo Snowflake, a função retorna informações sobre o instantâneo atualizado mais recente.
Por exemplo:
SELECT SYSTEM$GET_ICEBERG_TABLE_INFORMATION('db1.schema1.it1');
Saída:
+-----------------------------------------------------------------------------------------------------------+
| SYSTEM$GET_ICEBERG_TABLE_INFORMATION('DB1.SCHEMA1.IT1') |
|-----------------------------------------------------------------------------------------------------------|
| {"metadataLocation":"s3://mybucket/metadata/v1.metadata.json","status":"success"} |
+-----------------------------------------------------------------------------------------------------------+
Manter tabelas que usam um catálogo externo¶
Você pode executar operações de manutenção em tabelas Iceberg que usam um catálogo externo.
As operações de manutenção incluem as seguintes:
Instantâneos expirados
Remoção de arquivos de metadados antigos
Compactação de arquivos de dados
Importante
Para manter sua tabela Iceberg sincronizada com as alterações externas, é importante alinhar seu cronograma de atualização do Snowflake com a manutenção da tabela. Atualize a tabela toda vez que você realizar uma operação de manutenção.
Para saber mais sobre a manutenção de tabelas Iceberg que não são gerenciadas pelo Snowflake, consulte Manutenção na documentação do Apache Iceberg.
Atualização dos metadados da tabela¶
Ao usar um catálogo Iceberg externo, você pode atualizar os metadados da tabela usando o comando ALTER ICEBERG TABLE … REFRESH. A atualização dos metadados da tabela sincroniza os metadados com as alterações mais recentes da tabela.
Atualizar os metadados de uma tabela¶
O exemplo a seguir atualiza manualmente os metadados de uma tabela que usa um catálogo externo (por exemplo, AWS Glue ou Delta). A atualização da tabela mantém a tabela sincronizada com quaisquer alterações ocorridas no catálogo remoto.
Com esse tipo de tabela Iceberg, você não precisa especificar um caminho de arquivo de metadados no comando.
ALTER ICEBERG TABLE my_iceberg_table REFRESH;
Atualizar os metadados de uma tabela criada a partir de arquivos Iceberg¶
O exemplo a seguir atualiza manualmente uma tabela criada a partir de arquivos de metadados Iceberg em um local de armazenamento em nuvem externo, especificando o caminho relativo para um arquivo de metadados sem a barra (/
) no início. O arquivo de metadados define os dados na tabela após a atualização.
ALTER ICEBERG TABLE my_iceberg_table REFRESH 'metadata/v1.metadata.json';
Recuperar métricas de armazenamento¶
Snowflake não cobra de sua conta os custos de armazenamento da tabela Iceberg. No entanto, você pode acompanhar quanto armazenamento uma tabela Iceberg ocupa consultando as exibições TABLE_STORAGE_METRICS e TABLES no esquema Snowflake Information Schema ou Account Usage.
O exemplo de consulta a seguir une a exibição ACCOUNT_USAGE.TABLE_STORAGE_METRICS à exibição ACCOUNT_USAGE.TABLES, filtrando na coluna TABLES.IS_ICEBERG.
SELECT metrics.* FROM
snowflake.account_usage.table_storage_metrics metrics
INNER JOIN snowflake.account_usage.tables tables
ON (
metrics.id = tables.table_id
AND metrics.table_schema_id = tables.table_schema_id
AND metrics.table_catalog_id = tables.table_catalog_id
)
WHERE tables.is_iceberg='YES';