arrow_back

Cloud Data Fusion で Wrangler を使用してデータ変換を作成し、データを準備する

参加 ログイン
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Cloud Data Fusion で Wrangler を使用してデータ変換を作成し、データを準備する

Lab 1時間 30分 universal_currency_alt クレジット: 5 show_chart 入門
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

概要

データの統合ではデータが重要です。データを処理する際、元データがどのようなものであるかを確認できると、その元データを変換の出発点として使用するうえで役立ちます。Wrangler を使用すると、データ統合ワークフローに対するデータファーストのアプローチを採用できます。

ETL(抽出、変換、読み込み)アプリケーションでよく使用される一般的なデータソースは、CSV 形式のテキスト ファイルに保存されたデータです。これは、多くのデータベース システムにおいてこの形式でデータのエクスポートやインポートが行われるためです。このラボでは CSV ファイルを使用しますが、同じ手法をデータベース ソースだけでなく、Cloud Data Fusion で使用できる他の任意のデータソースに対しても適用できます。

目標

このラボでは、次のタスクの実施方法について学びます。

  • CSV ファイルからデータを取り込むパイプラインを作成する
  • Wrangler を使用して、マウス操作およびコマンドライン インターフェース(CLI)で変換を適用する

このラボの大部分では、Wrangler プラグインで使用される Wrangler 変換ステップを操作します。これにより変換が 1 か所にカプセル化され、変換タスクをグループ化して管理しやすいブロックに分けることができます。このデータファーストのアプローチでは、変換を簡単に可視化できます。

設定

各ラボでは、新しい Google Cloud プロジェクトとリソースセットを一定時間無料で利用できます。

  1. シークレット ウィンドウを使用して Google Cloud Skills Boost にログインします。

  2. ラボのアクセス時間(例: 02:00:00)に注意し、時間内に完了できるようにしてください。
    一時停止機能はありません。必要な場合はやり直せますが、最初からになります。

  3. 準備ができたら、[ラボを開始] をクリックします。

    注: [ラボを開始] をクリックしてから、ラボが必要なリソースをプロビジョニングして Data Fusion インスタンスを作成するまで 15~20 分ほどかかります。 その間、ラボの目標を理解するために以下のステップをご確認ください。

    左側のパネルにラボの認証情報(ユーザー名パスワード)が表示されたら、インスタンスの作成が完了したため、コンソールへのログインに進めるようになります。
  4. ラボの認証情報(ユーザー名パスワード)をメモしておきます。この情報は、Google Cloud コンソールにログインする際に使用します。

  5. [Google Console を開く] をクリックします。

  6. [別のアカウントを使用] をクリックし、このラボの認証情報をコピーしてプロンプトに貼り付けます。
    他の認証情報を使用すると、エラーが発生したり、料金の請求が発生したりします。

  7. 利用規約に同意し、再設定用のリソースページをスキップします。

注: ラボを完了した場合と最初からやり直す場合以外は、[ラボを終了] をクリックしないでください。クリックすると、作業内容とプロジェクトが削除されます。

Google Cloud コンソールにログインする

  1. このラボ セッションで使用しているブラウザタブまたはウィンドウで、[接続の詳細] パネルからユーザー名をコピーし、[Google Console を開く] ボタンをクリックします。
注: アカウントの選択を求められたら、[別のアカウントを使用] をクリックします。
  1. ユーザー名を貼り付け、プロンプトが表示されたらパスワードを入力します。
  2. [次へ] をクリックします。
  3. 利用規約に同意します。

これは、このラボの間だけ有効な一時的なアカウントです。以下の点に注意してください。

  • 復元オプションを追加しないでください。
  • 無料トライアルに登録しないでください。
  1. コンソールが開いたら、左上のナビゲーション メニューナビゲーション メニュー アイコン)をクリックしてサービスのリストを確認します。

ナビゲーション メニュー

Cloud Shell をアクティブにする

Cloud Shell は、開発ツールが組み込まれた仮想マシンです。5 GB の永続ホーム ディレクトリを提供し、Google Cloud 上で実行されます。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。gcloud は Google Cloud のコマンドライン ツールで、Cloud Shell にプリインストールされており、Tab キーによる入力補完がサポートされています。

  1. Google Cloud Console のナビゲーション パネルで、「Cloud Shell をアクティブにする」アイコン(Cloud Shell アイコン)をクリックします。

  2. [次へ] をクリックします。
    環境がプロビジョニングされ、接続されるまでしばらく待ちます。接続の際に認証も行われ、プロジェクトは現在のプロジェクト ID に設定されます。次に例を示します。

Cloud Shell ターミナル

サンプル コマンド

  • 有効なアカウント名前を一覧表示する:

gcloud auth list

(出力)

Credentialed accounts: - <myaccount>@<mydomain>.com (active)

(出力例)

Credentialed accounts: - google1623327_student@qwiklabs.net
  • プロジェクト ID を一覧表示する:

gcloud config list project

(出力)

[core] project = <プロジェクト ID>

(出力例)

[core] project = qwiklabs-gcp-44776a13dea667a6

プロジェクトの権限を確認する

Google Cloud で作業を開始する前に、Identity and Access Management(IAM)内で適切な権限がプロジェクトに付与されていることを確認する必要があります。

  1. Google Cloud Console のナビゲーション メニューナビゲーション メニュー アイコン)で、[IAM と管理] > [IAM] をクリックします。

  2. デフォルトのコンピューティング サービス アカウント {project-number}-compute@developer.gserviceaccount.com が存在し、編集者のロールが割り当てられていることを確認します。アカウントの接頭辞はプロジェクト番号で、ナビゲーション メニュー > [ホーム] から確認できます。

デフォルトのコンピューティング サービス アカウント

アカウントが IAM に存在しない場合やアカウントに編集者のロールがない場合は、以下の手順に沿って必要なロールを割り当てます。

  • Google Cloud Console のナビゲーション メニューで、[ホーム] をクリックします。

  • プロジェクト番号(例: 729328892908)をコピーします。

  • ナビゲーション メニューで、[IAM と管理] > [IAM] をクリックします。

  • IAM ページの上部にある [追加] をクリックします。

  • 新しいプリンシパルの場合は、次のように入力します。

{project-number}-compute@developer.gserviceaccount.com

{project-number} はプロジェクト番号に置き換えてください。

  • [ロール] で、[Project](または [基本])> [編集者] を選択します。[保存] をクリックします。

タスク 1. Cloud Data Fusion インスタンスに必要な権限を追加する

  1. Google Cloud コンソールのナビゲーション メニューから、[Data Fusion] > [インスタンス] を選択します。
: インスタンスの作成には 10 分ほどかかります。完了するまでお待ちください。

次に、以下の手順に沿って、インスタンスに関連付けられているサービス アカウントに権限を付与します。

  1. Google Cloud コンソールで、[IAM と管理] > [IAM] に移動します。

  2. Compute Engine のデフォルトのサービス アカウント {プロジェクト番号}-compute@developer.gserviceaccount.com が表示されていることを確認し、サービス アカウントをクリップボードにコピーします。

  3. [IAM 権限] ページで、[+アクセス権を付与] をクリックします。

  4. [新しいプリンシパル] フィールドに、サービス アカウントを貼り付けます。

  5. [ロールを選択] フィールドをクリックし、「Cloud Data Fusion API サービス エージェント」と入力します。最初の数文字を入力すると [Cloud Data Fusion API サービス エージェント] が表示されるので、それを選択します。

  6. [保存] をクリックします。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 Cloud Data Fusion API サービス エージェントのロールをサービス アカウントに追加する

サービス アカウントにユーザー権限を付与する

  1. Cloud Console で、[IAM と管理] > [IAM] に移動します。

  2. [Google 提供のロール付与を含みます] の横にあるチェックボックスを選択します

画像

  1. リストを下にスクロールして、Google が管理する service-{project-number}@gcp-sa-datafusion.iam.gserviceaccount.com という表示形式の Cloud Data Fusion サービス アカウントを探し、クリップボードにコピーします。

画像

  1. 次に、[IAM と管理] > [サービス アカウント] に移動します。

  2. {project-number}-compute@developer.gserviceaccount.com という表示形式のデフォルトの Compute Engine アカウントをクリックした後、上部のナビゲーション メニューの [権限] タブを選択します

  3. [アクセスを許可] ボタンをクリックします

  4. [新しいプリンシパル] フィールドに、前の手順でコピーしたサービスアカウントを貼り付けます。

  5. [役割] プルダウン メニューで、[サービス アカウント ユーザー] を選択します

  6. [保存] をクリックします。

タスク 2. データを読み込む

次にプロジェクト内で、ラングリング用のサンプルデータを読み込むための Cloud Storage バケットを作成します。Cloud Data Fusion はこの Storage バケットからデータを読み取ることになります。

  1. Cloud Shell で、次のコマンドを実行して新しいバケットを作成します。
export BUCKET=$GOOGLE_CLOUD_PROJECT gcloud storage buckets create gs://$BUCKET

作成されるバケットの名前は、現在のプロジェクト ID です。

  1. 次のコマンドを実行して、データファイル(CSV ファイル)をバケットの中にコピーします。
gcloud storage cp gs://cloud-training/OCBL163/titanic.csv gs://$BUCKET

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 データを読み込む

これで、この後の作業を進める準備が整いました。

タスク 3. Cloud Data Fusion UI を操作する

Cloud Data Fusion UI では、[Pipeline Studio] や [Wrangler] などのさまざまなページで Cloud Data Fusion の機能を使用できます。

Cloud Data Fusion UI を操作するには、次の手順に従います。

  1. コンソールのナビゲーション メニューで再び [Data Fusion] に移動します。
  2. Data Fusion インスタンスの横にある [インスタンスを表示] リンクをクリックします。
  3. ラボの認証情報を選択してログインします。

サービスのガイドに進むダイアログが表示された場合は [No, Thanks] をクリックします。これで Cloud Data Fusion UI が表示されるようになります。

Cloud Data Fusion ウェブ UI には固有のナビゲーション パネル(左側)があり、そこから必要なページに移動できます。

  1. Cloud Data Fusion UI で、左上のナビゲーション メニューをクリックしてナビゲーション パネルを表示します。
  2. [Wrangler] を選択します。

タスク 4. Wrangler を操作する

Wrangler はインタラクティブなビジュアル ツールです。これを使用すると、データセット全体に大規模な並列処理ジョブをディスパッチする前に、小さなデータ サブセットで変換の効果を確認できます。

  1. Wrangler が読み込まれると、左側のパネルに、事前構成されたデータ接続(Cloud Storage 接続など)が表示されます。

  2. [GCS] の [Cloud Storage Default] を選択します。

  3. プロジェクト ID に対応するバケットをクリックします。

  4. titanic.csv をクリックします。

  5. 解析オプションで、プルダウンからテキスト形式を選択します。

parseoption.png

  1. [Confirm] をクリックすると、データが Wrangler に読み込まれます。

ParseCSV4.png

  1. 最初の操作として、CSV の元データを解析し、行と列に分かれた表形式に変換します。これを行うには、最初の列見出しにあるプルダウン アイコンを選択し、[Parse] メニュー項目のサブメニューから [CSV] を選択します。

展開したプルダウン メニュー

  1. 元データでは最初の行が列見出しになっているので、この行をヘッダーとして設定する必要があります。そこで、表示された [Parse as CSV] ダイアログ ボックスで [Set first row as header] オプションを選択し、[Apply] をクリックします。

  2. この段階で元データが解析され、この操作によって生成された列が [body] 列の右側に表示されます。

  3. [body] 列は不要になったので、[body] 列の見出しの横にあるプルダウン アイコンを選択し、[Delete column] メニュー項目を選択して列を削除します。

注: 変換を適用するには、CLI を使用することもできます。CLI は画面下部にある黒いバーです(その中の緑色の $ はプロンプトです)。コマンドの入力を開始すると自動入力機能が起動して、一致するオプションが表示されます。たとえば、[body] 列を削除する別の方法としてディレクティブ drop: body を使用することもできます。

drop ディレクティブ

  1. Wrangler UI の右端にある [Transformation steps] タブをクリックすると、これまでに適用した 2 つの変換が表示されます。
注: 画面右側の [Transformation steps] タブに表示されるディレクティブは、メニュー項目を選択した場合も、また、CLI を使用した場合にも作成されます。ディレクティブは個別の変換であり、複数が集まって 1 つの「レシピ」と呼ばれます。

このラボで後ほど、CLI を使用して変換ステップをさらに追加します。

変換ステップをデータセットに適用すると、それがデータのサンプルに反映されて視覚的な手がかりが生じます。これを [Insights] ブラウザで詳しく調べることができます。

  1. 上部中央の領域にある [Insights] タブをクリックして、さまざまな列でのデータの分布状態を確認します。

[Insights] タブページ

  1. インターフェースを使ってみて、データの新しい分析方法を見つけます。[Age] フィールドをドラッグして [x] エンコードにドロップし、データの見え方がどのように変化するかを確認します。

[Insights] タブページ

  1. [Create Pipeline] ボタンをクリックすると、パイプライン開発モードに切り替わり、Wrangler プラグイン内で作成したディレクティブを確認できるようになります。

createpipline15.png

  1. 次に表示されるダイアログで、[Batch pipeline] を選択して続行します。

batch16.png

  1. Pipeline Studio が開いたら、[Wrangler] ノードにカーソルを合わせて [Properties] をクリックします。

  2. [Directives] で、前に追加したディレクティブのレシピを確認します。次のセクションでは、CLI を使用して変換ステップをさらに追加します。

 [Directives] セクション

タスク 5. 変換ステップを操作する

このセクションでは引き続き Wrangler UI で CSV データセットを探索し、CLI を使用して変換を適用します。

  1. Wrangler ノードの [Properties] ボックスで、[Directives] セクションにある [Wrangle] ボタンをクリックすると、Wrangler UI が再表示されます。

  2. Wrangler UI の右端にある [Transformation steps] をクリックしてディレクティブを表示します。現時点で 2 つの変換ステップがあることを確認します。

これから CLI を使用して変換ステップをさらに追加し、変換によってデータがどのように変更されるかを確認します。CLI は画面下部にある黒いバーです(その中の緑色の $ はプロンプトです)。

  1. ディレクティブをコピーして、CLI の $ プロンプトの位置に貼り付けます。画面右側の [Transformation Steps] の表示内容が更新されることがわかります。
fill-null-or-empty :Cabin 'none' send-to-error empty(Age) parse-as-csv :Name ',' false drop Name fill-null-or-empty :Name_2 'none' rename Name_1 Last_Name rename Name_2 First_Name set-type :PassengerId integer parse-as-csv :First_Name '.' false drop First_Name drop First_Name_3 rename First_Name_1 Salutation fill-null-or-empty :First_Name_2 'none' rename First_Name_2 First_Name send-to-error !dq:isNumber(Age) || !dq:isInteger(Age) || (Age == 0 || Age > 125) set-type :Age integer set-type :Fare double set-column Today_Fare (Fare * 23.4058)+1 generate-uuid id mask-shuffle First_Name

上記のディレクティブでデータがどのように処理されるかを以下に説明します。すでにディレクティブを CLI に入力しているので、再度入力しないでください

a. fill-null-or-empty :Cabin 'none' は、[Cabin] 列を修正して 100% 入力された状態にします。

b. send-to-error empty(Age) は、[Age] 列を修正して空のセルがなくなるようにします。

c. parse-as-csv :Name ',' false は、[Name] 列を 2 つの個別の列に分割し、名と姓がそれぞれ別の列に含まれるようにします。

d. rename Name_1 Last_Namerename Name_2 First_Name は、新しく作成された [Name_1] 列と [Name_2] 列の名前をそれぞれ [Last_Name]、[First_Name] に変更します。

e. drop Name は、不要になった [Name] 列を削除します。

f. set-type :PassengerId integer は、[PassengerId] 列の型を整数に変換します。

g. ディレクティブは [First_Name] 列から敬称を抽出し、重複する列を削除し、新しく作成された列の名前を変更します。

parse-as-csv :First_Name '.' false drop First_Name drop First_Name_3 rename First_Name_1 Salutation fill-null-or-empty :First_Name_2 'none' rename First_Name_2 First_Name

h. send-to-error !dq:isNumber(Age) || !dq:isInteger(Age) || (Age == 0 || Age > 125) ディレクティブは [Age] 列のデータ品質チェックを行い、set-type :Age integer はこの列を整数列として設定します。

i. set-type :Fare double は [Fare] 列の型を倍精度に変換し、列の値を使った算術計算を可能にします。

j. set-column Today_Fare (Fare * 23.4058)+1 は、[Fare] 列の値に 1912 年以降のドルのインフレ率を乗算して、調整されたドル値を取得します。

k. generate-uuid id は、各レコードを一意に識別する ID 列を作成します。

l. mask-shuffle First_Name は、[Last_Name] 列の値をマスクして個人(PII)を匿名化します。

  1. [Transformation steps] の右上にある [More] リンクをクリックし、[View Schema] をクリックして、変換によって生成されたスキーマを確認します。その後、ダウンロード アイコンをクリックしてパソコンにダウンロードします。

    変換によって生成されたスキーマリスト

  2. [X] をクリックして [Schema] ページを閉じます。

  3. [Transformation steps] の下にあるダウンロード アイコンをクリックしてディレクティブのレシピをパソコンにダウンロードすると、変換ステップのコピーを保持して将来使用できます。

    Transformation steps ページのハイライト表示されたダウンロード アイコン

  4. 右上にある [Apply] ボタンをクリックします。これにより、新しく入力したすべての変換ステップが Wrangler ノードの構成に確実に追加されます。その後、元の [Wrangler] ノードのプロパティ ボックスにリダイレクトされます。

  5. [X] をクリックして閉じると、Pipeline Studio が再び表示されます。

タスク 6. BigQuery にデータを取り込む

BigQuery にデータを取り込むためのデータセットを作成します。

  1. 新しいタブで Google Cloud コンソールの BigQuery を開くか、[Google Cloud コンソール] タブを右クリックして [複製] を選択し、ナビゲーション メニューを使用して [BigQuery] を選択します。プロンプトが表示されたら、[完了] をクリックします。

  2. [エクスプローラ] ペインで、プロジェクト ID(qwiklabs で始まる ID)の横にある [アクションを表示] アイコンをクリックし、[データセットを作成] を選択します。

    [アクションを表示] アイコンと [データセットを作成] オプションがハイライト表示された [エクスプローラ] ペイン

a. データセット ID: demo_cdf

b. [データセットを作成] をクリックします。ラボで後から使用できるように、データセット名をメモしておきます。

  1. Cloud Data Fusion UI のタブに戻ります。

a. BigQuery シンクをパイプラインに追加するには、左側ペインの [Sink] セクションに移動し、[BigQuery] アイコンをクリックしてそれをキャンバス上に配置します。

b. BigQuery シンクがキャンバスに配置されたら、Wrangler ノードと BigQuery ノードを接続します。そうするには、以下の図に示すように Wrangler ノードの矢印を BigQuery ノードまでドラッグして接続します。

キャンバス上の GCSFile、Wrangler ノード、BigQuery ノード

c. BigQuery ノードにカーソルを合わせて [Properties] をクリックし、次の構成設定値を入力します。

フィールド
Reference Name DemoSink
Dataset Project ID プロジェクト ID
Dataset demo_cdf(前の手順で作成したデータセット)
Table 適切な名前を入力します(titanic など)

このテーブルが自動的に作成されます。

d. [Validate] ボタンをクリックして、すべてが正しく設定されているかどうかを確認します。

e. [X] をクリックして閉じると、Pipeline Studio が再び表示されます。

  1. パイプラインを実行する準備が整いました。

a. パイプラインに名前を付けます(例: DemoBQ)。

b. [Save] をクリックします。続いて、右上の [Deploy] をクリックしてパイプラインをデプロイします。

c. [Run] をクリックしてパイプラインの実行を開始します。[Summary] アイコンをクリックして、統計情報を調べることもできます。

実行が完了すると、ステータスが [Succeeded] に変わります。BigQuery コンソールに戻り、結果をクエリします。

ステータス: Succeeded

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 BigQuery にデータを取り込む

お疲れさまでした

このラボでは、Wrangler UI について解説しました。メニューと CLI の両方を使って変換ステップ(ディレクティブ)を追加する方法を学習しました。Wrangler では、データに対して多数の強力な変換を繰り返し適用できます。Wrangler UI を使用し、変換がデータのスキーマに与える影響を確かめた後で、パイプラインをデプロイして実行できます。

ラボを終了する

ラボでの学習が完了したら、[ラボを終了] をクリックします。ラボで使用したリソースが Qwiklabs から削除され、アカウントの情報も消去されます。

ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックします。

星の数は、それぞれ次の評価を表します。

  • 星 1 つ = 非常に不満
  • 星 2 つ = 不満
  • 星 3 つ = どちらともいえない
  • 星 4 つ = 満足
  • 星 5 つ = 非常に満足

フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。

フィードバック、ご提案、修正が必要な箇所については、[サポート] タブからお知らせください。

Copyright 2020 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。