【AWS Glue Studio】データ準備レシピの活用方法

# はじめに
こんにちは。株式会社ジールの@r_sasakiです。
今回は「AWS Glue Studio Data Preparation Recipe（データ準備レシピ）の活用方法とビジネス上での活用メリット」についての検証結果をご紹介します。
# 1.背景・目的
### 1-1.AWS Glue Studio Data Preparation Recipe（データ準備レシピ）とは
背景として、AWS Glue Studioにはジョブとして追加可能な既存のデータ加工機能が備わっておりました。しかし、その加工処理の種類はとても少ないものとなっておりました。一方で、AWS Glue DataBrewという多くの加工処理機能を有する機能がありましたが、AWS Glue ジョブには組み込むことができませんでした。
参照：[AWS Glue DataBrewを使おう！エンジニアじゃなくても簡単にデータ処理！](https://blog.serverworks.co.jp/aws-glue-databrew)

そこで、今回2024年7月にAWS Glue Studioにデータ加工機能である「Data Preparation Recipe(データ準備レシピ)」が一般提供され、ユーザがGUIを用いてノーコードでデータを分析用に加工、編集することができるようになり、より豊富な加工処理機能をAWS Glueジョブに組み込むことができるようになりました。
参照：[AWS Glue Studio でデータ準備を使用してデータを統合し、コラボレーションする](https://aws.amazon.com/jp/blogs/news/integrate-your-data-and-collaborate-using-data-preparation-in-aws-glue-studio/)

データエンジニアだけでなく、アナリストやマーケター等のビジネスサイドのユーザでもGUI上で簡単にデータ加工、編集を可能にし、機械学習やAI、BI用のマート等のデータ活用、分析のハードルを下げることを目的としていると考えられます。
また、Data Preparation Recipe(データ準備レシピ)の利用料金についてはAWS GlueのVisualETL（AWS Glue Studio）を使用した場合の料金計算になるため、使用する時間とデータ処理ユニット（DPU）の数に基づいて料金計算がなされます。
### 1-2.何を検証するのか
新機能である「Data Preparation Recipe（データ準備レシピ）」の利用方法及び実装機能を検証するのに加え、「Data Preparation Recipe（データ準備レシピ）」のビジネス上での活用方法、メリットを検討します。
また、今回の機能検証のフロー図は以下の通りです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3884846/805d7718-8d74-7738-43fc-ace6cf194e22.png)
# 2.Data Preparation Recipe（データ準備レシピ）の利用方法
Data Preparation Recipe（データ準備レシピ）の利用方法は、以下の5つの手順になります。
### 2-1.環境構築
本検証に使用する、S3バケット（インプット用、アウトプット用の２つ）を作成します。また、AWS S3のリソース使用と、AWS Glueの使用を可能にできるような以下のIAMロールを設定します。
・AmazonS3FullAccess
・AWSGlueServiceRole

### 2-2.S3へテストデータをアップロード
作成したS3フォルダに、テストデータをアップロードします。
今回検証に用いたテストデータはデータ数が100件のものを使用しています。
### 2-3.VisuaL ETLからジョブの作成
AWS GlueよりVisuaL ETLからジョブの作成を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3884846/2de34ff1-ff7b-c277-c18b-4c6245d3b7b8.png)

作成画面に遷移後、S3フォルダを選択しデータのインポート元を選択します。この時、データの読み込みが完了するまで待機します。
※待機せずにData Preparation Recipe（データ準備レシピ）をジョブに追加するとエラーが出てしまいます。
### 2-4.Data Preparation Recipe（データ準備レシピ）を使用してデータ加工
Data Preparation Recipe（データ準備レシピ）を開始するために画面左上の「Add nodes」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3884846/8cc4dfbd-4ff1-e07f-3d92-e6274cc4dbb3.png)

「Transforms」の項目から「Data Preparation Recipe」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3884846/43594ebf-1e10-5aca-8d12-b4a7cce024e5.png)

選択完了後、画面右側の「Author Recipe」を選択することでData Preparation Recipe（データ準備レシピ）の処理内容を編集可能になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3884846/237284ce-a9d4-ec79-32a1-a4ecb9972038.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3884846/d79dea1d-2a1b-f9b0-34c3-9117c26914df.png)

Data Preparation Recipe（データ準備レシピ）を開始すると各種機能を使用してデータ加工を行えるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3884846/05dd22de-7cf3-dcfe-0ee8-ebf84a296d09.png)
今回検証する機能としてはデータ分割です。利用方法は以下の通りです。
はじめに、加工機能内の「Split」を選択し、分割方法を選択します。
今回は「空白」文字で分割を行うため「On a single delimiter」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3884846/938667b5-5f12-9e46-8ce9-998e560af685.png)
その後、各種項目の設定を行います。
「Source column」に加工対象のカラムを選択。
「Split column options」は「Using delimiters」を選択します。
「Split column」では最初に選択した分割方法が選択されています。
「Delimiter」には「Enter custom value」を選択し、区切り文字を選択します。今回は「（半角スペース）」を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3884846/48a5fe24-8ef7-abab-379f-afa37082f164.png)
その後、「Include delimiter」の項目で区切り文字を含む場合はチェックを付けます。
最後に、「Apply transform to」の項目でフィルターの適用前後のどちらに対してこの処理を行うかを選択します。今回は、すべてのレコードが対象のため「All rows」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3884846/410f36d2-e046-3285-600c-bab7000c9614.png)
各種設定が完了したら、「Preview changes」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3884846/b5ac49e6-f6bb-dc9b-23a3-0d6a2a321c57.png)

プレビューの結果が表示されるため、ここで設定した処理結果を事前に確認できます。
プレビュー結果を確認後、画面右下の「Apply」を押して加工結果を適応します。
### 2-5.加工結果をS3へ出力
Data Preparation Recipe（データ準備レシピ）での加工完了後、ファイル形式、圧縮タイプ、データカタログのアップデートオプションの情報を選択し、ジョブを実行することでデータ加工後のファイルを出力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3884846/2cafb3c9-80bb-01ad-1c6d-15edb50ce5eb.png)

# 3.検証を行った機能
### 加工機能の一覧
今回の検証で確認したData Preparation Recipe（データ準備レシピ）の、加工機能は以下になります。
・データ分割
・型変換
・カラム名変更
上記機能の他にも、様々な基本的な処理などができるため拡張性が高いものとなっています。
[データ加工機能の紹介一覧](https://docs.aws.amazon.com/ja_jp/glue/latest/dg/glue-studio-data-preparation.html)
## 所感
本検証でVisualETLに、データ加工における基礎的な機能が数多く実装されていることが確認できました。今回初めてVisualETLを使用してみましたが、加工機能が一目でわかるような記載の方法がなされており、また、今回のデータ準備レシピ実装により、AWS DataBrewが元々備えていたデータプレビュー機能も使用できることで実装機能をより視覚的にわかりやすく、直感的に使用できました。
今回のアップデートのメリットとしては、Visual ETLという視覚的に扱いやすいツールに対し、AWS DataBrewの加工処理機能が増加したことによってデータを普段扱っていないエンドユーザーでもエンドユーザー自身でより実務レベルに近いデータ加工処理が可能になると思われます。
# 参考まとめ
[AWS Glue Studio でデータ準備を使用してデータを統合し、コラボレーションする](https://www.bing.com/ck/a?!&&p=b5838f35f6256ecef08b00909569854439815c15d83468296eada37fa77c511fJmltdHM9MTczMjY2NTYwMA&ptn=3&ver=2&hsh=4&fclid=221c3b39-9d51-67ec-0ad9-29d19cbb662a&psq=aws+%e3%83%93%e3%82%b8%e3%83%a5%e3%82%a2%e3%83%abetl+%e4%bd%bf%e3%81%84%e6%96%b9&u=a1aHR0cHM6Ly9hd3MuYW1hem9uLmNvbS9qcC9ibG9ncy9uZXdzL2ludGVncmF0ZS15b3VyLWRhdGEtYW5kLWNvbGxhYm9yYXRlLXVzaW5nLWRhdGEtcHJlcGFyYXRpb24taW4tYXdzLWdsdWUtc3R1ZGlvLw&ntb=1)
[AWS Glue Studio でのデータ準備レシピの使用 - AWS Glue](https://docs.aws.amazon.com/ja_jp/glue/latest/dg/glue-studio-data-preparation.html)
[AWS Glue DataBrewを使おう！エンジニアじゃなくても簡単にデータ処理！](https://blog.serverworks.co.jp/aws-glue-databrew)
[AWS Glue Studio でデータ準備を使用してデータを統合し、コラボレーションする](https://aws.amazon.com/jp/blogs/news/integrate-your-data-and-collaborate-using-data-preparation-in-aws-glue-studio/)