GUI の ETL ツール Google Cloud Dataprep by Trifacta を使ってみた

  • Google Cloud
  • データ分析
  • AI/ML
  • エンジニア

投稿日:

はじめに

Google Cloud Dataprep by Trifacta(以下、Dataprep と呼称します。)は、Google と Trifacta が連携して提供する GUI の ETL ツールです。
本記事では、Dataprep のクイックスタートの手順を参考にハンズオンを実施し、Dataprep の基本的な使い方とその利便性について確認します。

事前準備

  • Google Cloud のプロジェクトを作成し、課金を有効化します。
  • 下記 サービスと API を有効化します。
    • Dataflow
    • BigQuery
    • Cloud Storage APIs

ここでは詳細な手順は割愛します。Google の公式ドキュメントを参照してください。
参考:Google Cloud プロジェクトをセットアップする
参考:API を有効にしています

手順

  1. 1. Dataprep の有効化
  2. 2. フローの作成
  3. 3. データセットのインポート
  4. 4. レシピの作成(その 1)
  5. 5. レシピの作成(その 2)
  6. 6. ジョブの実行

1. Dataprep の有効化

はじめにでお伝えした通り、Dataprep は Google と Trifacta が連携して提供しています。
そのため、利用にあたっては Trifacta によるプロジェクト内のデータへのアクセス等を許可する必要があります。
本手順では、Dataprep の利用開始に伴い必要な操作を解説します。

1-1. 各種同意及び許可

Dataprep を初めて利用する場合は、以下の確認画面が表示されるため、利用規約を確認して同意します。

1-1-1

続けて Google から Trifacta への情報提供や、Trifacta によるプロジェクト内のデータへのアクセスについて確認画面が表示されるため、同意します。

1-1-2
1-1-3

Dataprep へログインします。

1-1-4
1-1-5

1-2. ステージングバケットの設定

Dataprep の利用にあたり、Dataprep 内で利用するデータを保存するためのストレージ(ステージングバケット)を設定する必要があります。
デフォルトでは US リージョンに自動で作成されるため、デフォルトのままステージングバケットを設定します。

1-2-1

ステージングバケットの設定が完了すると、Dataprep が利用可能となります。

1-2-2

2. フローの作成

Dataprep では、どの元データ(データセット)に対し、どんな処理(レシピ)を実施し、どのようにアウトプットするのかを定義したものをフローと呼びます。
本手順では、フローを作成する方法について解説します。

2-1. フローの作成

Dataprep のコンソール画面にて、左側のナビゲーションバーからFlowsを選択します。

2-1-1

CreateからBlank Flowを選択してフローを作成します。

2-1-2

2-2. フロー名の編集

フローの名称や説明は、フロー名を選択することで編集できます。
クイックスタートでは、米国連邦選挙委員会の 2016 年のデータを利用しているため、名前と説明をそのように編集します。

2-2

3. データセットのインポート

本手順では、フローで処理する元データ(データセット)のインポートの方法を解説します。

3-1. データセットの選択

フロー画面にてDataset+を選択します。

3-1-1

利用可能なデータセットが表示されますが、今回は新たにインポートするため、Import datasetsを選択します。

3-1-2

3-2. データセットのインポート

データセットのインポート画面からCloud Storageを選択し、検索欄に今回インポートするデータが保存されているバケットのパスgs://dataprep-samples/us-fecを入力してGoを選択します。

3-2-1

cn-2016.txtitcont-2016.txtの 2 つのファイルを選択し、それぞれデータセット名をCandidate Master 2016Campaign Contributions 2016に変更した後、Import & Add to Flowを選択します。

なお、Candidate Master 2016候補者マスターデータCampaign Contributions 2016選挙献金データです。

3-2-2
3-2-3
3-2-4

3-3. フローの確認

フローに 2 つのデータセットが追加されていることを確認します。
1 つめのデータセットには、デフォルトで空のレシピとアウトプットが追加されています。

3-3

4. レシピの作成(その1)

本手順では、候補者マスターデータに対するレシピ(処理の定義)の作成方法を解説します。
処理の内容としては、候補者マスターデータから 2016 年の選挙における大統領候補を抽出します。

4-1. レシピの編集

デフォルトで作成された空のレシピを選択し、Edit recipeを選択します。

4-1-1

レシピの編集画面では、データセットのプレビューと処理の内容が確認できます。
大規模なデータセットの場合は、データセットの最初の数行がプレビューとして表示されています。
最初の数行以外を表示したい場合には、initial dataからプレビューの設定を変更できます。

4-1-2

4-2. 年度の抽出

レシピの編集画面では、各列における値の分布をヒストグラムで確認できます。
column2候補者IDなので、各値が一意であることが分かります。
column5年度で、カーソルを当てると行数や割合などが確認できます。
ただし、データセット全体ではなく、プレビューとして表示されているデータの範囲での分布であることに注意してください。

4-2-1

column5にて 2016 年を含んだ範囲のバーを選択すると、Suggestionsが表示されます。
Keep rowsには、選択した範囲でデータを抽出する式が表示されています。
2016 年のデータのみを抽出するため、Editを選択します。

4-2-2

Conditionの式を 2016 年のデータのみを抽出するように修正し、Addを選択します。

4-2-3

レシピに処理が追加されたことを確認します。

4-2-4

4-3. データ型の修正

column6ですが、ヒストグラムの上部に赤色のバーが表示されています。
説明文にはmismatched valuesとの記述があります。

4-3-1

赤色のバーを選択した状態で、Show only affected Rowsをチェックすると、原因となっている行が表示されます。

4-3-2

これは、column6のデータ型がState(州)であるのに対し、US(国)やGU(島嶼地域、例:グアム)などが含まれており、データ型と不一致しているためです。

4-3-3

cloumn6のデータ型をStirngに変更し、データ型との不一致を解消します。

4-3-4

バーが全て緑色になったことを確認します。

4-3-5

4-4. 大統領候補の抽出

column7は候補者が大統領候補(P)なのか、副大統領候補(H)なのかを表します。
P(大統領候補)のバーを選択し、SuggestionsからKeep rowsAddを選択して大統領候補のみを抽出します。

4-4-1

以上で候補者マスターデータから 2016 年の大統領候補を抽出するレシピが完成しました。

4-4-2

5. レシピの作成(その2)

本手順では、選挙献金データに対するレシピ(処理の定義)の作成方法を解説します。
処理の内容としては、選挙献金データから余分な区切り文字を削除した後、加工後の候補者マスターデータと結合し、献金に関するサマリーを生成します。

5-1. レシピの作成

フロー画面にて、2 つ目のデータセットの+を選択し、Add new Recipeを選択します。

5-1

5-2. 区切り文字の削除

レシピの編集画面でReplaceText or patternを選択します。

5-2-1

Columnでは、置換する列の選択ができます。
Multipleでは複数の列を、Allではすべての列を、Rangeでは連続する列の範囲を、AdvancedではMultipleRangeを組み合わせた形で列を指定できます。

5-2-2
5-2-3
5-2-4
5-2-5

Advanced*を指定してすべての列を対象に設定し、Find {start}"|"{end} と入力してAddを選択します。
{start}は正規表現における^に相当し、{end}は正規表現における$に相当します。
置換後の文字を空欄のままとしているため、"|"に完全一致する値を削除する処理が追加されます。

5-2-6

5-3. データセットの結合

New Stepを選択して表示される検索欄にjoinと入力し、Join datasetsを選択します。

5-3-1

Recipes in current flowタブにて、4. レシピの作成(その 1)で作成した候補者マスターデータのレシピを選択し、Acceptを選択します。

5-3-2

Join keysの編集アイコンを選択します。

5-3-3

Currentcolumn2を、Joined-incolumn11を指定し、Save and ContinueNextと選択します。
候補者IDをキーとして 2 つのデータを結合しています。

5-3-4

結合後のデータに全ての列を表示するため、全ての列のチェックボックスをチェックし、ReviewAdd to Recipeと選択します。

5-3-5

レシピに処理が追加され、データが結合されていることを確認します。

5-3-6

5-4. 献金データのサマライズ

New Stepを選択して表示される検索欄にpivotと入力し、Pivotを選択します。

5-4-1

Row labelsに以下の行を指定します。
それぞれ候補者ID候補者名所属政党献金者です。

  • column2
  • column24
  • column8
  • column9

Valuesには以下の式を入力します。
それぞれ合計献金額平均献金額献金回数です。

  • SUM(column16)
  • average(column16)
  • contif(column16 > 0)

Addを選択しデータをサマライズします。

5-4-2

5-5. 列名の編集

New Stepを選択して表示される検索欄にrenameと入力し、Rename columnsを選択します。

5-5-1

OptionManual renameを選択し、以下の通りに各列名を変更しAddを選択します。

変更前変更後
column2Candidate_ID
column24Candidate_Name
column8Party_Affiliation
column9Donor_Name
sum_column16Total_Contribution_Sum
average_column16Average_Contribution_Sum
contifNumber_of_Contributions
5-5-2

5-6. 端数処理

New Stepを選択して表示される検索欄にeditと入力し、Edit with formulaを選択します。

5-6-1

ColumnsMultipleAverage_Contribution_Sumを指定し、FormulaROUND(Average_Contribution_Sum,0)と入力してAddを選択します。

5-6-2

6. ジョブの実行

本手順では、レシピで定義した処理を実際に実行し、加工後のデータをアウトプットする方法を解説します。

6-1. アウトプットの設定

選挙献金データに対するレシピの編集画面右上からRunを選択します。

6-1-1

Publishng ActionsAdd Actionを選択します。
なお、デフォルトで csv ファイルを CloudStorage にアウトプットするアクションが設定されています。

6-1-2

Create a new fileを選択します。

6-1-3

ファイル名を入力してフォーマットにJSONを指定した後Addを選択します。

6-1-4

6-2. ジョブの実行

アクションが追加されたことを確認し、Runを選択します。

6-2

6-3. ジョブの確認

左側のナビゲーションバーからJob historyを選択し、対象のレシピ名を選択して進行状況を表示します。

6-3-1

Output destinationsタブではアウトプット一覧を確認できます。
ジョブの完了後、各アウトプットのView on Cloud Storageを選択し、Cloud Storage に遷移します。

6-3-2

対象のバケットにファイルがアウトプットされていることが確認できました。

6-3-3

以上で、全手順が終了となります。

その他の機能

上記の手順では触れなかった機能について、概要を記載します。

Plan

ジョブの実行や HTTP リクエストの実行など、個別のタスクを一連の処理として定義できます。
定義した Plan はスケジュール実行させることが可能です。
設定したスケジュールはSchedulesにて管理できます。

plan

Library

インポート済みのデータセットなどを確認できます。

library

Connections

データソースとの接続を設定できます。
データソースには BigQuery の他、様々なアプリケーションやデータベース等を選択できます。
接続されたデータソースはデータセットのインポート元として利用できるほか、一部の接続ではアウトプット先としても指定できます。

connections1
connections2

料金

Dataprep には 30 日間の無料期間が存在します。
無料期間の終了後はStarterProfessionalEnterpriseのいずれかのプランで契約が必要です。
各プランの契約形態や料金は以下の通りです。
機能面でもいくつかの違いがありますがここでは割愛します。

プラン名StarterProfessionalEnterprise
契約形態年間もしくは月間年間のみ年間のみ
利用料金(年間)$960/user$4,950/user + $10,000(basefee)要見積
利用料金(月間)$100/user--
最小利用人数1user~3users~7users~

まとめ

本記事では Dataprep のクイックスタートを通して、Dataprep の基本的な使い方とその利便性について確認しました。
また、クイックスタートでは触れなかった機能の概要や料金形態について簡単に解説しました。
GUI ベースで ETL 処理を定義・実行できるため、直感的に操作しやすい便利なサービスだと感じました。

次回予告

引き続き、Data周りのご紹介を予定しています。

ご期待ください!

著者紹介

伊藤忠テクノソリューションズ株式会社 廣瀬 啓丞

伊藤忠テクノソリューションズ株式会社
廣瀬 啓丞

直近 1 年間ほど、パブリッククラウドに関する技術を担当。
最近は AI の活用を模索中。

Pickup