2016-08-18 1 views
1

J'ai beaucoup de bases de données (+100) chacune a la même structure et des connexions différentes. J'utilise Kettle pour exécuter une transformation dans les différentes bases de données afin de créer un entrepôt de données.Exécuter la même transformation avec plusieurs connexions de base de données sur Kettle

Comment puis-je automatiser l'exécution de la même transformation avec différentes connexions?

Je le prouve déjà Pass DB Connection parameters to a Kettle a.k.a PDI table Input step dynamically from Excel mais n'accepte qu'une ligne dans le fichier csv.

Dois-je créer une boucle, ou je vais avoir besoin de créer un script?

Toute aide serait appréciée. (Désolé pour mon anglais)

+0

"mais il accepte seulement une ligne dans le csv" - qu'est-ce que cela signifie? Il peut +100 lignes (chaque ligne contient les détails de connexion à certains DB). Définissez les détails de connexion dans les variables et exécutez la sous-transformation après. Il y a un exemple dans les répertoires $ KETTLE_HOME/example comment utiliser substransformation – simar

Répondre

2

Vous pouvez le faire avec une boucle. Mais, ne vous inquiétez pas, ce n'est pas difficile de faire ça avec Pentaho.

Tout d'abord, vous utiliserez un emploi pour créer votre boucle:

DÉBUT ->Transform_that_holds_parameters ->Transform_to_run_in_a_loop

Comme vous pouvez le deviner, votre transformation qui fonctionne également sur chaque DB est le dernier sur ce flux. Mais nous devons définir deux drapeaux avancés sur cette entrée de tâche:

  • Exécuter pour chaque ligne d'entrée?
  • Copier le résultat précédent dans les paramètres?

Ensuite, nous devons construire nos Transform_that_holds_parameters avec la structure suivante:

Some_sort_of_input -> copy_rows_to_result

Ici, vous devez saisir tous les paramètres de connexions de quelque part, que ce soit un fichier Excel ou une table dans une autre base de données. Mais une fois que vous avez gradué ces données, assurez-vous d'avoir 1 ligne pour chaque base de données dans laquelle vous voulez exécuter votre transformation. Ok? Connectez-vous à l'étape "Copier les lignes dans le résultat", cette étape envoie les données à notre travail et si vous vous souvenez, notre prochaine transformation est définie sur "Exécuter pour chaque ligne d'entrée" et "Copier le résultat précédent dans les paramètres '.

Maintenant, souvenez-vous bien quels sont les noms des colonnes qui vont à la dernière étape de cette transformation, vous en aurez besoin à l'étape suivante.

Retournez à notre travail et aller aux propriétés des Transform_to_run_in_a_loop, les paramètres ouverts et remplissez le « paramètre » colonne et « nom de la colonne de flux » avec les colonnes que nous venons de Copié au résultat.

À l'intérieur de votre transformation, vous devrez définir les mêmes paramètres avec exactement les mêmes noms. Et utilisez ces paramètres dans vos paramètres de connexion. Terminé, vous allez maintenant avoir la première transformation de tous les paramètres et la seconde pour chaque configuration de base de données que vous avez.