目次

Search

  1. はじめに
  2. Informatica Data Engineering Integrationについて
  3. マッピング
  4. マッピングの最適化
  5. ソース
  6. ターゲット
  7. トランスフォーメーション
  8. Pythonトランスフォーメーション
  9. データプレビュー
  10. クラスタワークフロー
  11. プロファイル
  12. 監視
  13. 階層データ処理
  14. 階層データ処理設定
  15. スキーマが変更された階層データの処理
  16. インテリジェント構造モデル
  17. ブロックチェーン
  18. ステートフルコンピューティング
  19. 付録 A: 接続リファレンス
  20. 付録 B: データ型リファレンス
  21. 付録 C: 関数リファレンス

例: 最も高い給与を検索するパーティションの使用

例: 最も高い給与を検索するパーティションの使用

組織にHRスタッフメンバがいます。このHRスタッフメンバは、従業員が重要と考える人生の側面と従業員の給与の関連性をモデル化するプロジェクトに従事しています。この情報を使用して、組織のウエルネス制度を個人に合わせてカスタマイズする必要があります。
プロジェクトの最初の部分を実行するPythonトランスフォーメーションを使用して、部門内で最も高い給与を得ている従業員を識別できます。
以下の表に、組織が収集できるデータを示します。
DepartmentName
DepartmentID
EmployeeName
SalaryIndex
EmployeeSince
HR
1
Jane Smith
500
2/16/2010
R&D
2
Ellioth Consar
150
3/29/2018
Finance
3
Concor Valashe
230
11/22/2007
Marketing
4
Manchini Voliore
800
5/17/2009
HR
1
Blaze Concave
501
8/25/2016
R&D
2
Janet Encarr
890
1/26/2019
HR
1
Chelsea Blanch
389
9/3/2018
R&D
1
Samuel Coin
10
1/26/2005
このタスクにPythonトランスフォーメーション使用するには、次の手順を実行します。
手順1.Pythonトランスフォーメーションをマッピングに追加します。
アクティブPythonトランスフォーメーションを作成します。
手順2.データをPythonトランスフォーメーションに渡します。
マッピングのアップストリームトランスフォーメーションからPythonトランスフォーメーションに次のポートを渡します。
  • DepartmentName
  • DepartmentID
  • EmployeeName
  • SalaryIndex
  • EmployeeSince
手順3.データを部門別にパーティション化します。
データを部門別にパーティション化して、各部門の最も高い給与を追跡します。データを部門別にパーティション化するには、入力ポート
DepartmentID
をパーティションキーとして選択します。
手順4.出力ポートを作成します。
Pythonトランスフォーメーションの[ポート]タブで、次の出力ポートを作成して、データをダウンストリームトランスフォーメーションに渡します。
  • DepartmentName_out
  • DepartmentID_out
  • EmployeeName_out
  • SalaryIndex_out
  • EmployeeSince_out
手順5.マップを初期化します。
各部門IDとその部門の最も高い給与を得ている従業員を関連付けるマップ変数
outputmap
を宣言します。
[入力前]タブに次のコードを追加します。
print("Using partitions to find the employee with the highest salary") outputmap = {}
手順6.データを処理するコードを定義します。
Pythonトランスフォーメーションを通過する各入力行について、従業員の給与が処理済みの行の最高給与よりも高いかどうかを確認するコードを定義します。この従業員の給与の方が高い場合は、部門の最高給与を得ている従業員を更新します。
[入力時]タブに次のコードを追加します。
DepartmentID_out = DepartmentID print("Processing rows for department ID " + str(DepartmentID_out)) outputmap.setdefault(DepartmentID, None) updateMax = False if outputmap.get(DepartmentID, None) is None: updateMax = True else: max_salary = outputmap[DepartmentID]['SalaryIndex'] if max_salary is None: updateMax = True if SalaryIndex > max_salary: updateMax = True if updateMax == True: employee_data = {'SalaryIndex':SalaryIndex,'EmployeeName':EmployeeName, 'EmployeeSince':EmployeeSince,'DepartmentName':DepartmentName} outputmap[DepartmentID] = employee_data
手順7.データを出力ポートに書き込みます。
[最後]タブで、マップ変数
outputmap
のデータを使用して、各部門で最も高い給与を得ている従業員の行を生成します。
[最後]タブに次のコードを追加します。
for x in outputmap: DepartmentID_out = x smap = outputmap[x] SalaryIndex_out = smap["SalaryIndex"] EmployeeName_out = smap["EmployeeName"] DepartmentName_out = smap["DepartmentName"] EmployeeSince_out = smap["EmployeeSince"] ## Generate the output row generateRow()
手順8.マッピングを実行します。
Pythonトランスフォーメーションの出力ポートが書き込みトランスフォーメーションに直接リンクされている場合、ターゲットにはマッピング実行後に次のデータが含まれます。
DepartmentName
DepartmentID
EmployeeName
SalaryIndex
EmployeeSince
Finance
3
Concor Valashe
230
11/22/2007
Marketing
4
Manchini Voliore
800
5/17/2009
HR
1
Blaze Concave
501
8/25/2016
R&D
2
Janet Encarr
890
1/26/2019