ビジュアルジョブでの FindMatches の使用
AWS Glue Studio で FindMatches 変換を使用するには、FindMatches API を呼び出す カスタム変換 ノードを使用します。カスタム変換の使用に関する詳細については、「カスタム変換を作成する」を参照してください。
注記
現在、FindMatches API は、Glue 2.0
でのみ動作します。FindMatches API を呼び出すカスタム変換を使用してジョブを実行するには、AWS Glue のバージョンが [ジョブの詳細] タブの Glue 2.0
に表示されていることを確認してください。AWS Glue のバージョンが Glue 2.0
でない場合、ジョブは実行時に失敗し、「'awsglueml.transforms' から 'FindMatches' という名前の変換をインポートできません」というエラーメッセージが表示されます。
前提条件
-
一致の検索 変換を使用するには、AWS Glue Studio で [https://console.aws.amazon.com/gluestudio/
] コンソールを開きます。 -
機械学習変換を作成します。作成すると、transformId が生成されます。この ID は以下の手順で必要になります。機械学習変換の作成方法の詳細については、「機械学習変換の追加と編集」を参照してください。
FindMatches 変換の追加
FindMatches 変換を追加するには
-
AWS Glue Studio ジョブエディターで、ビジュアルジョブグラフの左上隅にある十字記号をクリックして [リソース] パネルを開き、[データ] タブを選択してデータソースを選択します。これは、一致を確認するデータ ソースです。
-
データソースノードを選択し、ビジュアルジョブグラフの左上隅にある十字記号をクリックして [リソース] パネルを開き、「custom transform」を検索します。カスタム変換ノードを選択してグラフに追加します。カスタム変換はデータソースノードにリンクされています。リンクされていない場合は、カスタム変換ノードをクリックして[ノードプロパティ] タブを選択し、[ノードの親] でデータソースを選択します。
-
ビジュアルグラフの[カスタム変換]ノードをクリックし、[ノードプロパティ]タブを選択し、カスタム変換に名前を付けます。ビジュアルグラフに表示される変換名は、わかりやすい名前に変更することをお勧めします。
-
コードブロックを編集するには、[変換] タブを選択します。ここで、FindMatches API を呼び出すコードを追加できます。
コードブロックには、すぐに始めることができるようにコードが予め入力されています。予め入力されているコードを下記のテンプレートで上書きします。テンプレートには、入力できる transformId のプレースホルダーが表示されています。
def MyTransform (glueContext, dfc) -> DynamicFrameCollection: dynf = dfc.select(list(dfc.keys())[0]) from awsglueml.transforms import FindMatches findmatches = FindMatches.apply(frame = dynf, transformId = "<your id>") return(DynamicFrameCollection({"FindMatches": findmatches}, glueContext))
-
ビジュアルグラフの[カスタム変換]ノードをクリックし、ビジュアルジョブグラフの左上隅にある十字記号をクリックして[リソース] パネルを開き、「Select From Collection」を検索します。コレクションには DynamicFrame が 1 つしかないため、デフォルトの選択を変更する必要はありません。
-
続けて変換を追加したり、結果を保存したりすることができます。結果には、[一致の検索] 列が追加されました。これらの新しい列を下流の変換で参照する場合は、それらを変換出力スキーマに追加する必要があります。それを行う最も簡単な方法は、[データプレビュー] タブを選択し、[スキーマ] タブで [データプレビュースキーマの使用] を選択することです。
-
FindMatches をカスタマイズするには、「apply」メソッドに渡すパラメーターを追加できます。FindMatches クラスを参照してください。
「FindMatches」段階的な変換の追加
インクリメンタルマッチングの場合、プロセスは FindMatches 変換の追加と同じですが、次の点が異なります。
-
カスタム変換の親ノードの代わりに、2 つの親ノードが必要です。
-
最初の親ノードはデータセットでなければなりません。
-
2 番目の親ノードはインクリメンタルデータセットでなければなりません。
テンプレートコードブロックで
transformId
をtransformId
に置き換えてください。def MyTransform (glueContext, dfc) -> DynamicFrameCollection: dfs = list(dfc.values()) dynf = dfs[0] inc_dynf = dfs[1] from awsglueml.transforms import FindIncrementalMatches findmatches = FindIncrementalMatches.apply(existingFrame = dynf, incrementalFrame = inc_dynf, transformId = "<your id>") return(DynamicFrameCollection({"FindMatches": findmatches}, glueContext))
-
オプションのパラメータについては、「FindIncrementalMatches クラス」を参照してください。