Tipos de dados da tabela Iceberg¶
Este tópico fornece informações sobre como os tipos de dados funcionam para tabelas Iceberg no Snowflake.
Como funcionam os tipos de dados para tabelas Iceberg¶
O Snowflake oferece suporte à maioria dos tipos de dados definidos pela especificação Apache Iceberg e grava tipos de dados Iceberg em arquivos de tabela para que suas tabelas Iceberg permaneçam interoperáveis entre diferentes mecanismos de computação quando você usa o Snowflake como catálogo.
Para obter uma visão geral dos tipos de dados Iceberg compatíveis com o Snowflake, consulte Tipos de dados suportados para tabelas Iceberg.
Uso dos tipos Iceberg para definir colunas¶
Ao criar uma tabela Iceberg que usa Snowflake como catálogo, você pode usar tipos de dados Iceberg para definir colunas.
Por exemplo:
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';
Tipos aproximados¶
Se a sua tabela usar um tipo de dados Iceberg para o qual o Snowflake não oferece suporte a uma correspondência exata, o Snowflake usará um tipo Snowflake aproximado. Esse mapeamento de tipo afeta os valores das colunas para tabelas convertidas e tabelas Iceberg que usam Snowflake como catálogo.
Por exemplo, considere uma tabela com uma coluna do tipo Iceberg int
. Snowflake processa os valores da coluna usando o tipo de dados Snowflake NUMBER(10,0).
NUMBER(10,0) tem um intervalo de (-9.999.999.999, +9.999.999.999), mas int
tem um intervalo mais limitado de (-2.147.483.648, +2.147.483.647). Se você tentar inserir um valor de 3.000.000.000 nessa coluna, o Snowflake retornará uma mensagem de erro fora do intervalo.
Para obter detalhes sobre tipos aproximados, consulte as notas na tabela Tipos de dados suportados para tabelas Iceberg.
Tipos de dados suportados para tabelas Iceberg¶
A tabela a seguir mostra a relação entre os tipos de dados Iceberg e os tipos de dados Snowflake. Ela usa as seguintes colunas:
- Tipo Iceberg:
O tipo de dados definido na especificação Apache Iceberg. Quando você usa o Snowflake como catálogo, o Snowflake grava o tipo Iceberg nos arquivos de dados da tabela para que as tabelas permaneçam interoperáveis entre diferentes mecanismos de computação.
- Tipo de dados Snowflake:
O tipo de dados Snowflake usado para processar e retornar dados da tabela. Por exemplo, se seu esquema especificar o tipo Iceberg
timestamp
, o Snowflake processará e retornará valores usando o tipo de dados Snowflake TIMESTAMP_NTZ(6) com precisão de microssegundos.- Notas:
Notas de uso adicionais, incluindo notas para trabalhar com tipos aproximados.
Tipo de dados Iceberg |
Tipo de dados do Snowflake |
Notas |
---|---|---|
|
||
|
Inserir um número de 10 dígitos menor que o mínimo ou maior que o valor inteiro assinado de 32 bits máximo resulta em um erro fora do intervalo. |
|
|
Inserir um número de 19 dígitos menor que o mínimo ou maior que o valor inteiro assinado de 64 bits máximo resulta em um erro fora do intervalo. |
|
|
Sinônimo do tipo de dados Snowflake DOUBLE. Snowflake trata todos os números de ponto flutuante como números de ponto flutuante de 64 bits de precisão dupla, mas grava os números flutuantes Iceberg como números de ponto flutuante de 32 bits em arquivos de dados de tabela. Reduzir as conversões de 64 bits para 32 bits resulta em perda de precisão. |
|
|
Sinônimo do tipo de dados Snowflake DOUBLE. Snowflake trata todos os números de ponto flutuante como números de ponto flutuante de 64 bits de precisão dupla. |
|
|
||
|
||
|
Precisão de microssegundos. As tabelas Iceberg não suportam o uso de outra precisão, como milissegundo ou nanossegundo. |
|
|
Precisão de microssegundos. As tabelas Iceberg não suportam o uso de outra precisão, como milissegundo ou nanossegundo. Snowflake não oferece suporte ao uso do tipo físico Parquet obsoleto |
|
|
Precisão de microssegundos. As tabelas Iceberg não suportam o uso de outra precisão, como milissegundo ou nanossegundo. |
|
|
||
|
O tipo de dados Quando você usa um catálogo externo ou cria uma tabela a partir de arquivos no armazenamento de objetos, o Snowflake mapeia o tipo Iceberg |
|
|
Você pode criar uma tabela Iceberg usando esse tipo, mas não pode converter uma tabela que tenha uma coluna do tipo |
|
|
Colunas de tipo estruturado suportam no máximo 1.000 subcolunas. |
|
|
Colunas de tipo estruturado suportam no máximo 1.000 subcolunas. |
|
|
Colunas de tipo estruturado suportam no máximo 1.000 subcolunas. |
Considerações¶
Considere os itens a seguir ao trabalhar com tipos de dados para tabelas Iceberg:
Não há suporte para a conversão de uma tabela com colunas que usam os seguintes tipos de dados Iceberg:
uuid
fixed(L)
Para tabelas que usam Snowflake como catálogo, não há suporte para a criação de uma tabela que use o tipo de dados Iceberg
uuid
.Para todos os tipos de tabela Iceberg:
Colunas de tipo estruturado suportam no máximo 1.000 subcolunas.
O uso do tipo físico Parquet obsoleto
int96
para carimbos de data/hora não é suportado.Iceberg oferece suporte à precisão de microssegundos para tipos de hora e carimbo de data/hora. Como resultado, você não pode criar uma tabela Iceberg no Snowflake que use outra precisão, como milissegundo ou nanossegundo.