SnowConvert: Tipos de dados Teradata¶
Tipos de dados¶
Tabela de conversão¶
Teradata |
Snowflake |
Notas |
---|---|---|
|
|
|
|
|
|
|
|
Limitado a 8MB. |
|
|
|
|
|
|
|
|
|
|
|
Limitado a 16MB. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Os intervalos são armazenados como |
|
|
Os intervalos são armazenados como |
|
|
Os intervalos são armazenados como |
|
|
Os intervalos são armazenados como |
|
|
Os intervalos são armazenados como |
|
|
<p>Os elementos dentro de um JSON são ordenados por suas chaves quando inseridos em uma tabela.<br>[Confira a <a href=»data-types.md#json-data-type»>nota</a>].</p> |
|
|
Sem suporte |
|
|
|
|
|
Os períodos são armazenados como |
|
|
Os períodos são armazenados como |
|
|
Os períodos são armazenados como |
|
|
Os períodos são armazenados como |
|
|
Os períodos são armazenados como |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Notas¶
Nota
Consulte a documentação sobre os tipos de dados do Teradata
Tipos de dados inteiros¶
Para a conversão de tipos de dados inteiros (INTEGER
, SMALLINT
e BIGINT
), cada um é convertido para o alias no Snowflake com o mesmo nome. Cada um desses aliases é convertido para NUMBER(38,0)
, um tipo de dados consideravelmente maior do que o tipo de dados inteiro. Abaixo está uma comparação do intervalo de valores que podem estar presentes em cada tipo de dados:
Teradata
INTEGER
: -2.147.483.648 a 2.147.483.647Teradata
SMALLINT
: -32768 a 32767Teradata
BIGINT
: -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807Snowflake
NUMBER(38,0)
: -99999999999999999999999999999999999999 a +99999999999999999999999999999999999999
O aviso SSC-EWI-0036 é gerado.
Tipos de dados de intervalo/período¶
Os intervalos e períodos são armazenados como uma cadeia de caracteres (VARCHAR
) no Snowflake. Ao fazer a conversão, o SnowConvert cria um UDF que recria a mesma expressão como uma cadeia de caracteres. O aviso SSC-EWI-TD0053é gerado.
Você pode ver mais UDFs no repositório público de UDFs criado atualmente pelo Snowflake SnowConvert.
Esses UDFs pressupõem que os períodos são armazenados em um VARCHAR
onde as partes de dados/tempo são separadas por um *
. Por exemplo, para um período do Teradata como PERIOD('2018-01-01','2018-01-20')
, ele deve ser armazenado no Snowflake como VARCHAR
como '2018-01-01
*2018-01-20'
.
A única exceção à transformação VARCHAR
para intervalos são os literais de intervalo usados para adicionar/subtrair valores de uma expressão Datetime. O Snowflake não tem um tipo de dados INTERVAL
, mas existem constantes de intervalo para a finalidade específica mencionada. Exemplos:
Código de entrada:
SELECT TIMESTAMP '2018-05-13 10:30:45' + INTERVAL '10 05:30' DAY TO MINUTE;
Código de saída:
SELECT
TIMESTAMP '2018-05-13 10:30:45' + INTERVAL '10 DAY, 05 HOUR, 30 MINUTE';
Os casos em que o intervalo está sendo multiplicado/dividido por uma expressão numérica são transformados em chamadas de função DATEADD
equivalentes:
Código de entrada:
SELECT TIME '03:45:15' - INTERVAL '15:32:01' HOUR TO SECOND * 10;
Código de saída:
SELECT
DATEADD('SECOND', 10 * -1, DATEADD('MINUTE', 10 * -32, DATEADD('HOUR', 10 * -15, TIME '03:45:15')));
Tipo de dados JSON¶
Os elementos dentro de um JSON são ordenados por suas chaves quando inseridos em uma tabela. Portanto, os resultados da consulta podem ser diferentes. No entanto, isso não afeta a ordem das matrizes dentro do JSON.
Por exemplo, se o JSON original for:
{
"firstName":"Peter",
"lastName":"Andre",
"age":31,
"cities": ["Los Angeles", "Lima", "Buenos Aires"]
}
Usando o Snowflake PARSE_JSON() que interpreta uma cadeia de caracteres de entrada como um documento JSON, produzindo um valor VARIANT. O JSON inserido será:
{
"age": 31,
"cities": ["Los Angeles", "Lima", "Buenos Aires"],
"firstName": "Peter",
"lastName": "Andre"
}
Observe como «age» é agora o primeiro elemento. No entanto, a matriz de «cities» mantém sua ordem original.
Problemas conhecidos ¶
Não foram encontrados problemas.