Le processeur Type converter vous permet d'appliquer plusieurs opérations de conversion sur un enregistrement entrant.
Vous pouvez convertir des types de données Primitive (Primitifs) ou Semantic (Sémantiques).
Types de sources et destinations
-
Types primitifs :
null
,boolean
,int
,long
,float
,double
,bytes
,string
. Ils comprennent également :-
Complexes :
record
,enum
,array
,map
,union
,fixed
-
Types logiques :
date
:int,time-millis
:int,time-micros
:long,timestamp-millis
:long,timestamp-micros
:long,duration
:fixed(12),decimal
:fixed|bytes
-
- Types sémantiques : ce sont des types sémantiques prédéfinis suggérés par Talend Cloud lors de la récupération des champs d'un jeu de données. Pour plus d'informations, consultez Gérer les types sémantiques.
Erreurs et avertissements
-
Erreurs de parsage avec modèles
DateFormat
/DecimalFormat
incorrects. -
Toute erreur relative aux sources provenant de mauvaises conversions
parse
ouvalueOf
. -
Octets source insuffisants pour créer une valeur de destination.
Formats orientés date (pour les types primitifs uniquement)
Lorsque la valeur de la source ou de la cible est une valeur orientée date/heure et que l'autre est une chaîne de caractères, le format est utilisé lors de la conversion, comme décrit dans la documentation DateTimeFormatter (en anglais). Si aucun format n'est présent, le format ISO 8601 par défaut, fourni par Java, est utilisé.
DateTime
comprend les informations du jour calendaire et de l'heure.
Format |
String |
---|---|
EEE, MMM d, ''yy 'at' h:mm a |
Tue, Nov 28, '17 at 12:44 PM |
yyyyy.MMMM.dd GGG hh:mm a |
02017.November.28 AD 12:44 PM |
Date
et Time
utilisent les mêmes règles de formatage, notamment :-
Aucun champ inférieur à une journée ne doit s'afficher dans un format
Date
. Il n'y a pas d'heure dans le typeDate
:yyyy-MM-dd
-
Aucun champ supérieur à une heure ne doit s'afficher dans un format
Time
. Il n'y a pas de jour dans le formatTime
:HH:mm:ss.SSS
Formats de nombres (pour les types primitifs uniquement)
Format |
String (Chaîne de caractères) |
---|---|
'#'# |
#1, #12345, #-123 |
$#,##0.00;($#,##0.00) |
$1,234.56, $0.50, ($1.00), ($1,234.56) |
Les mêmes règles logiques s'appliquent aux conversions :
- Les formats
Integer
etLong
incluant un point décimal créent une erreur, par exemple.
Exemples
-
: conversions primitives d'élargissement sans perte d'information.
-
: conversions primitives (d'élargissement ou de réduction) avec possible perte d'informations.
-
: le modèle
DateFormat
, s'il est présent, est utilisé pour les conversions de chaînes de caractères de types date/time.-
Si la source est un type logique
date
,time-millis
,timestamp-millis
(time-micros
ettimestamp-micros
sont traités comme des Long) ou si la destination est Date, Time ou DateTime. -
Si aucun modèle n'est présent, les types Date/Time/DateTime utilisent les modèles ISO-8601 spécifiques.
- Date :
yyyy-MM-dd
- Time :
HH:mm:ss
- DateTime :
yyyy-MM-dd'T'HH:mm:ss'Z'
- Date :
-
-
: le modèle
DecimalFormat
, s'il est présent, est utilisé pour les conversions de chaînes de caractères de types numériques. S'il n'est pas présent,Integer.valueOf()
ouInteger.toString()
est utilisé (avec la valeur de destination appropriée). -
Le format n'est pas utilisé lors de la conversion de types et nombres orientés date.
-
Date Le nombre entrant/sortant est le nombre de jours écoulés depuis 1970-01-01 (
int
) -
Time Le nombre entrant/sortant est le nombre de millisecondes écoulées depuis 00:00:00 (
int
) -
dateTime Le nombre entrant/sortant est le nombre de millisecondes écoulées depuis 1970-01-01 00:00:00 (
long
)
-
-
Lorsque la source et la destination sont des types orientés date supportés, la date et l'heure restent cohérentes entre la source et la cible. Les éléments inconnus sont définis comme relatifs à la date 1970-01-01 00:00:00. Par exemple, convertir un type Time (sans composant de date) en une Date retourne toujours
1970-01-01
.
Pour plus d'informations, consultez la documentation Oracle (en anglais).
Type de source (Avro) |
Valeur de la source |
Format |
Type de destination |
Valeur de destination |
---|---|---|---|---|
int |
|
- |
Long |
|
long |
|
- |
Integer |
12345 (les conversions rétrécissantes peuvent être bonnes, notamment sur les données comportant peu de chiffres) |
long |
|
- |
Integer |
|
long |
|
- |
Double |
|
long |
|
- |
Integer |
|
string |
|
- |
Integer |
Message d'erreur : Error -- Cannot parse floating point without a format. |
string |
|
|
Integer |
|
string |
|
|
Integer |
|
boolean |
|
- |
Integer |
|
boolean |
|
- |
Integer |
|
boolean |
|
- |
Date |
|
boolean |
|
- |
Date |
|
boolean |
|
- |
Time |
|
boolean |
|
- |
Time |
|
timestamp-millis |
|
|
String |
20171128 Remarque : La conversion timestamp-millis > String ne fonctionne pas sur les jeux de données de test.
|
String |
|
|
timestamp-millis |
|
String |
|
|
Date |
|
int |
|
- |
Date |
|
time-millis |
|
- |
dateTime |
|
timestamp-millis |
|
- |
Date |
|