Pivot d'un fichier de données - 7.2

Logs and errors (Intégration)

EnrichVersion
7.2
EnrichProdName
Talend Big Data
Talend Big Data Platform
Talend Data Fabric
Talend Data Integration
Talend Data Management Platform
Talend Data Services Platform
Talend ESB
Talend MDM Platform
Talend Open Studio for Big Data
Talend Open Studio for Data Integration
Talend Open Studio for ESB
Talend Real-Time Big Data Platform
EnrichPlatform
Studio Talend
task
Création et développement > Systèmes tiers > Composants Logs and errors (Intégration)
Gouvernance de données > Systèmes tiers > Composants Logs and errors (Intégration)
Qualité et préparation de données > Systèmes tiers > Composants Logs and errors (Intégration)
Quelques fois, un fichier d'entrée doit subir un pivot afin de permettre un passage en aval. Étant donné que Talend ne fournit pas de composant "Pivot de fichier", cet article montre comment y parvenir à l'aide d'un composant tJavaFlex.
Scénario

Passons un exemple en revue pour voir comment faire. Imaginons que vous avez un fichier d'entrée qui contient des lignes, chacune représentant une colonne dans une table de pivot cible. Dans cet exemple, le fichier d'entrée possède trois colonnes et la table de sortie contient 25 colonnes :

  • Clé (obfuscation)
  • Numéro de colonne (case rouge)
  • Valeur

En voici un exemple :

Notez que toutes les colonnes sont disponibles pour un regroupement logique pour la sortie de pivot. Cela complique le problème, mais la solution décrite ci-dessous fonctionne. La seule condition toutefois est que le fichier d'entrée soit correctement trié selon les colonnes "clé" et numéro de colonne", puisqu'il sera traité de façon séquentielle. Le tri devient alors part de la solution.

Le Job suivant montre la solution. Premièrement, le fichier est trié et stocké dans un fichier temporaire. Si cela fonctionne, le fichier trié est traité. Le composant tJavaFlex entoure le flux de données à mesure de la lecture des enregistrements, et vérifie la "clé".

Observez attentivement le code Java dans les sections "Start", Main" et "End" des paramètres du composant tJavaFlex. C'est là que la magie s'opère.

La section "Start code" écrit un message en sortie indiquant que le traitement du flux de données a commencé. Un flag "isFirstROW" est défini sur "true" pour contrôler la pause de l'enregistrement logique au début du processus. Deux variables, "rowCOUNT" et "fieldCOUNT" sont déclarées et initialisées pour capturer le nombre d'enregistrements du fichier d'entrée qui ont été traités et le nombre de champs trouvés. Ces valeurs sont disponibles pour un message en sortie, utile à des fins de débogage. Une série de variables String, notamment "cutKEY" et "field1-25" sont déclarées et initialisées.

La section "Main code" est importante. Premièrement, la variable "rowCOUNT" est incrémentée. Puis, un test est effectué par rapport à la valeur "curKEY" pour la comparer à l'enregistrement d'entrée. Si les valeurs ne sont PAS similaires, et qu'il ne s'agit PAS de la première ligne, alors les valeurs "field1-25" sont assignées au schéma de sortie. Sinon, un autre test est effectué pour déterminer le nombre de colonnes d'enregistrements et enregistré dans la variable "field1-25" correspondante. Notez que lorsque la pause d'enregistrement logique provient, "curKEY" a une nouvelle valeur et toutes les variables "field1-25" sont réinitialisées à null.

La section "End code" écrit un message en sortie indiquant que le traitement du flux de données est terminé.

Une fois que les valeurs complètes d'enregistrements pivot sont assignées et assignées au schéma de sortie, le Job effectue un push en aval où tous les doublons sont filtrés (par précaution) et écrits dans un nouveau fichier de pivot.

Et voilà !

Notez également que la gestion d'erreur spécifique est incorporée au Job, ainsi que le Joblet "logPROCESSOR " contenant un composant tLogCatcher qui traite toutes les exceptions rencontrées.

Conclusion

Bien qu'il existe d'autres méthodes pour effectuer le pivot de données d'entrée, celle-ci est simple et nécessite un minimum de code. Merci au tJavaFlex  !