

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS Glue DataBrewレシピの作成と使用
<a name="recipes"></a>

DataBrew では、*レシピ*は一連のデータ変換ステップです。これらのステップをデータのサンプルに適用するか、同じレシピをデータセットに適用できます。

レシピを開発する最も簡単な方法は、DataBrew プロジェクトを作成することです。このプロジェクトでは、データのサンプルをインタラクティブに操作できます。詳細については、「」を参照してください[AWS Glue DataBrewプロジェクトの作成と使用](projects.md)。プロジェクト作成ワークフローの一環として、新しい (空の) レシピが作成され、プロジェクトにアタッチされます。その後、データ変換を追加してレシピの構築を開始できます。

**注記**  
1 つの DataBrew レシピに最大 100 個のデータ変換を含めることができます。

レシピの開発を進めると、レシピ*を公開*することで作業を保存できます。DataBrew は、レシピの公開バージョンのリストを保持します。レシピジョブで任意の公開バージョンを使用して、レシピを (レシピジョブで) 実行してデータセットを変換できます。レシピステップのコピーをダウンロードして、レシピを他のプロジェクトや他のデータセット変換で再利用することもできます。

DataBrew レシピは、AWS Command Line Interface(AWS CLI) またはいずれかのAWS SDKs を使用してプログラムで開発することもできます。DataBrew API では、変換は*レシピアクション*と呼ばれます。

**注記**  
インタラクティブな DataBrew プロジェクトセッションでは、適用する各データ変換によって DataBrew API が呼び出されます。これらの API コールは、behind-the-scenesの詳細を知ることなく、自動的に行われます。

プログラマーでなくても、レシピの構造と DataBrew がレシピアクションを整理する方法を理解すると便利です。

**Topics**
+ [新しいレシピバージョンの発行](#recipes.publishing)
+ [レシピ構造の定義](#recipes.structure)

## 新しいレシピバージョンの発行
<a name="recipes.publishing"></a>

インタラクティブな DataBrew プロジェクトセッションでレシピの新しいバージョンを発行します。

**新しいレシピバージョンを発行するには**

1. レシピペインで、**発行**を選択します。

1. このバージョンのレシピの説明を入力し、**発行**を選択します。

ナビゲーションペインから **PROJECTS** を選択すると、公開されたすべてのレシピとそのバージョンを表示できます。

## レシピ構造の定義
<a name="recipes.structure"></a>

DataBrew コンソールを使用してプロジェクトを初めて作成するときは、そのプロジェクトに関連付けるレシピを定義します。既存のレシピがない場合は、コンソールによってレシピが作成されます。

コンソールでプロジェクトを操作するときは、変換ツールバーを使用してデータセットのサンプルデータにアクションを適用します。コンソールには、レシピの作成を続行すると、レシピステップとそれらのステップの順序が表示されます。ステップに満足するまでレシピを繰り返して絞り込むことができます。

では[の開始方法AWS Glue DataBrew](getting-started.md)、有名なチェスゲームのデータセットを変換するレシピを作成します。レシピステップのコピーをダウンロードするには、次のスクリーンショットに示すように、**JSON としてダウンロード**または** YAML としてダウンロード**を選択します。

![レシピのインポート、YAML としてのダウンロード、JSON としてのダウンロードオプションを示すメニューがさらに拡張されました。](http://docs.aws.amazon.com/ja_jp/databrew/latest/dg/images/project-view-download-json.png)


ダウンロードした JSON ファイルには、レシピに追加した変換に対応するレシピアクションが含まれています。

新しいレシピにはステップがありません。次に示すように、新しいレシピを空の JSON リストとして表すことができます。

```
[ ]
```

のこのようなファイルの例を次に示します`chess-project-recipe`。JSON リストには、レシピステップを記述する複数のオブジェクトが含まれています。JSON リスト内の各オブジェクトは中括弧 () で囲まれます`{ }`。JSON 行はカンマで区切られます。

```
[
    {
        "Action": {
            "Operation": "REMOVE_VALUES",
            "Parameters": {
                "sourceColumn": "black_rating"
            }
        },
        "ConditionExpressions": [
            {
                "Condition": "LESS_THAN",
                "Value": "1800",
                "TargetColumn": "black_rating"
            }
        ]
    },
    {
        "Action": {
            "Operation": "REMOVE_VALUES",
            "Parameters": {
                "sourceColumn": "white_rating"
            }
        },
        "ConditionExpressions": [
            {
                "Condition": "LESS_THAN",
                "Value": "1800",
                "TargetColumn": "white_rating"
            }
        ]
    },
    {
        "Action": {
            "Operation": "GROUP_BY",
            "Parameters": {
                "groupByAggFunctionOptions": "[{\"sourceColumnName\":\"winner\",\"targetColumnName\":\"winner_count\",\"targetColumnDataType\":\"int\",\"functionName\":\"COUNT\"}]",
                "sourceColumns": "[\"winner\",\"victory_status\"]",
                "useNewDataFrame": "true"
            }
        }
    },
    {
        "Action": {
            "Operation": "REMOVE_VALUES",
            "Parameters": {
                "sourceColumn": "winner"
            }
        },
        "ConditionExpressions": [
            {
                "Condition": "IS",
                "Value": "[\"draw\"]",
                "TargetColumn": "winner"
            }
        ]
    },
    {
        "Action": {
            "Operation": "REPLACE_TEXT",
            "Parameters": {
                "pattern": "mate",
                "sourceColumn": "victory_status",
                "value": "checkmate"
            }
        }
    },
    {
        "Action": {
            "Operation": "REPLACE_TEXT",
            "Parameters": {
                "pattern": "resign",
                "sourceColumn": "victory_status",
                "value": "other player resigned"
            }
        }
    },
    {
        "Action": {
            "Operation": "REPLACE_TEXT",
            "Parameters": {
                "pattern": "outoftime",
                "sourceColumn": "victory_status",
                "value": "ran out of time"
            }
        }
    }
]
```

次に示すように、新しいアクションに新しい行を追加するだけで、各アクションが個々の行であることがわかりやすくなります。

```
[
 { "Action": { "Operation": "REMOVE_VALUES", "Parameters": { "sourceColumn": "black_rating" } }, "ConditionExpressions": [ { "Condition": "LESS_THAN", "Value": "1800", "TargetColumn": "black_rating" } ] },
 { "Action": { "Operation": "REMOVE_VALUES", "Parameters": { "sourceColumn": "white_rating" } }, "ConditionExpressions": [ { "Condition": "LESS_THAN", "Value": "1800", "TargetColumn": "white_rating" } ] },
 { "Action": { "Operation": "GROUP_BY", "Parameters": { "groupByAggFunctionOptions": "[{\"sourceColumnName\":\"winner\",\"targetColumnName\":\"winner_count\",\"targetColumnDataType\":\"int\",\"functionName\":\"COUNT\"}]", "sourceColumns": "[\"winner\",\"victory_status\"]", "useNewDataFrame": "true" } } },
 { "Action": { "Operation": "REMOVE_VALUES", "Parameters": { "sourceColumn": "winner" } }, "ConditionExpressions": [ { "Condition": "IS", "Value": "[\"draw\"]", "TargetColumn": "winner" } ] },
 { "Action": { "Operation": "REPLACE_TEXT", "Parameters": { "pattern": "mate", "sourceColumn": "victory_status", "value": "checkmate" } } },
 { "Action": { "Operation": "REPLACE_TEXT", "Parameters": { "pattern": "resign", "sourceColumn": "victory_status", "value": "other player resigned" } } },
 { "Action": { "Operation": "REPLACE_TEXT", "Parameters": { "pattern": "outoftime", "sourceColumn": "victory_status", "value": "ran out of time" } } }
]
```

アクションは、 ファイルと同じ順序で順番に実行されます。
+ `REMOVE_VALUES` – プレイヤーの評価が 1,800 未満のすべてのゲームを除外するには、クラス A チェスプレイヤーに必要な最小評価です。このアクションには 2 つの出現があります。1 つは少なくともクラス A のプレイヤーではない黒側のプレイヤーを削除し、もう 1 つはこのレベルでない白側のプレイヤーを削除します。
+ `GROUP_BY` – データを要約します。この場合、GROUP\_BY は `winner` (`black` および ) の値に基づいて行をグループにソートします`white`。これらの各グループはさらに分類され、 `victory_status` (`mate`、、`resign`、`outoftime`) の値に基づいて行がサブグループにソートされます`draw`。最後に、各サブグループの出現回数がカウントされます。結果の概要は、元のデータサンプルを置き換えます。
+ `REMOVE_VALUES` – で終了したゲームの結果を削除します`draw`。
+ `REPLACE_TEXT` – の値を変更します`victory_status`。このアクションには、、`mate`、 にそれぞれ 1 つずつ`resign`、3 つの出現があります`oufoftime`。

インタラクティブな DataBrew プロジェクトセッションでは、それぞれがデータサンプルに適用するデータ変換`RecipeAction`に対応します。

DataBrew は 200 を超えるレシピアクションを提供します。詳細については、「[レシピステップと関数リファレンス](recipe-actions-reference.md)」を参照してください。

### 条件の使用
<a name="recipe-actions.conditions"></a>

*条件*を使用して、レシピアクションの範囲を絞り込むことができます。条件は、特定の列値に基づいて不要な行を削除するなど、データをフィルタリングする変換に使用されます。

のレシピアクションを詳しく見てみましょう`chess-project-recipe`。

```
  {
    "Action": {
      "Operation": "REMOVE_VALUES",
      "Parameters": {
        "sourceColumn": "black_rating"
      }
    },
    "ConditionExpressions": [
      {
        "Condition": "LESS_THAN",
        "Value": "1800",
        "TargetColumn": "black_rating"
      }
    ]
  }
```

この変換は、 `black_rating`列の値を読み取ります。`ConditionExpressions` リストはフィルタリング条件を決定します。`black_rating`値が 1,800 未満の行はデータセットから削除されます。

レシピのフォローアップ変換は、 に対して同じことを行います`white_rating`。このようにして、データは各プレイヤー (黒または白) がクラス A 以上と評価されるゲームに限定されます。

文字データの列に適用される条件の別の例を次に示します。

```
  {
    "Action": {
      "Operation": "REMOVE_VALUES",
      "Parameters": {
        "sourceColumn": "winner"
      }
    },
    "ConditionExpressions": [
      {
        "Condition": "IS",
        "Value": "[\"draw\"]",
        "TargetColumn": "winner"
      }
    ]
  }
```

この変換は列内の値を読み取り`winner`、値を探`draw`してそれらの行を削除します。このように、データは、明確な勝者がいたゲームのみに制限されます。

DataBrew は次の条件をサポートしています。
+ `IS` – 列の値は、 条件で指定された値と同じです。
+ `IS_NOT` – 列の値は、 条件で指定された値と同じではありません。
+ `IS_BETWEEN` – 列の値は `GREATER_THAN_EQUAL`パラメータと `LESS_THAN_EQUAL`パラメータの間です。
+ `CONTAINS` – 列の文字列値には、 条件で指定された値が含まれます。
+ `NOT_CONTAINS` – 列の値に、 条件で指定された文字列が含まれていません。
+ `STARTS_WITH` – 列の値は、 条件で指定された文字列で始まります。
+ `NOT_STARTS_WITH` – 列の値は、 条件で指定された文字列で始まるわけではありません。
+ `ENDS_WITH` – 列の値は、 条件で指定された文字列で終わります。
+ `NOT_ENDS_WITH` – 列の値は、 条件で指定された文字列で終わりません。
+ `LESS_THAN` – 列の値は、 条件で指定された値より小さくなります。
+ `LESS_THAN_EQUAL` – 列の値は、 条件で指定された値以下です。
+ `GREATER_THAN` – 列の値が、 条件で指定された値より大きい。
+ `GREATER_THAN_EQUAL` – 列の値は、 条件で指定された値以上です。
+ `IS_INVALID` – 列の値のデータ型が正しくありません。
+ `IS_MISSING` – 列に値はありません。