2016-04-05 3 views
0

私はグループのリーダーを見つけて従業員のリーダーを更新する必要があります。私はDataStageでこれをどのように進めるべきかわかりません。DataStage再帰

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

以下のように私は従業員がグループを変更した場合、従業員テーブルを更新するためのファイルを取得した従業員テーブルを持っています。 Change code = CHGはジョブ/グループの変更を意味します。

私はファイルと従業員テーブルの間で等価結合を行い、マネージャIDを更新できます。同時に、私はリーダーを見つける必要があります。私はトップレベルのリーダーに報告するすべての従業員を取得し、すべての従業員のリーダーIDとして使用する必要があります。

ファイル:

emp_id mgr_id chg_cd 
1  102  CHG 
101  301  CHG 

ファイルの行1:EMP_ID = 1のマネージャーの変化があります。あなたはこれをどう進めるかに私を提案してくださいすることができ、従業員テーブルに

のためMGR_IDとleader_idを変更する必要があり、管理者の変更がEMP_ID = 102のためにあります:従業員表内leader_id
ファイルの2行目、MGR_IDを更新する必要がありますDataStageで?

+0

リーダーでの識別方法と、その例で変更が必要な理由についての情報は提供していません。一般に、再帰が必要な場合は、SQLで行うことをお勧めします。 – MichaelTiefenbacher

+0

私が入手したファイルには全従業員の履歴があります。私はファイルのリーダーを追跡する必要があります。従業員がグループを変更すると、マネージャーが変更され、そのグループのリーダーを見つけてemp.leader_idを更新する必要があります.Change code = CHGはジョブの変更を意味します。頭は9999です(これはemp_idと同じですが、このIDもファイルに入っています)。その場合、従業員の新しいマネージャーもグループを変更する可能性があります。リーダーIDのテーブルはありません。これがデータ処理で可能かどうか教えてください – user3225032

+0

リーダーは、ID = 9999の組織の先頭に報告しているリーダーです。これらは私が見つける必要があるリーダーのIDです。 – user3225032

答えて

0

okこの問題には、再帰を伴う解が必要です。 DataStageはそれを行う方法がないため(マネージャとリーダーの間のレベルが変わる場合) データをデータベーステーブルにロードし、再帰的なSQLを使用してクエリを実行します。これにより、求めているソリューションが提供されます。

例: 再帰的SQL文を使用して、すべての指導者が異なるレベルを管理するすべての指導者を抽出し、そのデータをda DataStageルックアップで使用してファイルデータを充実させます。

+0

ちょうど興味深いですが、データを取得するためにルックアップを使用する方法はありますか? – user3225032

+0

パスの最大「深さ」を知っている場合yes - 適切で柔軟な実装が必要な場合 - no。 – MichaelTiefenbacher