Building Codeless Pipelines on Cloud Data Fusion
チェックポイント
Add Cloud Data Fusion API Service Agent role to service account
/ 25
Load the data
/ 25
Ingestion into BigQuery
/ 50
Cloud Data Fusion で Wrangler を使用してデータ変換を作成し、データを準備する
概要
データの統合ではデータが重要です。データを処理する際、元データがどのようなものであるかを確認できると、その元データを変換の出発点として使用するうえで役立ちます。Wrangler を使用すると、データ統合ワークフローに対するデータファーストのアプローチを採用できます。
ETL(抽出、変換、読み込み)アプリケーションでよく使用される一般的なデータソースは、CSV 形式のテキスト ファイルに保存されたデータです。これは、多くのデータベース システムにおいてこの形式でデータのエクスポートやインポートが行われるためです。このラボでは CSV ファイルを使用しますが、同じ手法をデータベース ソースだけでなく、Cloud Data Fusion で使用できる他の任意のデータソースに対しても適用できます。
目標
このラボでは、次のタスクの実施方法について学びます。
- CSV ファイルからデータを取り込むパイプラインを作成する
- Wrangler を使用して、マウス操作およびコマンドライン インターフェース(CLI)で変換を適用する
このラボの大部分では、Wrangler プラグインで使用される Wrangler 変換ステップを操作します。これにより変換が 1 か所にカプセル化され、変換タスクをグループ化して管理しやすいブロックに分けることができます。このデータファーストのアプローチでは、変換を簡単に可視化できます。
設定
各ラボでは、新しい Google Cloud プロジェクトとリソースセットを一定時間無料で利用できます。
-
シークレット ウィンドウを使用して Google Cloud Skills Boost にログインします。
-
ラボのアクセス時間(例: 02:00:00)に注意し、時間内に完了できるようにしてください。
一時停止機能はありません。必要な場合はやり直せますが、最初からになります。 -
準備ができたら、[ラボを開始] をクリックします。
注: [ラボを開始] をクリックしてから、ラボが必要なリソースをプロビジョニングして Data Fusion インスタンスを作成するまで 15~20 分ほどかかります。 その間、ラボの目標を理解するために以下のステップをご確認ください。 左側のパネルにラボの認証情報(ユーザー名とパスワード)が表示されたら、インスタンスの作成が完了したため、コンソールへのログインに進めるようになります。 -
ラボの認証情報(ユーザー名とパスワード)をメモしておきます。この情報は、Google Cloud コンソールにログインする際に使用します。
-
[Google Console を開く] をクリックします。
-
[別のアカウントを使用] をクリックし、このラボの認証情報をコピーしてプロンプトに貼り付けます。
他の認証情報を使用すると、エラーが発生したり、料金の請求が発生したりします。 -
利用規約に同意し、再設定用のリソースページをスキップします。
Google Cloud コンソールにログインする
- このラボ セッションで使用しているブラウザタブまたはウィンドウで、[接続の詳細] パネルからユーザー名をコピーし、[Google Console を開く] ボタンをクリックします。
- ユーザー名を貼り付け、プロンプトが表示されたらパスワードを入力します。
- [次へ] をクリックします。
- 利用規約に同意します。
これは、このラボの間だけ有効な一時的なアカウントです。以下の点に注意してください。
- 復元オプションを追加しないでください。
- 無料トライアルに登録しないでください。
- コンソールが開いたら、左上のナビゲーション メニュー()をクリックしてサービスのリストを確認します。
Cloud Shell をアクティブにする
Cloud Shell は、開発ツールが組み込まれた仮想マシンです。5 GB の永続ホーム ディレクトリを提供し、Google Cloud 上で実行されます。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。gcloud
は Google Cloud のコマンドライン ツールで、Cloud Shell にプリインストールされており、Tab キーによる入力補完がサポートされています。
-
Google Cloud Console のナビゲーション パネルで、「Cloud Shell をアクティブにする」アイコン()をクリックします。
-
[次へ] をクリックします。
環境がプロビジョニングされ、接続されるまでしばらく待ちます。接続の際に認証も行われ、プロジェクトは現在のプロジェクト ID に設定されます。次に例を示します。
サンプル コマンド
-
有効なアカウント名前を一覧表示する:
(出力)
(出力例)
-
プロジェクト ID を一覧表示する:
(出力)
(出力例)
プロジェクトの権限を確認する
Google Cloud で作業を開始する前に、Identity and Access Management(IAM)内で適切な権限がプロジェクトに付与されていることを確認する必要があります。
-
Google Cloud Console のナビゲーション メニュー()で、[IAM と管理] > [IAM] をクリックします。
-
デフォルトのコンピューティング サービス アカウント
{project-number}-compute@developer.gserviceaccount.com
が存在し、編集者
のロールが割り当てられていることを確認します。アカウントの接頭辞はプロジェクト番号で、ナビゲーション メニュー > [ホーム] から確認できます。
アカウントが IAM に存在しない場合やアカウントに編集者
のロールがない場合は、以下の手順に沿って必要なロールを割り当てます。
-
Google Cloud Console のナビゲーション メニューで、[ホーム] をクリックします。
-
プロジェクト番号(例:
729328892908
)をコピーします。 -
ナビゲーション メニューで、[IAM と管理] > [IAM] をクリックします。
-
IAM ページの上部にある [追加] をクリックします。
-
新しいプリンシパルの場合は、次のように入力します。
{project-number}
はプロジェクト番号に置き換えてください。
- [ロール] で、[Project](または [基本])> [編集者] を選択します。[保存] をクリックします。
タスク 1. Cloud Data Fusion インスタンスに必要な権限を追加する
- Google Cloud コンソールのナビゲーション メニューから、[Data Fusion] > [インスタンス] を選択します。
次に、以下の手順に沿って、インスタンスに関連付けられているサービス アカウントに権限を付与します。
-
Google Cloud コンソールで、[IAM と管理] > [IAM] に移動します。
-
Compute Engine のデフォルトのサービス アカウント
{プロジェクト番号}-compute@developer.gserviceaccount.com
が表示されていることを確認し、サービス アカウントをクリップボードにコピーします。 -
[IAM 権限] ページで、[+アクセス権を付与] をクリックします。
-
[新しいプリンシパル] フィールドに、サービス アカウントを貼り付けます。
-
[ロールを選択] フィールドをクリックし、「Cloud Data Fusion API サービス エージェント」と入力します。最初の数文字を入力すると [Cloud Data Fusion API サービス エージェント] が表示されるので、それを選択します。
-
[保存] をクリックします。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
サービス アカウントにユーザー権限を付与する
-
Cloud Console で、[IAM と管理] > [IAM] に移動します。
-
[Google 提供のロール付与を含みます] の横にあるチェックボックスを選択します
- リストを下にスクロールして、Google が管理する
service-{project-number}@gcp-sa-datafusion.iam.gserviceaccount.com
という表示形式の Cloud Data Fusion サービス アカウントを探し、クリップボードにコピーします。
-
次に、[IAM と管理] > [サービス アカウント] に移動します。
-
{project-number}-compute@developer.gserviceaccount.com
という表示形式のデフォルトの Compute Engine アカウントをクリックした後、上部のナビゲーション メニューの [権限] タブを選択します -
[アクセスを許可] ボタンをクリックします
-
[新しいプリンシパル] フィールドに、前の手順でコピーしたサービスアカウントを貼り付けます。
-
[役割] プルダウン メニューで、[サービス アカウント ユーザー] を選択します
-
[保存] をクリックします。
タスク 2. データを読み込む
次にプロジェクト内で、ラングリング用のサンプルデータを読み込むための Cloud Storage バケットを作成します。Cloud Data Fusion はこの Storage バケットからデータを読み取ることになります。
- Cloud Shell で、次のコマンドを実行して新しいバケットを作成します。
作成されるバケットの名前は、現在のプロジェクト ID です。
- 次のコマンドを実行して、データファイル(CSV ファイル)をバケットの中にコピーします。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
これで、この後の作業を進める準備が整いました。
タスク 3. Cloud Data Fusion UI を操作する
Cloud Data Fusion UI では、[Pipeline Studio] や [Wrangler] などのさまざまなページで Cloud Data Fusion の機能を使用できます。
Cloud Data Fusion UI を操作するには、次の手順に従います。
- コンソールのナビゲーション メニューで再び [Data Fusion] に移動します。
- Data Fusion インスタンスの横にある [インスタンスを表示] リンクをクリックします。
- ラボの認証情報を選択してログインします。
サービスのガイドに進むダイアログが表示された場合は [No, Thanks] をクリックします。これで Cloud Data Fusion UI が表示されるようになります。
Cloud Data Fusion ウェブ UI には固有のナビゲーション パネル(左側)があり、そこから必要なページに移動できます。
- Cloud Data Fusion UI で、左上のナビゲーション メニューをクリックしてナビゲーション パネルを表示します。
- [Wrangler] を選択します。
タスク 4. Wrangler を操作する
Wrangler はインタラクティブなビジュアル ツールです。これを使用すると、データセット全体に大規模な並列処理ジョブをディスパッチする前に、小さなデータ サブセットで変換の効果を確認できます。
-
Wrangler が読み込まれると、左側のパネルに、事前構成されたデータ接続(Cloud Storage 接続など)が表示されます。
-
[GCS] の [Cloud Storage Default] を選択します。
-
プロジェクト ID に対応するバケットをクリックします。
-
titanic.csv をクリックします。
-
解析オプションで、プルダウンからテキスト形式を選択します。
- [Confirm] をクリックすると、データが Wrangler に読み込まれます。
- 最初の操作として、CSV の元データを解析し、行と列に分かれた表形式に変換します。これを行うには、最初の列見出しにあるプルダウン アイコンを選択し、[Parse] メニュー項目のサブメニューから [CSV] を選択します。
-
元データでは最初の行が列見出しになっているので、この行をヘッダーとして設定する必要があります。そこで、表示された [Parse as CSV] ダイアログ ボックスで [Set first row as header] オプションを選択し、[Apply] をクリックします。
-
この段階で元データが解析され、この操作によって生成された列が [body] 列の右側に表示されます。
-
[body] 列は不要になったので、[body] 列の見出しの横にあるプルダウン アイコンを選択し、[Delete column] メニュー項目を選択して列を削除します。
- Wrangler UI の右端にある [Transformation steps] タブをクリックすると、これまでに適用した 2 つの変換が表示されます。
このラボで後ほど、CLI を使用して変換ステップをさらに追加します。
変換ステップをデータセットに適用すると、それがデータのサンプルに反映されて視覚的な手がかりが生じます。これを [Insights] ブラウザで詳しく調べることができます。
- 上部中央の領域にある [Insights] タブをクリックして、さまざまな列でのデータの分布状態を確認します。
- インターフェースを使ってみて、データの新しい分析方法を見つけます。[Age] フィールドをドラッグして [x] エンコードにドロップし、データの見え方がどのように変化するかを確認します。
- [Create Pipeline] ボタンをクリックすると、パイプライン開発モードに切り替わり、Wrangler プラグイン内で作成したディレクティブを確認できるようになります。
- 次に表示されるダイアログで、[Batch pipeline] を選択して続行します。
-
Pipeline Studio が開いたら、[Wrangler] ノードにカーソルを合わせて [Properties] をクリックします。
-
[Directives] で、前に追加したディレクティブのレシピを確認します。次のセクションでは、CLI を使用して変換ステップをさらに追加します。
タスク 5. 変換ステップを操作する
このセクションでは引き続き Wrangler UI で CSV データセットを探索し、CLI を使用して変換を適用します。
-
Wrangler ノードの [Properties] ボックスで、[Directives] セクションにある [Wrangle] ボタンをクリックすると、Wrangler UI が再表示されます。
-
Wrangler UI の右端にある [Transformation steps] をクリックしてディレクティブを表示します。現時点で 2 つの変換ステップがあることを確認します。
これから CLI を使用して変換ステップをさらに追加し、変換によってデータがどのように変更されるかを確認します。CLI は画面下部にある黒いバーです(その中の緑色の $ はプロンプトです)。
- ディレクティブをコピーして、CLI の $ プロンプトの位置に貼り付けます。画面右側の [Transformation Steps] の表示内容が更新されることがわかります。
上記のディレクティブでデータがどのように処理されるかを以下に説明します。すでにディレクティブを 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_Name
と rename 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] 列から敬称を抽出し、重複する列を削除し、新しく作成された列の名前を変更します。
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)を匿名化します。
-
[Transformation steps] の右上にある [More] リンクをクリックし、[View Schema] をクリックして、変換によって生成されたスキーマを確認します。その後、ダウンロード アイコンをクリックしてパソコンにダウンロードします。
-
[X] をクリックして [Schema] ページを閉じます。
-
[Transformation steps] の下にあるダウンロード アイコンをクリックしてディレクティブのレシピをパソコンにダウンロードすると、変換ステップのコピーを保持して将来使用できます。
-
右上にある [Apply] ボタンをクリックします。これにより、新しく入力したすべての変換ステップが Wrangler ノードの構成に確実に追加されます。その後、元の [Wrangler] ノードのプロパティ ボックスにリダイレクトされます。
-
[X] をクリックして閉じると、Pipeline Studio が再び表示されます。
タスク 6. BigQuery にデータを取り込む
BigQuery にデータを取り込むためのデータセットを作成します。
-
新しいタブで Google Cloud コンソールの BigQuery を開くか、[Google Cloud コンソール] タブを右クリックして [複製] を選択し、ナビゲーション メニューを使用して [BigQuery] を選択します。プロンプトが表示されたら、[完了] をクリックします。
-
[エクスプローラ] ペインで、プロジェクト ID(
qwiklabs
で始まる ID)の横にある [アクションを表示] アイコンをクリックし、[データセットを作成] を選択します。
a. データセット ID: demo_cdf
b. [データセットを作成] をクリックします。ラボで後から使用できるように、データセット名をメモしておきます。
- Cloud Data Fusion UI のタブに戻ります。
a. BigQuery シンクをパイプラインに追加するには、左側ペインの [Sink] セクションに移動し、[BigQuery] アイコンをクリックしてそれをキャンバス上に配置します。
b. BigQuery シンクがキャンバスに配置されたら、Wrangler ノードと BigQuery ノードを接続します。そうするには、以下の図に示すように Wrangler ノードの矢印を BigQuery ノードまでドラッグして接続します。
c. BigQuery ノードにカーソルを合わせて [Properties] をクリックし、次の構成設定値を入力します。
フィールド | 値 |
---|---|
Reference Name | DemoSink |
Dataset Project ID | プロジェクト ID |
Dataset |
demo_cdf (前の手順で作成したデータセット) |
Table | 適切な名前を入力します(titanic など) |
このテーブルが自動的に作成されます。
d. [Validate] ボタンをクリックして、すべてが正しく設定されているかどうかを確認します。
e. [X] をクリックして閉じると、Pipeline Studio が再び表示されます。
- パイプラインを実行する準備が整いました。
a. パイプラインに名前を付けます(例: DemoBQ
)。
b. [Save] をクリックします。続いて、右上の [Deploy] をクリックしてパイプラインをデプロイします。
c. [Run] をクリックしてパイプラインの実行を開始します。[Summary] アイコンをクリックして、統計情報を調べることもできます。
実行が完了すると、ステータスが [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 の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。