SnowConvert: Tipos de dados Teradata

Tipos de dados

Tabela de conversão

Teradata

Snowflake

Notas

ARRAY

ARRAY

BIGINT

BIGINT

BIGINTno Snowflake é um alias para NUMBER(38,0).[Confira a nota]

BLOB

BINARY

Limitado a 8MB. BLOBnão é compatível, o aviso SSC-FDM-TD0001 é gerado

BYTE

BINARY

BYTEINT

BYTEINT

CHAR

CHAR

CLOB

VARCHAR

​Limitado a 16MB. CLOBnão é compatível, o aviso [SSC-FDM-TD000](../../general/technical-documentation/issues-and-troubleshooting/functional-difference/teradataFDM. md#ssc-fdm-td0001)2 é gerado

DATE

DATE

DECIMAL

DECIMAL

DOUBLE PRECISION

DOUBLE PRECISION

FLOAT

FLOAT

INTEGER

INTEGER

INTEGERno Snowflake é um alias para NUMBER(38,0). [Confira a nota]

INTERVAL DAY [TO HOUR | MINUTE | SECOND]

VARCHAR(20)

​Os intervalos são armazenados comoVARCHARno Snowflake, exceto quando usados em adição/subtração. [Confira a nota].

INTERVAL HOUR [TO MINUTE | SECOND]

VARCHAR(20)

​Os intervalos são armazenados comoVARCHARno Snowflake, exceto quando usados em adição/subtração. [Confira a nota].

INTERVAL MINUTE [TO SECOND]

VARCHAR(20)

​Os intervalos são armazenados comoVARCHARno Snowflake, exceto quando usados em adição/subtração. [Confira a nota].

INTERVAL SECOND

VARCHAR(20)

​Os intervalos são armazenados comoVARCHARno Snowflake, exceto quando usados em adição/subtração. [Confira a nota].

INTERVAL YEAR [TO SECOND]

VARCHAR(20)

​Os intervalos são armazenados comoVARCHARno Snowflake, exceto quando usados em adição/subtração. [Confira a nota].

JSON

VARIANT

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

MBR

---

Sem suporte

NUMBER

NUMBER(38, 18)

PERIOD(DATE)

VARCHAR(24)

Os períodos são armazenados comoVARCHARno Snowflake. [Confira a nota].

PERIOD(TIME)

VARCHAR(34)

Os períodos são armazenados comoVARCHARno Snowflake. [Confira a nota].

PERIOD(TIME WITH TIME ZONE)

VARCHAR(46)

Os períodos são armazenados comoVARCHARno Snowflake. [Confira a nota].

PERIOD(TIMESTAMP)

VARCHAR(58)

Os períodos são armazenados comoVARCHARno Snowflake. [Confira a nota].

PERIOD(TIMESTAMP WITH TIME ZONE)

VARCHAR(58)

Os períodos são armazenados comoVARCHARno Snowflake. [Confira a nota].

REAL

REAL

SMALLINT

​SMALLINT

SMALLINT no Snowflake é um alias para NUMBER(38,0). [Confira a nota]

ST_GEOMETRY

GEOGRAPHY

TIME

TIME

TIME WITH TIME ZONE

TIME

TIMESTAMP

TIMESTAMP

TIMESTAMP WITH TIME ZONE

TIMESTAMP_TZ

VARBYTE

BINARY

VARCHAR

VARCHAR

XML

VARIANT

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

  • Teradata SMALLINT: -32768 a 32767

  • Teradata BIGINT: -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807

  • Snowflake 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;
Copy

Código de saída:

 SELECT
TIMESTAMP '2018-05-13 10:30:45' + INTERVAL '10 DAY, 05 HOUR, 30 MINUTE';
Copy

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

Código de saída:

 SELECT
DATEADD('SECOND', 10 * -1, DATEADD('MINUTE', 10 * -32, DATEADD('HOUR', 10 * -15, TIME '03:45:15')));
Copy

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"]
}
Copy

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" 
}
Copy

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.