|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2011 Messages : 13 ![]() |
Bonjour,
J'arrive sans trop de problèmes à utiliser des tFilelist pour des subjob simples. J'ai un XML de type _________________________________________________________________ racine -evenement1 --sous_evenement_classe1_1 (ou s_e_cl1_1) --sous_evenement_classe1_2 --sous_evenement_classe2_1 --sous_evenement_classe2_2 --sous_evenement_classe2_3 --sous_evenement_classe3_1 --sous_evenement_classe3_2 --sous_evenement_classe3_3 -evenement2 (...) _______________________________________________________________ Je dois le "linéariser" dans une base relationnelle en: evenement1|s_e_cl1_1|s_e_cl1_2|s_e_cl2_1|s_e_cl2_2... evenement2|s_e_cl1_1|s_e_cl1_2|s_e_cl2_1|s_e_cl2_2... Le problème de "l'incertitude" sur le nombre d'évènements est résolu en ayant un nombre de "slots" fixes pour chaque classe de sous évènement, ce qui est suffisant pour résoudre correctement les cas rencontrés. Les fichiers XML arrivent par batch. Actuellement j'utiliser une architecture du type ________________________________________________________________ tfilelist -> timportXML("evenement")->temp_evenement.csv | |OnSubjobOk tfilelist -> timportXML("classe1")->temp_class1.csv | |OnSubjobOk tfilelist -> timportXML("classe2")->temp_class2.csv | |OnSubjobOk tfilelist -> timportXML("classe3")->temp_class3.csv | |OnSubjobOk *fusion des temp* (tmap sur temp_evenement.csv avec les autres fichiers en look-up) -> BD relationnelle ________________________________________________________________ Cette architecture traite batch par batch. Pour une gestion plus propre j'aurais souhaité traiter fichier par fichier, en remplaçant par: ________________________________________________________________ tfilelist | |iterate timportXML("evenement")->temp_evenement.csv | |OnSubjobOk timportXML("classe1")->temp_class1.csv | |OnSubjobOk timportXML("classe2")->temp_class2.csv | |OnSubjobOk timportXML("classe3")->temp_class3.csv | |OnSubjobOk *fusion des temp* (tmap sur temp_evenement.csv avec les autres fichiers en look-up) -> BD relationnelle ________________________________________________________________ c'est à dire faire un seul iterate sur l'ensemble des opérations. le problème c'est que quand je tente ce type de méthode il ne me fait l'iterate que sur le premier subjob. Je me pose la question de savoir si je m'y prend mal dans mon architecture ou si ce n'est pas possible. |
|
|
00
|
|
|
#2 |
|
Membre habitué
![]() Inscription : février 2009 Messages : 114 ![]() |
bjr,
Pour faire ton Iterate, on suppose que dans ton dossier tu as les X fichiers c'est à dire evenement, classe1, classe2, etc. tu n'as pas à faire OnSubJobOK à chaque fois tu fais: tfilelist --->iterate--->ton_traitement--->tOuputFile tu décoche la case ajouter les lignes comme ça tu auras autant de fichier en sortie qu'en entrée. J'espère avoir pu t'aider.
__________________
bbl MeMa |
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2011 Messages : 13 ![]() |
Bjr,
Merci pour la réponse. En fait je pense que c'est un peu plus compliqué que cela: mon tfilelist iterate sur un batch de fichiers XML, chaque fichier XML contient dans son arborescence les indentation -évènement --sous_evenement_classe1 --sous_evenement_classe2... En fait le principe que je décompose les XML en 4 fichiers en gardant une clé puis que je les reconstruis en une ligne pour une base relationnelle. En l'état actuel j'arrive à faire un: * un fichier temporaire "evenement" pour tout le batch XML (iterate sur tt le batch) * un fichier temporaire "sous_evenement_classe1" pour tout le batch XML (iterate sur tt le batch) * un fichier temporaire "sous_evenement_classe2" pour tout le batch XML (iterate sur tt le batch)... * reconstitution de toutes les lignes du batch par jointure sur les fichiers temporaires * Mise en base Ça fonctionne mais je préfèrerai travailler fichier par fichier * iterate sur fichier_1.xml * un fichier temporaire "evenement" pour fichier_1.xml * un fichier temporaire "sous_evenement_classe1" fichier_1.xml * un fichier temporaire "sous_evenement_classe1" fichier_2.xml (...) * reconstitution de toutes les lignes de fichier_1.xml par jointure sur les fichiers temporaires * Mise en base * iterate sur fichier_2.xml Ça serait plus performant (les jointures se font sur des fichiers plus petits) et plus propre (si par exemple plantage durant exécution). |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com