2016-04-05 1 views
0

Je dois trouver un chef de groupe et mettre à jour le chef de l'employé. Je ne suis pas sûr de savoir comment procéder avec DataStage.DataStage récursion

J'ai une table d'employés comme indiqué ci-dessous

Emp_id mgr_id leader_id 
1  100  400 
101  201  500 
3  202  600 

Je reçois un fichier à jour la table des employés lorsqu'un employé change groupe. Changer le code = CHG signifie qu'il s'agit d'un changement de travail/groupe.

Je fais une jointure equi entre le fichier et la table des employés et peut mettre à jour l'identifiant du gestionnaire. En même temps, j'ai besoin de trouver un leader. J'ai besoin d'obtenir tous les employés qui relèvent de ce chef de file et d'utiliser comme identifiant de leader pour chaque employé.

fichier:

emp_id mgr_id chg_cd 
1  102  CHG 
101  301  CHG 

fichier Ligne 1: Il y a changement de gestionnaire pour emp_id = 1; besoin de mettre à jour mgr_id, leader_id dans le tableau des employés
fichier Ligne 2: Il y a changement de gestionnaire pour emp_id = 102, besoin de changer mgr_id et leader_id dans la table des employés

Pouvez-vous s'il vous plaît me suggérer sur la façon de procéder à cette dans DataStage?

+0

Vous n'avez pas fourni d'informations sur la façon dont un leader peut être identifié et pourquoi il doit être modifié dans votre exemple. En général, si la récursivité est nécessaire, je suggère de le faire en SQL. – MichaelTiefenbacher

+0

Le fichier que je reçois a l'histoire de tous les employés. J'ai besoin de tracer le leader dans le fichier. Si un employé change un groupe, le gestionnaire change, je dois trouver le leader de ce groupe et mettre à jour emp.leader_id.Change code = CHG signifie changement d'emploi.Je connais l'ID de l'organisation la tête est 9999 (qui est même que emp_id; Cet id est également dans le fichier) .J'ai une situation dans laquelle le nouveau gestionnaire des employés peut également changer un groupe dans ce cas, j'ai trouvé le chef pour le gestionnaire. Il n'y a pas de table pour les ID de leader. S'il vous plaît laissez-moi savoir si cela peut être fait dans le datastage – user3225032

+0

Les dirigeants sont ceux qui rapportent à la tête de l'organisation dont ID = 9999. Ce sont les identifiants de leader que je dois trouver. – user3225032

Répondre

0

ok ce problème nécessite une solution avec récursivité. Comme DataStage n'a aucun moyen de le faire (si les niveaux entre les gestionnaires et les dirigeants sont variables). Chargez donc les données dans une table de base de données et utilisez le SQL récursif pour l'interroger - cela vous fournira la solution que vous demandez. Exemple: Exemple: Extraire tous les leaders avec leurs unités d'affaires qu'ils gèrent en inculeant différents niveaux) avec l'instruction SQL récursive et utiliser ces données dans une recherche DataStage pour enrichir les données du fichier.

+0

Juste curieux, est-il un moyen d'utiliser seulement les recherches pour obtenir ces données dans le datastage? – user3225032

+0

Si vous connaissez la "profondeur" maximale du chemin oui - si vous avez besoin d'une mise en œuvre bonne et flexible - non. – MichaelTiefenbacher