2016-04-05 3 views
0

Мне нужно найти лидера группы и обновить лидера сотрудника. Я не уверен, как это сделать в DataStage.Рекурсия DataStage

У меня есть таблица сотрудников, как показано ниже

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

Я получить файл, чтобы обновить таблицу сотрудников, когда работник меняет группу. Код изменения = CHG означает, что это изменение работы/группы.

Я делаю equi для соединения между файлом и таблицей сотрудников и может обновлять идентификатор менеджера. В то же время мне нужно найти лидера. Мне нужно получить всех сотрудников, которые отчитываются перед лидером высшего уровня и использовать его как лидера для каждого сотрудника.

файла:

emp_id mgr_id chg_cd 
1  102  CHG 
101  301  CHG 

файла Строка 1: Существует изменение управляющего для emp_id = 1; необходимо обновить mgr_id, leader_id в таблице сотрудников
File Row 2: Существует изменение в менеджере для emp_id = 102, нужно изменить mgr_id и leader_id для в таблице сотрудников

Можете ли вы предложить мне о том, как продолжить в DataStage?

+0

Вы не указали информацию о том, как можно идентифицировать лидера и почему его нужно изменить в вашем примере. В общем случае, если требуется рекурсия, я предлагаю сделать это в SQL. – MichaelTiefenbacher

+0

Файл, который у меня есть, имеет историю всех сотрудников. Мне нужно проследить лидера в файле. Если сотрудник меняет группу, которую меняет менеджер, мне нужно найти лидера этой группы и обновить emp.leader_id.Change code = CHG означает смену работы. Я знаю идентификатор организации head - 9999 (это то же самое, что и emp_id; этот идентификатор также входит в файл). У меня есть ситуация, когда новый менеджер может менять группу в этом случае. Я также нашел лидера для менеджера. Нет таблицы для идентификаторов лидера. Пожалуйста, дайте мне знать, если это можно сделать в datastage. – user3225032

+0

Лидеры - это те, кто докладывает руководителю организации, чей ID = 9999. Это идентификатор руководителя, который мне нужно найти. – user3225032

ответ

0

ОК эта проблема требует решения с рекурсией. Поскольку DataStage не имеет возможности это сделать (если уровни между менеджерами и лидерами являются переменными). Загрузите данные в таблицу базы данных и используйте рекурсивный SQL для запроса - это предоставит вам решение, о котором вы просите.

Пример: Извлеките всех лидеров своими бизнес-единицами, которыми они управляют, внедряя разные уровни) с помощью рекурсивного оператора SQL и используйте эти данные в поиске DataStage для обогащения данных файла.

+0

Просто любопытно, есть ли способ использовать только поиск, чтобы получить эти данные в datastage? – user3225032

+0

Если вы знаете максимальную «глубину» пути да - если вам нужна хорошая и гибкая реализация - нет. – MichaelTiefenbacher

Смежные вопросы