目次

Search

  1. はじめに
  2. トランスフォーメーション
  3. ソーストランスフォーメーション
  4. ターゲットトランスフォーメーション
  5. アクセスポリシートランスフォーメーション
  6. B2B Data Transformation
  7. アグリゲータトランスフォーメーション
  8. クレンジングトランスフォーメーション
  9. データマスキングトランスフォーメーション
  10. データサービストランスフォーメーション
  11. 重複排除トランスフォーメーション
  12. 式トランスフォーメーション
  13. フィルタトランスフォーメーション
  14. 階層ビルダートランスフォーメーション
  15. 階層パーサートランスフォーメーション
  16. 階層プロセッサトランスフォーメーション
  17. 入力トランスフォーメーション
  18. Javaトランスフォーメーション
  19. JavaトランスフォーメーションAPIリファレンス
  20. ジョイナトランスフォーメーション
  21. ラベラトランスフォーメーション
  22. ルックアップトランスフォーメーション
  23. 機械学習トランスフォーメーション
  24. マップレットトランスフォーメーション
  25. ノーマライザトランスフォーメーション
  26. 出力トランスフォーメーション
  27. 解析トランスフォーメーション
  28. Pythonトランスフォーメーション
  29. ランクトランスフォーメーション
  30. ルータトランスフォーメーション
  31. ルール仕様トランスフォーメーション
  32. シーケンスジェネレータトランスフォーメーション
  33. ソータートランスフォーメーション
  34. SQLトランスフォーメーション
  35. 構造パーサートランスフォーメーション
  36. トランザクション制御トランスフォーメーション
  37. 共有体トランスフォーメーション
  38. Velocityトランスフォーメーション
  39. ベリファイヤトランスフォーメーション
  40. Webサービストランスフォーメーション

トランスフォーメーション

トランスフォーメーション

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

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

組織に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.出力フィールドを作成します。
[出力フィールド]
タブで次の出力フィールドを作成し、データをダウンストリームトランスフォーメーションに渡すようにします。
  • DepartmentName_out
  • DepartmentID_out
  • EmployeeName_out
  • SalaryIndex_out
  • EmployeeSince_out
手順5.マップを初期化します。
各部門IDとその部門の最も高い給与を得ている従業員を関連付けるマップ変数
outputmap
を宣言します。
[Pre-Partition Pythonコード]
セクションで次のコードを追加します。
print("Using partitions to find the employee with the highest salary") outputmap = {}
手順6.データを処理するコードを定義します。
Pythonトランスフォーメーションを通過する各入力行について、従業員の給与が処理済みの行の最高給与よりも高いかどうかを確認するコードを定義します。この従業員の給与の方が高い場合は、部門の最高給与を得ている従業員を更新します。
[メイン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.データを出力ファイルに書き込みます。
[Python]
タブの
[Post-Partition Pythonコード]
セクションで、マップ変数
outputmap
のデータを使用し、各部門で最も高い給与を得ている従業員の行を生成します。
[Post-Partition Pythonコード]
セクションで次のコードを追加します。
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