SnowConvert AI - BigQuery - Tipos de dados¶
O Snowflake oferece suporte para a maioria dos tipos de dados SQL, com restrições específicas, em várias construções SQL, incluindo colunas, variáveis locais, expressões e parâmetros.
Tipo de dado booleano¶
BigQuery |
Snowflake |
Notas |
|---|---|---|
Tipo de dados Bytes¶
Tipos de dados de data e hora¶
Tipo de dados de geografia¶
Tipo de dados de intervalo¶
BigQuery |
Snowflake |
Notas |
|---|---|---|
O tipo de dados INTERVAL não é compatível como Snowflake. VARCHAR é usado no lugar dele. Para obter mais informações, consulte a documentação do tipo de dados INTERVAL. |
Tipo de dados Json¶
BigQuery |
Snowflake |
Notas |
|---|---|---|
O tipo de dados JSON não é compatível como Snowflake. VARIANT é usado no lugar dele. Para obter mais informações, consulte a Documentação do tipo de dados JSON. |
Tipos de dados numéricos¶
BigQuery |
Snowflake |
Notas |
|---|---|---|
INT é um alias para o tipo de dados NUMBER no Snowflake. A precisão e a escala máximas são NUMBER(38,37). |
||
INT é um alias para o tipo de dados NUMBER no Snowflake. A precisão e a escala máximas são NUMBER(38,37). |
||
SMALLINT é um alias para o tipo de dados NUMBER no Snowflake. A precisão e a escala máximas são NUMBER(38,37). |
||
INTEGER é um alias para o Tipo de dados NUMBER no Snowflake. A precisão e a escala máximas são NUMBER(38,37). |
||
BIGINT é um alias para o tipo de dados NUMBER no Snowflake. A precisão e a escala máximas são NUMBER(38,37). |
||
TINYINT é um alias para o tipo de dados NUMBER no Snowflake. A precisão e a escala máximas são NUMBER(38,37). |
||
BYTEINT é um alias para o tipo de dados NUMBER no Snowflake. A precisão e a escala máximas são NUMBER(38,37). |
||
NUMERIC é um alias para o tipo de dados NUMBER no Snowflake. A precisão e a escala máximas são NUMBER(38,37). |
||
DECIMAL é um alias para o tipo de dados NUMBER no Snowflake. A precisão e a escala máximas são NUMBER(38,37). |
||
O Snowflake não tem suporte para o tipo de dados BIGNUMERIC. Use NUMERIC em vez disso. A precisão do BIGNUMERIC, 76,76, excede o limite do Snowflake (38), resultando em truncamento ou arredondamento, o que pode introduzir imprecisões significativas. |
||
O Snowflake não tem suporte para o tipo de dados BIGDECIMAL. Use NUMERIC em vez disso. A precisão do BIGDECIMAL, 76,76, excede o limite do Snowflake (38), resultando em truncamento ou arredondamento, o que pode introduzir imprecisões significativas. |
||
Tipos de dados de cadeia de caracteres¶
ANY TYPE¶
Especificação de tradução para BigQueryde tipo de dados ANY TYPE
Descrição¶
A seguir, um trecho de informações sobre o uso de ANY TYPE dentro de instruções CREATE FUNCTION.
Um parâmetro com um tipo igual a
ANY TYPEpode corresponder a mais de um tipo de argumento quando a função é chamada.
Se mais de um parâmetro tiver o tipo
ANY TYPE, então BigQuery não impõe nenhum tipo de relação entre esses argumentos.O tipo de retorno da função não pode ser
ANY TYPE. Deve ser omitido, o que significa que deve ser determinado automaticamente com base emsql_expression, ou um tipo explícito.Passar os argumentos da função de tipos incompatíveis com a definição da função resulta em um erro no momento da chamada.
Amostra de padrões da origem¶
Definição de tipo para UDFs¶
ANY TYPE só pode ser encontrado como o tipo para o parâmetro de uma função. O SnowConvert AI traduz automaticamente ANY TYPE para VARIANT.
BigQuery¶
Snowflake¶
ARRAY<T>¶
Especificação de tradução para o tipo de dados ARRAY
Descrição¶
Em BigQuery, uma matriz é uma lista ordenada de zero ou mais elementos de valores não matriz. Os elementos em uma matriz devem compartilhar o mesmo tipo. (Tipo de matriz. BigQuery)
Amostra de padrões da origem¶
BigQuery¶
Snowflake¶
Acesso de ARRAY por índice¶
BigQuery¶
Snowflake¶
Acesso seguro de ARRAY por índice¶
BigQuery¶
Snowflake¶
INSERT com ARRAY na cláusula VALUES¶
BigQuery¶
Snowflake¶
Instrução MERGE¶
BigQuery¶
Snowflake¶
Inserção/atualização de valor de coluna ARRAY DEFAULT¶
BigQuery¶
Snowflake¶
INSERT/UPDATE com valor NULL¶
BigQuery¶
Snowflake¶
Concatenação de ARRAY¶
BigQuery¶
Snowflake¶
ARRAY usado como parâmetro/tipo de retorno¶
BigQuery¶
Snowflake¶
Problemas conhecidos¶
1. O acesso não seguro de ARRAY não falhará para índices positivos fora dos limites
Em BigQuery, o acesso a um elemento de matriz por índice falhará para qualquer valor de índice que seja muito baixo (underflow) ou muito alto (overflow) quando não estiver usando SAFE_OFFSET ou SAFE_ORDINAL. No entanto, no Snowflake, os erros são lançados apenas em casos de underflow ; qualquer índice que causaria um erro de overflow gerará um valor NULL em vez disso.
Quando acesso não seguro aos elementos de uma matriz é detectado, o SnowConvert AI geraSSC-FDM-BQ0001 para alertar o usuário sobre isso.
BYTES¶
Tipo de dados de bytes e usos
Descrição¶
Sequência de bytes com um máximo de L bytes permitidos na cadeia de caracteres binária. O comprimento máximo é de 8 MB (8.388.608 bytes). Para obter mais informações, consulte o tipo de dados BigQuery BYTES.
Nota
O tipo de dados BYTES não é compatível com o Snowflake, atualmente transformado para BINARY.#x20;
Amostra de padrões da origem¶
Formato de saída BYTES¶
O formato de saída padrão para tipos de dados binários em BigQuery é “BASE64” e no Snowflake é “HEX”. Por esse motivo, quando uma coluna binária é selecionada, a função BASE64_ENCODE é adicionada automaticamente. Para manter a formatação padrão de BigQuery.
BigQuery¶
Snowflake:¶
Caso ele não seja adicionado automaticamente e você queira ver os dados em formato BASE64, você pode usar a função BASE64_ENCODE ou definir o formato [BINARY_OUTPUT_FORMAT:(https://docs.snowflake.com/en/sql-reference/parameters#binary-output-format).
Literal BYTES¶
Os casos a seguir representam as formas que podem ser usadas para formatar literais de byte em BigQuery.
Esses literais não são compatíveis com o Snowflake, mas em vez disso a função TRY_TO_BINARY pode ser usada para converter a expressão de entrada em um valor binário. Esta função é uma versão especial de TO_BINARY que realiza a mesma operação, mas com suporte para tratamento de erros.
É importante levar em consideração que o formato binário para a conversão pode ser: HEX, BASE64 ou UTF-8. O padrão é o valor do parâmetro de sessão BINARY_INPUT_FORMAT. Se este parâmetro não for definido, o padrão é .
Observações¶
Tenha em mente que o formato de saída padrão para tipos de dados binários em BigQuery é “BASE64” e no Snowflake é “HEX”. Você pode usar a função BASE64_ENCODE ou definir o formato BINARY_OUTPUT_FORMAT se quiser visualizar os dados em formato BASE64.
Os únicos formatos suportados pelo Snowflake são: HEX, BASE64ou UTF-8. Para obter mais informações, consulte Entrada e saída binária no Snowflake.
Funções binárias usadas para inserir dados em uma cláusula de valores não são aceitas no Snowflake.
GEOGRAPHY¶
Tipo de dados e usos GEOGRAPHY
Descrição¶
Uma coleção de pontos, linhas e polígonos, representada como um conjunto de pontos ou um subconjunto da superfície da Terra. Para obter mais informações, consulte o tipo de dadosBigQuery GEOGRAPHY.
Sucesso
Tipo de dados suportado no Snowflake.
Amostra de padrões da origem¶
Formato de saída GEOGRAPHY¶
O formato de saída padrão para tipos de dados de geografia em BigQuery é WKT (texto bem conhecido) e no SnowflakeWKB (binário bem conhecido). Por esse motivo, quando as colunas de geografia são selecionadas, a função ST_ASWKT é adicionada automaticamente. Além disso, quando todas as colunas de uma tabela são selecionadas e ela contém uma coluna de Geografia, GEOGRAPHY_OUTPUT_FORMAT é definido como WKT. Isso é feito para manter o formato padrão BigQuery.
BigQuery¶
Snowflake¶
Caso ele não seja adicionado automaticamente e você queira ver os dados em formato WKT, você pode usar a função ST_ASWKT ou definir o formato [GEOGRAPHY_OUTPUT_FORMAT:(https://docs.snowflake.com/en/sql-reference/parameters#geography-output-format).
Inserir dados de GEOGRAPHY¶
Para inserir dados em colunas do tipo geografia, nenhuma função é necessária, porque o Snowflake detecta automaticamente que os dados seguem o padrão WGS 84.
Observações¶
Tenha em mente que o formato de saída padrão para tipos de dados de geografia é WKT**(texto bem conhecido)** e, no Snowflake,WKB (binário bem conhecido). Você poderá usar o formato ST_ASWKT function or set the GEOGRAPHY_OUTPUT_FORMAT se quiser visualizar os dados em formato WKT.
As funções de geografia usadas para inserir dados em uma cláusula de valores não são necessárias no Snowflake.
EWIs relacionados¶
SSC-FDM-BQ0010: A função de geografia não é necessária no Snowflake.
INTERVAL¶
Tipo de dados de intervalo e usos
Descrição¶
Um objeto INTERVAL representa duração ou quantidade de tempo, sem se referir a qualquer ponto específico no tempo. Não há equivalente no Snowflake, então ele é transformado em Varchar (Referência de linguagem BigQuery, tipo de dados INTERVAL)
Sintaxe
Amostra de padrões da origem¶
Intervalo com uma única parte DateTime¶
BigQuery¶
Resultado¶
Snowflake¶
Resultado¶
O Snowflake não suporta o cenário em que o tipo de dados Interval é consultado diretamente; pelo contrário, quando é usado como um operador para uma determinada data, sua tradução é feita usando uma [constante Interval].(https://docs. snowflake.com/en/sql-reference/data-types-datetime.html#interval-constants) (se possível).
Intervalo com um intervalo de partes DateTime¶
BigQuery¶
Resultado¶
Snowflake¶
Resultado¶
O valor do intervalo é transformado para um formato com suporte do Snowflake e depois inserido como texto dentro da coluna. Como o Snowflake não oferece suporte a intervalo como tipo de dados, ele só é compatível com operações aritméticas. Para usar o valor, ele precisa ser extraído e usado como uma constante de intervalo ( se possível).
Intervalo como um tipo de dados de Coluna¶
BigQuery¶
Resultado¶
ID |
interval_column |
|---|---|
1 |
2-11 28 0:0:0 |
2 |
2-11 28 16:15:14 |
3 |
0-11 28 16:15:14 |
4 |
0-0 0 0:15:14 |
Snowflake¶
Resultado¶
ID |
interval_column |
|---|---|
1 |
2y, 11mm, 28d |
2 |
2y, 11mm, 28d, 16h, 15m, 14s |
3 |
11mm, 28d, 16h, 15m, 14s |
4 |
15m, 14s |
Em BigQuery, a parte datetime_ segue o próximo formato canônico:
Comparação de intervalos¶
BigQuery¶
Snowflake¶
Como é conhecido, o Snowflake só suporta um intervalo como tipo de dados em operações aritméticas, razão pela qual a função CURRENT_TIMESTAMP é adicionada a cada operando para oferecer suporte corretamente à comparação.
Problemas conhecidos¶
1. Only arithmetic operations are supported¶
Os intervalos do Snowflake têm várias limitações. Somente operações aritméticas entre DATE ou TIMESTAMP e constantes de intervalo são suportadas; qualquer outro cenário não é suportado.
2. Working with signs in the Interval data type¶
Em BigQuery, quando a subcadeia de caracteres correspondente ao ano-mês é precedida por um sinal (+ -); isso afeta tanto o ano quanto o mês. De maneira semelhante, funciona para a subcadeia de caracteres correspondente à hora; neste caso, o seguinte afeta a hora, o minuto e o segundo. Um exemplo disso é mostrado abaixo.
BigQuery¶
Snowflake¶
EWIs relacionados¶
SSC-EWI-0036: Tipo de dados convertido em outro tipo de dados.
SSC-EWI-0107: Literal de intervalo não suportado no cenário atual.
JSON¶
Tipo de dados Json e usos
Descrição¶
Representa JSON, um formato leve de troca de dados. Para obter mais informações, consulte o tipo de dados BigQuery JSON.
Perigo
O tipo de dados JSON não é compatível com o Snowflake, atualmente transformado para VARIANT.
LiteraisJSON¶
Para obter mais informações, consulte Literais JSON em BigQuery.
Esses literais não são compatíveis com o Snowflake, mas em vez disso a função PARSE_JSON pode ser usada para converter a expressão de entrada em um tipo json. O único ponto a levar em consideração é que esta função não pode ser usada na cláusula de valores do Snowflake, por isso ela é transformada em uma subconsulta.
Amostra de padrões da origem¶
BigQuery¶
Snowflake¶
STRUCT¶
Especificação de tradução para o tipo de dados STRUCT de BigQuery para Snowflake.
Descrição¶
Em BigQuery, um contêiner de campos ordenados, cada um com um tipo (obrigatório) e nome de campo (opcional). Consulte Tipo de estrutura.
No Snowflake, OBJECT_CONSTRUCT pode ser usado para emular o comportamento de STRUCT, e SnowConvert AI trata da maioria das diferenças de implementação.
Nota
Argumentos que representam chaves dentro de OBJECT_CONSTRUCT devem ser os nomes originais do STRUCT de destino. Qualquer nome especificado em um corpo da expressão STRUCT será substituído pelo nome encontrado no STRUCT de destino. A maioria dos exemplos de padrões de dados abaixo contém um exemplo de um nome que é substituído pelo nome do destino.
Amostra de padrões da origem¶
BigQuery¶
Snowflake¶
Inserir tipo de dados INT em coluna STRUCT¶
BigQuery¶
Snowflake¶
Inserir tipo de dados STRING em coluna STRUCT¶
BigQuery¶
Snowflake¶
Inserir tipo de dados STRUCT em coluna STRUCT¶
BigQuery¶
Snowflake¶
Inserir tipo de dados ARRAY em coluna STRUCT¶
BigQuery¶
Snowflake¶
Inserir nas colunas STRUCT selecionadas¶
BigQuery¶
Snowflake¶
Inserir para sintaxe da tupla de coluna STRUCT¶
Aviso
A tradução de valores de sintaxe de tupla não é suportada atualmente.
BigQuery¶
Snowflake¶
Atualizar coluna STRUCT¶
BigQuery¶
Snowflake¶
Atualizar campo de coluna STRUCT¶
BigQuery¶
Snowflake¶
Selecionar da coluna STRUCT¶
BigQuery¶
Snowflake¶
Selecionar de sintaxe da tupla de coluna STRUCT¶
BigQuery¶
Snowflake¶
Criação de uma exibição usando uma definição anônima STRUCT¶
BigQuery¶
Snowflake¶
Expressões de comparação de colunas STRUCT¶
As operações de comparação de BigQuery para Structs comparam valor com valor, ignorando a chave se ela existir, enquanto as operações de comparação de objetos do Snowflake comparam tanto o valor quanto a chave. Isso pode fazer com que algumas comparações retornem um resultado diferente.
BigQuery¶
Snowflake¶
EWIs relacionados¶
SSC-FDM-BQ0010: Estrutura convertida em VARIANT. Alguns de seus usos podem ter diferenças funcionais.
SSC-EWI-BQ0012: SnowConvert AI was unable to generate a correct OBJECT_CONSTRUCT parameter. Missing symbol information.
SSC-FDM-BQ0008: A cláusula WHERE referencia uma coluna do tipo STRUCT.
TIMESTAMP¶
Tipo de dados de carimbo de data/hora e usos
Descrição¶
Um valor de carimbo de data/hora representa um ponto absoluto no tempo, independentemente de qualquer fuso horário ou convenção, como horário de verão (DST), com precisão de microssegundos. Para obter mais informações, consulte Tipo de dados BigQuery de carimbo de data/hora.
Sintaxe gramatical¶
| Name | Range |
|---|---|
| TIMESTAMP | 0001-01-01 00:00:00 to 9999-12-31 23:59:59.999999 UTC |
Sucesso
Tipo de dados TIMESTAMP atualmente transformado em TIMESTAMP_TZ.#x20;
É importante observar que BigQuery armazena dados TIMESTAMP em Tempo Universal Coordenado (UTC).
Amostra de padrões da origem¶
TIMESTAMP sem tempo¶
BigQuery¶
Resultado¶
Snowflake¶
Resultado¶
TIMESTAMP com fuso horário.¶
Quando o fuso horário estiver definido, você precisará usar a função CONVERT_TIMEZONE para armazenar os dados no Tempo Universal Coordenado (UTC). Além disso, o nome do fuso horário dentro do literal de carimbo de data/hora não é suportado pelo Snowflake; nesse caso, é necessário usar esta função também.