

# ステップ 1. JSON 設定ファイルを作成する
<a name="custom-visual-transform-json-config-file"></a>

 カスタムビジュアル変換を定義して記述するには、JSON 設定ファイルが必要です。設定ファイルのスキーマは次の通りです。

## JSON ファイル構造
<a name="custom-visual-transform-json-file-structure"></a>

 **フィールド** 
+  `name: string` – (必須) 変換の識別に使用される変換システム名。Python の変数名 (識別子) に設定されているのと同じ命名規則に従ってください。具体的には、文字またはアンダースコアで始まり、文字、数字、および/またはアンダースコアのみで構成されている必要があります。
+  `displayName: string` – (オプション) AWS Glue Studio ビジュアルジョブエディタに表示される変換の名前。`displayName` を指定しない場合は、AWS Glue Studio では `name` が変換の名前として使用されます。
+  `description: string` – (オプション) 変換の説明が AWS Glue Studio に表示され、検索できます。
+  `functionName: string` – (必須) Python 関数名が Python スクリプトで呼び出す関数を識別するために使用されます。
+  `path: string` – (オプション) Python ソースファイルへの Amazon S3 のフルパス。指定しない場合は、AWS Glue では、ファイル名マッチングを使用して .json ファイルと .py ファイルがペアリングされます。例えば、JSON ファイルの名前が `myTransform.json` の場合、同じ Amazon S3 ロケーションにある `myTransform.py` という Python ファイルとペアになります。
+  `parameters: Array of TransformParameter object` – (オプション) AWS Glue Studio ビジュアルエディタで設定するときに表示されるパラメータのリスト。

<a name="transformparameter-fields"></a> **TransformParameter フィールド** 
+  `name: string` – (必須) ジョブスクリプト内で名前付き引数として Python 関数に渡されるパラメータ名。Python の変数名 (識別子) に設定されているのと同じ命名規則に従ってください。具体的には、文字またはアンダースコアで始まり、文字、数字、および/またはアンダースコアのみで構成されている必要があります。
+  `displayName: string` – (オプション) AWS Glue Studio ビジュアルジョブエディタに表示される変換の名前。`displayName` を指定しない場合は、AWS Glue Studio では `name` が変換の名前として使用されます。
+  `type: string` – (必須) 一般的な Python データ型を受け入れるパラメータ型。有効な値: 'str' \$1 'int' \$1 'float' \$1 'list' \$1 'bool'。
+  `isOptional: boolean` – (オプション) パラメータがオプションかどうかを決定します。デフォルトでは、すべてのパラメータが必須です。
+  `description: string` – (オプション) ユーザーによる変換パラメータの設定に役立つ説明が AWS Glue Studio に表示されます。
+  `validationType: string` – (オプション) このパラメータの検証方法を定義します。現在、正規表現のみをサポートしています。デフォルトで検証タイプは `RegularExpression` に設定されています。
+  `validationRule: string` – (オプション) `validationType` が `RegularExpression` に設定されている場合、送信前にフォーム入力を検証するために使用される正規表現。正規表現の構文は [RegExp Ecmascript の仕様](https://tc39.es/ecma262/multipage/text-processing.html#sec-regexp-regular-expression-objects)に合致している必要があります。
+  `validationMessage: string` – (オプション) 検証が失敗したときに表示するメッセージ。
+  `listOptions: An array of TransformParameterListOption object` または `string`、もしくは「column」という文字列の値 — (オプション) 選択、または複数選択の UI コントロールに表示するためのオプション。カンマ区切り値 (CSV) のリスト、または強く型付けされた `TransformParameterListOption` 型の JSON オブジェクトを受け入れます。文字列の値「column」を指定すると、親ノードのスキーマから、列のリストを動的に入力することもできます。
+  `listType: string` – (オプション) type = 'list' のオプションタイプを定義します。有効な値: 'str' \$1 'int' \$1 'float' \$1 'list' \$1 'bool'。一般的な Python データ型を受け入れるパラメータ型。

 **TransformParameterListOption フィールド** 
+  `value: string | int | float | bool` – (必須) オプション値。
+  `label: string` – (オプション) 選択ドロップダウンに表示されるオプションラベル。

## AWS Glue Studio での変換パラメータ
<a name="custom-visual-transform-parameters"></a>

 .json ファイルで `isOptional` と指定しない限り、デフォルトでパラメータは必須です。AWS Glue Studio では、パラメータが **[Transform]** (変換) タブに表示されます。この例は、E メールアドレス、電話番号、年齢、性別、出身国などのユーザー定義パラメータを示しています。

![\[スクリーンショットは、選択したカスタムビジュアル変換と、ユーザー定義のパラメータを表示している [Transform] (変換) タブを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/dynamic-transform-parameters.png)


 `validationRule` パラメータを指定し、`validationMessage` で検証メッセージを指定することで、JSON ファイルで正規表現を使用する際に AWS Glue Studio で一部の検証を必須にできます。

```
      "validationRule": "^\\(?(\\d{3})\\)?[- ]?(\\d{3})[- ]?(\\d{4})$",
      "validationMessage": "Please enter a valid US number"
```

**注記**  
 検証はブラウザで行われるため、正規表現の構文は [RegExp Ecmascript の仕様](https://tc39.es/ecma262/multipage/text-processing.html#sec-regexp-regular-expression-objects)に合致している必要があります。Python 構文は、これらの正規表現ではサポートされていません。

 検証を追加することで、ユーザーが誤ったユーザー入力でジョブを保存するのを防ぐことができます。次の例のように AWS Glue Studio に検証メッセージが表示されます。

![\[このスクリーンショットは、検証エラーメッセージを含むカスタムビジュアル変換パラメータを示しています。有効な E メールアドレスを入力してください。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/dynamic-transform-validation-message.png)


 パラメータは、パラメータ設定に基づいて AWS Glue Studio に表示されます。
+  `type` が `str`、`int`、または `float` の場合、テキスト入力フィールドが表示されます。例えば、スクリーンショットは「E メールアドレス」と「年齢」パラメータの入力フィールドを示しています。  
![\[スクリーンショットは、テキスト入力フィールド付きのカスタムビジュアル変換パラメータを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/dynamic-transform-email-address.png)  
![\[スクリーンショットは、テキスト入力フィールド付きのカスタムビジュアル変換パラメータを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/dynamic-transform-your-age.png)
+  `type` が `bool` の場合、チェックボックスが表示されます。  
![\[スクリーンショットは、テキスト入力フィールド付きのカスタムビジュアル変換パラメータを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/dynamic-transform-bool.png)
+  `type` が `str` であり、`listOptions` が指定されていると、単一選択リストが表示されます。  
![\[スクリーンショットは、カスタムビジュアル変換パラメータを単一選択リストのドロップダウンとともに示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/dynamic-transform-single-list.png)
+  `type` が `list` であり、`listOptions` と `listType` が指定されていると、複数選択リストが表示されます。  
![\[スクリーンショットは、カスタムビジュアル変換パラメータをリストのドロップダウンとともに示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/dynamic-transform-list-options.png)

### 列のセレクタをパラメータとして表示
<a name="custom-visual-transform-parameters-column-selector"></a>

 スキーマから列をユーザーが選択するように設定されている場合は、列セレクタを表示することで、ユーザーは列の名前を入力する必要がなくなります。`listOptions` フィールドを「column」に設定すると、親ノードの出力スキーマに基づいて、列セレクタを AWS Glue Studio が動的に表示します。AWS Glue Studio は単一の列、または複数列のセレクタを表示できます。

 次の例でスキーマを使用しています。

![\[スクリーンショットは、出力スキーマの例を示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/custom-visual-transform-example-schema.png)


**単一の列を表示するように、Custom Visual Transform パラメータを定義するには**

1.  JSON ファイルで、`parameters` オブジェクトの `listOptions` の値を、「column」に設定します。これにより、ユーザーが AWS Glue Studio の選択リストから列を選択できるようになります。  
![\[スクリーンショットは、listOptions パラメータを「column」に設定した JSON ファイルと、その結果の AWS Glue Studio のユーザーインターフェイスの例を示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/custom-visual-transform-example-listoptions-column.png)

1.  次のようにパラメータを定義すると、複数の列を選択することもできます。
   +  `listOptions: "column"` 
   +  `type: "list"`   
![\[スクリーンショットは、listOptions パラメータを「column」に、タイプを「list」に設定した JSON ファイルと、その結果の AWS Glue Studio のユーザーインターフェイスの例を示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/custom-visual-transform-example-listoptions-column-type-list.png)