Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Congratulations to the new Qlik Luminary and Partner Ambassador class! Meet them here
cancel
Showing results for 
Search instead for 
Did you mean: 
DEV-Talend1
Contributor III
Contributor III

Besoin d’assistance sur gestion dynamique des colonnes CSV dans Talend (Silver Layer)

Bonjour,

Je travaille actuellement sur un projet de traitement de données avec une architecture en médaillon (Bronze → Silver → Gold).
Dans la couche Bronze, nous recevons plusieurs fichiers CSV provenant de différentes sources (fichiers journaliers avec des schémas qui peuvent évoluer).

Ce que nous faisons actuellement

  • Nous utilisons tFileList pour parcourir tous les fichiers de la couche Bronze.

  • Chaque fichier est lu en schéma dynamique, nous stockons les données de chaque fichier sur un champ de type dynamique .

  • Nous ajoutons des colonnes techniques (dedupKey, fileDate, srcFile) pour la gestion de l’historique et la déduplication.

  • Ensuite, via tSortRow + tUniqueRow, nous gardons uniquement la version la plus récente par dedupKey.

  • Enfin, nous écrivons un seul fichier CSV en Silver, qui doit contenir l’union de toutes les colonnes rencontrées dans les fichiers sources.

Le problème rencontré

Lorsque certains fichiers de Bronze contiennent de nouvelles colonnes (par exemple classification dans un fichier du 02/01/2025), le job ne les gère pas correctement :

  • Soit la colonne n’apparaît pas dans le fichier final,

  • Soit les données sont mal alignées (décalage des colonnes),

  • Soit seul le dernier fichier traité est écrit dans Silver (selon la configuration de tHashInput et tFileOutputDelimited).

J’ai testé plusieurs combinaisons :

  1. Avec et sans l’option "vider le cache après lecture" dans tHashInput.

  2. Avec et sans l’option "écrire à la suite" dans tFileOutputDelimited.

  3. Avec des tLogRow intermédiaires pour tracer les résultats.

Résultats :

  • Selon les options, j’obtiens soit des fichiers tronqués, soit des doublons, soit une perte des colonnes nouvelles.

  • En résumé, l’approche actuelle ne permet pas d’avoir un fichier Silver complet et aligné dès qu’un schéma évolue.

Ce que nous avons essayé

Nous avons envisagé d’écrire une routine personnalisée pour scanner automatiquement les en-têtes des CSV de Bronze et construire dynamiquement l’union des colonnes, afin d’imposer un schéma unique dans Silver.
L’idée :

  • Détecter les colonnes de chaque fichier,

  • Construire l’union de toutes les colonnes,

  • Réécrire toutes les lignes alignées sur ce schéma global.

Ce dont nous aurions besoin

  • Existe-t-il une méthode recommandée / best practice officielle Talend pour gérer ce cas de figure (schémas CSV hétérogènes et évolutifs) ?

  • Peut-on s’appuyer sur des composants standards (tSchemaComplianceCheck, tFileOutputDelimited en dynamique, etc.) plutôt que de développer une routine maison ?

  • Comment garantir que toutes les colonnes sont bien présentes et alignées dans le fichier final Silver, sans perdre de données ni dupliquer inutilement ?

Merci d’avance pour votre aide.

1 Reply
Dave_Simo
Creator II
Creator II

Hello @DEV-Talend1 

Ce lien devrait vous aider grandement ou vous donnera des pistes sur comment gérés les CSV avec schéma dynamique.

https://www.linkedin.com/pulse/dynamic-schema-talend-jean-francois-monteil-piose/?trackingId=C0kgOKV...

 

Bonne journée