皆さんはDBにデータを入力する前の前処理やデータクレンジングの経験はありますでしょうか?これらを行うには通常JavaやSQLなどのプログラミング言語を書いたり、高額なETLツール(Extract Transform Load)を使うことが多く、これらを使ったことが無い人にとっては敷居が高く感じられるかもしれません。
しかし今回ご紹介するGoogle Cloud Dataprep(以下、Dataprep)を使うと、プログラミング知識が無くてもほとんどクリック操作のみでデータ加工を行ったり、データの品質チェックができます。もちろんデータ加工の経験が豊富な人にとってもDataprepは複雑な加工が簡単にできるため大きなメリットがあります。
本記事は前編と後編で分かれています。前編ではDataprepがどのようなサービスかを紹介します。次にデモとしてサンプルデータをDataprepにインポートしてコンソールに表示した後、コンソールの見方を解説します。後編では、インポートしたデータを加工して保存し、Datastudioでグラフ化するまでの流れを一通り解説します。
※Google Cloud Dataprepは2018年06月現在beta版となっているため、仕様が変更される可能性があります。
目次
DataprepとはマネージドETL
Google Cloud Dataprepとはデータの前処理やクレンジングを行うための、Googleのマネージドサービスです。インフラ周りはGoogleが全て管理するためユーザーはインフラの管理をする必要が無く、データ加工の処理定義のみに専念することができます。
Google Cloud Platformのサービスの一つであるため他のGCPサービスと簡単に連携ができます。Google Cloud StorageやBigQuery(※)に保存されているデータを加工したり、加工したデータを保存することができます。GCP内の権限管理ツールであるCloud Identity & Access Management(IAM)による権限管理も可能です。
※ Google Cloud StorageやBigQueryを知らない方へ
Google Cloud Storage … Google Cloud Platformのサービスの1つで、オブジェクトストレージ機能を提供するSaaSのサービスです。
BigQuery… Google Cloud Platformのサービスの1つで、ビッグデータの保存と分析基盤を提供するSaaSのサービスです。
Dataprepと他のデータ加工サービスの違い
一般的なデータ加工ツールとDataprepの違いは何でしょうか?主な違いは3つあります。
インポートしたデータを自動で分析してくれる
Dataprepでデータをインポートすると自動で型を検出をして欠損値(データが入っていないセル)やエラー値を判定してくれます。さらに、カラム(列)ごとにデータの分布がヒストグラムで表示されるので、データのおおまかな内容を把握することができます。これはデータの品質チェックに非常に役立ちます。
コードを書く必要が無く、自動で加工内容を提案してくれる
通常データ加工ロジックを作る際、必要になるのがコーディングです。JavaやSQLなど、プラットフォームによって言語は様々ですが、データの加工方法を定義したコードを書く必要があります。Dataprepの場合、GUIコンソールから直感的なクリック操作をするだけでDataprepが最適な加工内容を提案してくれます。もちろん自分で好きなように加工することもできます。
変更前にプレビューを表示してくれる
通常加工後のデータがどう変換されるかは加工前にはわからず、実際にジョブを動かしてみないとわかりません。
Dataprepではデータを加工する前に加工後のデータがどのようになるかをプレビュー表示してくれますので、安心してデータ加工を行うことができます。
Dataprepの足りないところ
ここまでDataprepのメリットを紹介してきましたが、Dataprepが万能というわけではありません。2018年6月現在Dataprepができないこととしては、
- ストリーミングデータの加工
Dataprepでストリーミング(リアルタイム)データの加工を行うことはできません。Dataprepは既にファイルやテーブルとして存在するデータのみを加工することができ、ログデータなど常に増え続けるデータに対して加工を行うことはできません。 - プログラムからの実行
Dataprepジョブの実行はブラウザのDataprepコンソールからのみ可能です。DataprepはAPIやクライアントライブラリを提供していないため、外部からプログラムを使用して定期的にジョブを動かすといったことはできません。
等があります。上のようなユースケースを考えている場合、Cloud Dataflowが選択肢の一つになります。ちなみにDataprepではジョブの実行にDataflowが使われます。
Dataflowについてはこちらの記事もご参照ください。
Dataprepの価格
Dataprepは(Dataprepユニットの数)×(ジョブ実行時間)によって課金されます。Dataprepユニットは1つのGoogle Compute Engine インスタンスです。Dataprepユニットの数はジョブの負荷によって自動スケールします。
Dataprepユニットの使用量 | $0.096 (1ユニットごと・1時間単位) |
Dataprepでデータを参照 | 無料 |
※ BigQueryやGoogle Cloud Storageのデータを使う場合、それらのサービスの利用料金が別途必要になります。
Dataprepを実際に使ってみる
では、Dataprepで実際にどうデータを扱うかを簡単に解説したいと思います。
今回はBigQueryのパブリックデータ(1969~2008年の米国の出生データ)をインポートしてデータをコンソールに表示してみたいと思います。
ブラウザとデータだけがあれば簡単に試すことができるので、ご自分でデータを用意していただくことも可能です。データをブラウザ上で表示するだけであれば料金は掛かりません。
フローを作成する
Dataprepでデータを表示するにはまずフローを作成し、その中でデータセットをインポートし、データ加工の順序と方法を記したレシピを作成します。最初にフローを作成します。
Create Flowボタンをクリック
Flow Nameを入力しCreateボタンをクリック
フローが作成されます。
データセットのインポート
Dataprepはデータのインポート先として3つのソースに対応しています。
対応しているソース
- Google Cloud Storage
バケットに保存しているファイルを使用できます。ファイル形式はExcel, CSV, JSON, Avro等に対応しています。 - BigQuery
プロジェクト上にあるテーブル、またはBigQueryのパブリックデータ等を使用することができます。 - ローカルファイル
ローカルPCからDataprepに直接ファイルをアップロードできます。対応ファイル形式はGoogle Cloud Storageと一緒です。
今回はBigQueryのパブリックデータを使用します。
Add Datasetsボタンをクリック
ポップアップ画面左下のImport Datasetsをクリック
BigQueryタブをクリック
画面内、パンくずリストのBigQueryボタンをクリック
bigquery-public-dataと入力し、Goボタンをクリック
samplesで検索し、表示された同名のデータセットを選択
natalityの左にある+ボタンをクリックすると右にテーブルのプレビューが現れるので、Import & Add to Flowボタンをクリック
データセットが追加されました。
レシピの作成
natalityアイコンの上にマウスオーバーすると・・・ボタンが現れるので、それをクリックすると現れるメニューからAdd new Recipeをクリック
レシピが追加されました。
レシピの編集画面を開く
編集画面の見方
編集画面ではインポートしたデータを見たり編集することができます。
編集画面の見方は下図の通りです。
それぞれの番号に対応した部分について解説します。
① データ型
Dataprepが検出した型がアイコンで表示されています。マウスオーバーすると型名が確認できます。他の型に変えるにはアイコンをクリックして表示されるポップアップメニューから変更したい型を選択します。図のアイコンはInteger型を表しています。
② メニューボタン
カラムに対して行える操作をポップアップメニューに表示します。
③ データ分布図
カラムごとのデータ分布をグラフ表示します。範囲を選択すると、カラムにその範囲内のデータが含まれている行だけを残し、ほかは全て削除する等の操作をDataprepが提案します。
④ データ品質バー
正常値と欠損値(null値)とエラー値の割合を表示しています。黒いバーは欠損値、赤いバーはエラー値を表します。黒いバーをクリックすると、カラムに欠損値が含まれている行を全て削除するなどの操作をDataprepが提案します。
ここまでで、BigQueryのパブリックデータにある米国の出生データをDataprepにインポートしてコンソール上に表示することができました。これでデータを自分の好きなように加工するための準備ができました。
まとめ
いかがでしたでしょうか。今回はデータをインポートしてコンソールに表示するまでを解説しました。後編ではDataprepで使える様々な加工手法をご紹介しながら、データの加工→保存→可視化までの流れを解説したいと思います。Dataprepによるデータ加工は簡単で非常に効率が良いので是非後編もご覧ください。
最後に、弊社ではGCPのコンサルティングから導入・運用支援サービスを提供しておりますので、ご興味のある方はこちらからお問い合わせください。