Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you restart it, you'll have to start from the beginning.
- On the top left of your screen, click Start lab to begin
Add Cloud Data Fusion API Service Agent role to service account
/ 25
Load the data
/ 25
Ingestion into BigQuery
/ 50
データの統合ではデータが重要です。データを処理する際、元データがどのようなものであるかを確認できると、その元データを変換の出発点として使用するうえで役立ちます。Wrangler を使用すると、データ統合ワークフローに対するデータファーストのアプローチを採用できます。
ETL(抽出、変換、読み込み)アプリケーションでよく使用される一般的なデータソースは、CSV 形式のテキスト ファイルに保存されたデータです。これは、多くのデータベース システムにおいてこの形式でデータのエクスポートやインポートが行われるためです。このラボでは CSV ファイルを使用しますが、同じ手法をデータベース ソースだけでなく、Cloud Data Fusion で使用できる他の任意のデータソースに対しても適用できます。
このラボでは、次のタスクの実施方法について学びます。
このラボの大部分では、Wrangler プラグインで使用される Wrangler 変換ステップを操作します。これにより変換が 1 か所にカプセル化され、変換タスクをグループ化して管理しやすいブロックに分けることができます。このデータファーストのアプローチでは、変換を簡単に可視化できます。
各ラボでは、新しい Google Cloud プロジェクトとリソースセットを一定時間無料で利用できます。
シークレット ウィンドウを使用して Google Cloud Skills Boost にログインします。
ラボのアクセス時間(例: 02:00:00)に注意し、時間内に完了できるようにしてください。
一時停止機能はありません。必要な場合はやり直せますが、最初からになります。
準備ができたら、[ラボを開始] をクリックします。
ラボの認証情報(ユーザー名とパスワード)をメモしておきます。この情報は、Google Cloud コンソールにログインする際に使用します。
[Google Console を開く] をクリックします。
[別のアカウントを使用] をクリックし、このラボの認証情報をコピーしてプロンプトに貼り付けます。
他の認証情報を使用すると、エラーが発生したり、料金の請求が発生したりします。
利用規約に同意し、再設定用のリソースページをスキップします。
これは、このラボの間だけ有効な一時的なアカウントです。以下の点に注意してください。
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}
はプロジェクト番号に置き換えてください。
次に、以下の手順に沿って、インスタンスに関連付けられているサービス アカウントに権限を付与します。
Google Cloud コンソールで、[IAM と管理] > [IAM] に移動します。
Compute Engine のデフォルトのサービス アカウント {プロジェクト番号}-compute@developer.gserviceaccount.com
が表示されていることを確認し、サービス アカウントをクリップボードにコピーします。
[IAM 権限] ページで、[+アクセス権を付与] をクリックします。
[新しいプリンシパル] フィールドに、サービス アカウントを貼り付けます。
[ロールを選択] フィールドをクリックし、「Cloud Data Fusion API サービス エージェント」と入力します。最初の数文字を入力すると [Cloud Data Fusion API サービス エージェント] が表示されるので、それを選択します。
[保存] をクリックします。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Cloud Console で、[IAM と管理] > [IAM] に移動します。
[Google 提供のロール付与を含みます] の横にあるチェックボックスを選択します
service-{project-number}@gcp-sa-datafusion.iam.gserviceaccount.com
という表示形式の Cloud Data Fusion サービス アカウントを探し、クリップボードにコピーします。次に、[IAM と管理] > [サービス アカウント] に移動します。
{project-number}-compute@developer.gserviceaccount.com
という表示形式のデフォルトの Compute Engine アカウントをクリックした後、上部のナビゲーション メニューの [権限] タブを選択します
[アクセスを許可] ボタンをクリックします
[新しいプリンシパル] フィールドに、前の手順でコピーしたサービスアカウントを貼り付けます。
[役割] プルダウン メニューで、[サービス アカウント ユーザー] を選択します
[保存] をクリックします。
次にプロジェクト内で、ラングリング用のサンプルデータを読み込むための Cloud Storage バケットを作成します。Cloud Data Fusion はこの Storage バケットからデータを読み取ることになります。
作成されるバケットの名前は、現在のプロジェクト ID です。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
これで、この後の作業を進める準備が整いました。
Cloud Data Fusion UI では、[Pipeline Studio] や [Wrangler] などのさまざまなページで Cloud Data Fusion の機能を使用できます。
Cloud Data Fusion UI を操作するには、次の手順に従います。
サービスのガイドに進むダイアログが表示された場合は [No, Thanks] をクリックします。これで Cloud Data Fusion UI が表示されるようになります。
Cloud Data Fusion ウェブ UI には固有のナビゲーション パネル(左側)があり、そこから必要なページに移動できます。
Wrangler はインタラクティブなビジュアル ツールです。これを使用すると、データセット全体に大規模な並列処理ジョブをディスパッチする前に、小さなデータ サブセットで変換の効果を確認できます。
Wrangler が読み込まれると、左側のパネルに、事前構成されたデータ接続(Cloud Storage 接続など)が表示されます。
[GCS] の [Cloud Storage Default] を選択します。
プロジェクト ID に対応するバケットをクリックします。
titanic.csv をクリックします。
解析オプションで、プルダウンからテキスト形式を選択します。
元データでは最初の行が列見出しになっているので、この行をヘッダーとして設定する必要があります。そこで、表示された [Parse as CSV] ダイアログ ボックスで [Set first row as header] オプションを選択し、[Apply] をクリックします。
この段階で元データが解析され、この操作によって生成された列が [body] 列の右側に表示されます。
[body] 列は不要になったので、[body] 列の見出しの横にあるプルダウン アイコンを選択し、[Delete column] メニュー項目を選択して列を削除します。
このラボで後ほど、CLI を使用して変換ステップをさらに追加します。
変換ステップをデータセットに適用すると、それがデータのサンプルに反映されて視覚的な手がかりが生じます。これを [Insights] ブラウザで詳しく調べることができます。
Pipeline Studio が開いたら、[Wrangler] ノードにカーソルを合わせて [Properties] をクリックします。
[Directives] で、前に追加したディレクティブのレシピを確認します。次のセクションでは、CLI を使用して変換ステップをさらに追加します。
このセクションでは引き続き Wrangler UI で CSV データセットを探索し、CLI を使用して変換を適用します。
Wrangler ノードの [Properties] ボックスで、[Directives] セクションにある [Wrangle] ボタンをクリックすると、Wrangler UI が再表示されます。
Wrangler UI の右端にある [Transformation steps] をクリックしてディレクティブを表示します。現時点で 2 つの変換ステップがあることを確認します。
これから CLI を使用して変換ステップをさらに追加し、変換によってデータがどのように変更されるかを確認します。CLI は画面下部にある黒いバーです(その中の緑色の $ はプロンプトです)。
上記のディレクティブでデータがどのように処理されるかを以下に説明します。すでにディレクティブを 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 が再び表示されます。
BigQuery にデータを取り込むためのデータセットを作成します。
新しいタブで Google Cloud コンソールの BigQuery を開くか、[Google Cloud コンソール] タブを右クリックして [複製] を選択し、ナビゲーション メニューを使用して [BigQuery] を選択します。プロンプトが表示されたら、[完了] をクリックします。
[エクスプローラ] ペインで、プロジェクト ID(qwiklabs
で始まる ID)の横にある [アクションを表示] アイコンをクリックし、[データセットを作成] を選択します。
a. データセット ID: demo_cdf
b. [データセットを作成] をクリックします。ラボで後から使用できるように、データセット名をメモしておきます。
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 から削除され、アカウントの情報も消去されます。
ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックします。
星の数は、それぞれ次の評価を表します。
フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。
フィードバック、ご提案、修正が必要な箇所については、[サポート] タブからお知らせください。
Copyright 2020 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
One lab at a time
Confirm to end all existing labs and start this one