💬

Dataprepを使ってデータ編集レシピを作ってみた

に公開

今回はDataprepを利用してTitanicデータセットを加工してみようと思います。

Dataprepとは?

Dataprepとは、Alteryxと共同で構築されたGoogleのセルフサービスデータ準備ツールです。BigQueryなどのデータソースからデータを取得してレシピを通して加工し、再度BigQueryやCloud Storageなどに格納するといったデータの処理を実行することができます。Dataprepを利用することでデータのクリーニングや変換などを一つのプラットフォームで可視化しながら実行できるため、データエンジニアリングに大きく貢献します。

なお、今回の検証ではトライアル期間に利用していますが、実際に利用するときは月額や年額に合わせて使用料金がチャージされます。

https://cloud.google.com/blog/ja/topics/developers-practitioners/google-cloud-dataprep-trifacta-cheat-sheet
https://cloud.google.com/blog/ja/products/data-analytics/new-dataprep-ai-features-for-data-wrangling

実際に使ってみる!

今回は簡単ではありますがBigQuery上に展開されたTitanicデータセットをDataprepにインポートし、それを加工したものを再度BigQueryにアップロードしようと思います。これを実行するにあたり、以下の記事にそってBigQuery上にはすでにTitanicのデータセットがあることを前提とします。また、Dataprepはすでに使える状態であることを前提とします。

https://zenn.dev/akasan/articles/4ac96d153149c7

Flowの作成

Dataprep画面ではFlows画面があります。そこからCreateBlank flowでFlowを作成します。


Flows画面

すると以下のように空のFlowが作成されます。


空のFlow画面

データセットの登録

それではデータセットを登録しましょう。今回はBigQueryからtitanicデータのうちtrain.csvをインポートします。

先ほどの画面の右上に+ Add datasetsがあるので選択します。すると以下のようにデータセット一覧が表示されます。


データセット追加画面

今回は新しくBigQueryを参照しようと思うので、左下のImport datasetsを選択します。すると以下のようなトップページが表示されます。


データセットインポート画面

データセットを選択すると以下のようにテーブルが表示されるので、今回はtrain.csvを選択します。すると右の一覧に追加されるのでImport & Add to flowを選択します。


データセット選択

すると以下のように最初のフロー画面にデータセットが追加されます。


データセットロード後のFlow

データ加工レシピの追加

それでは次にインポートしたデータの加工をしてみます。先ほどインポートしたデータに連結されているRecipeを選択すると以下のような画面になるので、Edit recipeを選択します。


レシピ選択

すると以下のようにRecipeに対して入力されるデータの一覧とそのヒストグラムが表示されます。


レシピトップ画面

今回はNameカラムの削除と、Sexカラムを数値に変換してみます。

現時点では画面右側のRecipeには何も登録されていないのでデータ変換はされていません。Recipeではどのような処理をするかをスタックしていくことにより、データ加工のRecipeを作成します。

それではまずはNameカラムを削除するためのRecipeを追加します。以下の手順を実施します。

  1. Add new stepを選択
  2. Delete columnsを選択
  3. Nameカラムを選択する
  4. Addを選択する

するとRecipe一覧にDelete Nameが追加され、左側のデータからNameカラムがいえていることが確認できます。


Nameカラム削除

次にSexカラムを変換してみます。femaleとmaleという二つの値があるので、femaleを0に、maleを1に変換するような処理を入れてみます。今回はif/else構文で実施してみます。

  1. New stepを選択
  2. Conditional columnを選択
  3. Condition typeif...then...elseを選択
  4. IfにSex == "female"を指定し、Thenに0、Elseに1を設定
  5. New column nameSex_Intを設定

すると、Recipe一覧にCreate ...が追加され、左側のデータにSex_Intカラムが追加されていることがわかります。


Sex_Intカラムの追加

このほかにもさまざまな変換が用意されていたりデータ分析が可能になっていますが、今回は省略します。

この状態でFlow画面に戻ると、以下のようにRecipeが更新されていることが確認できます。


Recipe追加後のFlow画面

Flowの実行とBigQueryへのエクスポート

それでは最後に作成したFlowを実行してBigQueryにエクスポートしてみましょう。Outputを選択するとRunが表示されるので選択します。


Output選択

するとRunの詳細を設定する画面に移動します。


Run詳細画面

画面中頃のPublishing Actionsで最初はCreate-CSVになっていますが、こちらをBigQuery当てに変更するために、右側からEditを選択します。すると以下のような画面に移動できるので、右側のCreate a new tableを選択します。


Export先指定画面

すると以下のような表示が出るので、テーブル名を指定します。その他のオプションは今回は変更しないでおきます。


新たなテーブル作成設定

こちらで設定を保存するとRunの詳細画面に移動するので、右下のRunを選択します。完了すると以下のような画面に切り替わります。


Run実行結果

無事エラーなく実行できたので、BigQueryのテーブルにtrain_output_dataprepが追加されているか確認してみましょう。BigQuery上でデータが確認でき、Nameカラムがないこと、Sex_Intカラムが追加されていることが確認できます。


Run実行結果

まとめ

今回はBigQueryからDataprepにデータを取り込み、編集した結果をBigQueryにエクスポートしてみました。今回はDataprepの機能の1%にも満たない紹介ですが、実際にはさまざまなデータに関連するオペレーションがありとても便利なツールです。個人利用をするには少々お高いかもしれませんが、データ分析をGUIでガッツリしたい人にとっては最適なツールの一つになるのではないでしょうか。

Discussion