2017-05-24 1 views
0

J'ai une étape get file names avec une expression régulière qui obtient 4 fichiers CSV. Après cela, j'ai un text file input étape qui définit les champs de la CSV, et lire ces fichiers.Itérer l'étape d'entrée sur un nombre différent de fichiers dans Pentaho

Une fois cette étape terminée, une étape Table output est exécutée.

Le problème est que le text file input semble lire tous les 4 fichiers dans une seule instruction, donc l'instruction table output insère les lignes des 4 fichiers. La table de sortie a 20 lignes (5 pour chaque fichier)

Le beahivour attendu lit un fichier, insère les 5 lignes du fichier dans la table de sortie et exécute le script SQL qui déplace cette table vers une table finale et tronque table de temp. Répétez maintenant le processus pour le deuxième, troisième et dernier fichier.

La table temporaire est supprimée à chaque étape de chargement d'un fichier, mais pas la table finale, elle est incrémentielle.

Comment puis-je faire ça dans pentaho?

Répondre

1

Modifiez votre travail actuel en un sous-job qui s'exécute une fois pour chaque enregistrement entrant.

Dans le nouvel emploi principal dont vous avez besoin:

  • une transformation qui va Get Les noms de fichiers à copier reliant les lignes au résultat
  • une entrée d'emploi avec votre emploi actuel. Configurez-le pour qu'il s'exécute pour chaque ligne.

Dans le sous-programme, vous devez remplacer Get Filenames par Get Rows from Result et reconfigurer le champ contenant le nom de fichier.

+0

Merci pour votre réponse. Ça marche. – Maik