SnowConvert : Types de données Teradata

Types de données

Table de conversion

Teradata

Snowflake

Remarques

ARRAY

ARRAY

BIGINT

BIGINT

BIGINTdans Snowflake est un alias de NUMBER(38,0)._[Consultez note]

BLOB

BINARY

Limité à 8MB. BLOBn’est pas pris en charge, l’avertissement SSC-FDM-TD0001 est généré

BYTE

BINARY

BYTEINT

BYTEINT

CHAR

CHAR

CLOB

VARCHAR

​Limité à 16MB. CLOBn’est pas pris en charge, l’avertissement SSC-FDM-TD0002 est généré

DATE

DATE

DECIMAL

DECIMAL

DOUBLE PRECISION

DOUBLE PRECISION

FLOAT

FLOAT

INTEGER

INTEGER

INTEGERdans Snowflake est un alias de NUMBER(38,0). [Consultez note]

INTERVAL DAY [TO HOUR | MINUTE | SECOND]

VARCHAR(20)

​Les intervalles sont stockés sous la formeVARCHARdans Snowflake, sauf lorsqu’ils sont utilisés dans l’addition/soustraction. [Consultez la note].

INTERVAL HOUR [TO MINUTE | SECOND]

VARCHAR(20)

​Les intervalles sont stockés sous la formeVARCHARdans Snowflake, sauf lorsqu’ils sont utilisés dans l’addition/soustraction. [Consultez la note].

INTERVAL MINUTE [TO SECOND]

VARCHAR(20)

​Les intervalles sont stockés sous la formeVARCHARdans Snowflake, sauf lorsqu’ils sont utilisés dans l’addition/soustraction. [Consultez la note].

INTERVAL SECOND

VARCHAR(20)

​Les intervalles sont stockés sous la formeVARCHARdans Snowflake, sauf lorsqu’ils sont utilisés dans l’addition/soustraction. [Consultez la note].

INTERVAL YEAR [TO SECOND]

VARCHAR(20)

​Les intervalles sont stockés sous la formeVARCHARdans Snowflake, sauf lorsqu’ils sont utilisés dans l’addition/soustraction. [Consultez la note].

JSON

VARIANT

<p>Les éléments à l’intérieur d’un JSON sont ordonnés par leurs clés lorsqu’ils sont insérés dans une table.<br>[Consultez <a href= »data-types.md#json-data-type »>note</a>].</p>

MBR

---

Non pris en charge

NUMBER

NUMBER(38, 18)

PERIOD(DATE)

VARCHAR(24)

Les périodes sont stockées sous la forme deVARCHARdans Snowflake. [Consultez la note].

PERIOD(TIME)

VARCHAR(34)

Les périodes sont stockées sous la forme deVARCHARdans Snowflake. [Consultez la note].

PERIOD(TIME WITH TIME ZONE)

VARCHAR(46)

Les périodes sont stockées sous la forme deVARCHARdans Snowflake. [Consultez la note].

PERIOD(TIMESTAMP)

VARCHAR(58)

Les périodes sont stockées sous la forme deVARCHARdans Snowflake. [Consultez la note].

PERIOD(TIMESTAMP WITH TIME ZONE)

VARCHAR(58)

Les périodes sont stockées sous la forme deVARCHARdans Snowflake. [Consultez la note].

REAL

REAL

SMALLINT

​SMALLINT

SMALLINT dans Snowflake est un alias de NUMBER(38,0). [Consultez la note]

ST_GEOMETRY

GEOGRAPHY

TIME

TIME

TIME WITH TIME ZONE

TIME

TIMESTAMP

TIMESTAMP

TIMESTAMP WITH TIME ZONE

TIMESTAMP_TZ

VARBYTE

BINARY

VARCHAR

VARCHAR

XML

VARIANT

Remarques

Note

Voir la documentation sur les types de données Teradata

Types de données entiers

Pour la conversion des types de données entiers (INTEGER, SMALLINT et BIGINT), chaque type est converti en alias dans Snowflake avec le même nom. Chacun de ces alias est converti en NUMBER(38,0), un type de données considérablement plus grand que le type de données des entiers. Vous trouverez ci-dessous une comparaison de la gamme de valeurs pouvant être présentes dans chaque type de données :

  • Teradata INTEGER : -2 147 483 648 à 2 147 483 647

  • Teradata SMALLINT : -32768 à 32767

  • Teradata BIGINT : -9 223 372 036 854 775 808 à 9 223 372 036 854 775 807

  • Snowflake NUMBER(38,0) : -99999999999999999999999999999999999999 à +99999999999999999999999999999999999999

L’avertissement SSC-EWI-0036 est généré.

Types de données relatifs aux intervalles/périodes

Les intervalles et les périodes sont stockés sous forme de chaîne (VARCHAR) dans Snowflake. Lors de la conversion, SnowConvert crée une UDF qui recrée la même expression sous forme de chaîne. L’avertissement SSC-EWI-TD0053est généré.

Vous pouvez voir d’autres UDF dans le référentiel public des UDF actuellement créées par Snowflake SnowConvert.

Ces UDF supposent que les périodes sont stockées dans un VARCHAR où les parties données/temps sont séparées par un *. Par exemple, pour une période Teradata comme PERIOD('2018-01-01','2018-01-20'), elle devrait être stockée dans Snowflake sous la forme d’une VARCHAR comme '2018-01-01*2018-01-20'.

La seule exception à la transformation VARCHAR pour les intervalles sont les littéraux d’intervalles utilisés pour ajouter/soustraire des valeurs d’une expression Datetime, Snowflake n’a pas de type de données INTERVAL mais des constantes d’intervalles existent pour l’objectif spécifique mentionné. Exemples :

Code d’entrée :

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

Code de sortie :

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

Les cas où l’intervalle est multiplié/divisé par une expression numérique sont transformés en appels de fonctions DATEADD équivalents :

Code d’entrée :

 SELECT TIME '03:45:15' - INTERVAL '15:32:01' HOUR TO SECOND * 10;
Copy

Code de sortie :

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

Type de données JSON

Les éléments à l’intérieur d’un JSON sont classés par leurs clés lorsqu’ils sont insérés dans une table. Les résultats de la requête peuvent donc être différents. Toutefois, cela n’affecte pas l’ordre des tableaux à l’intérieur de JSON.

Par exemple, si le JSON original est :

 { 
   "firstName":"Peter",
   "lastName":"Andre",
   "age":31,
   "cities": ["Los Angeles", "Lima", "Buenos Aires"]
}
Copy

Utilisation de Snowflake PARSE_JSON() qui interprète une chaîne d’entrée comme un document JSON, produisant une valeur VARIANT. Le JSON inséré sera :

 { 
   "age": 31,
   "cities": ["Los Angeles", "Lima", "Buenos Aires"],
   "firstName": "Peter",
   "lastName": "Andre" 
}
Copy

Notez que « âge » est désormais le premier élément. Toutefois, le tableau des « villes » conserve son ordre initial.

Problèmes connus

Aucun problème n’a été constaté.