このドキュメントでは、クラウド向けの法令上の報告ソリューションを使用して基本的なパイプラインを実行する方法について説明します。このドキュメントは、安定性と信頼性の高い法令上の報告を作成するためのアーキテクチャとベスト プラクティスに精通している金融機関のデータ エンジニアを対象としています。
このチュートリアルでは、Google Cloud リソース上に規制データ処理プラットフォームの例を設定します。このプラットフォームの例は、データ品質、監査可能性、変更とデプロイの容易さを維持し、以下の規制報告の要件を満たすデータ処理パイプラインを実装する方法を示しています。
- ソースからのデータの取り込み
- きめ細かい大量のデータの処理
- レポートへのデータの集約
このドキュメントは、Terraform バージョン 1.1.7、Data Build Tool(dbt)バージョン 1.0.4、Cloud Storage、BigQuery に精通していることを前提としています。
目標
- クローンが作成されたリポジトリからインフラストラクチャを作成する。
- 製造されたデータを BigQuery に読み込む。
- きめ細かいデータから規制指標を抽出する。
- 抽出パイプラインをコンテナ化する。
費用
このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
このドキュメントに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。詳細については、クリーンアップをご覧ください。
始める前に
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Google Cloud コンソールで、「Cloud Shell をアクティブにする」をクリックします。
環境を準備する
Cloud Shell で、このチュートリアルで使用するプロジェクトを指定します。
gcloud config set project PROJECT_ID
PROJECT_ID
は、このチュートリアル用に選択または作成したプロジェクトの ID に置き換えます。ダイアログが表示されたら、[承認] をクリックします。
インフラストラクチャの作成に使用するデフォルトのリージョンを指定します。
gcloud config set compute/region REGION
Python 仮想環境を作成してアクティブにします。
python -m venv reg-rpt-env source reg-rpt-env/bin/activate
コマンドライン プロンプトの先頭に、仮想環境の名前が付加されています。
リポジトリのクローンを作成します。
git clone \ "https://github.com/GoogleCloudPlatform/reg-reporting-blueprint"
Terraform をインストールします。インストール方法については、HashiCorp のドキュメントをご覧ください。
インストールを確認します。
dbt をインストールします。
pip3 install dbt-bigquery --upgrade
dbt のインストールを確認します。
dbt --version
インストールの詳細が表示されます。
環境変数を初期化します。
cd reg-reporting-blueprint && source environment-variables.sh
設定スクリプトを実行します。
cd common_components && ./setup_script.sh
Terraform を実行して、必要なインフラストラクチャを作成します。
cd orchestration/infrastructure/ terraform init -upgrade terraform plan terraform apply
確認メッセージが表示されたら、「yes」と入力します。
取り込みバケットの作成を確認するには、Google Cloud コンソールで Cloud Storage ページに移動し、
PROJECT ID
の値と類似した名前のバケットがあるかどうか確認します。[BigQuery] ページに移動して、次のデータセットが作成されていることを確認します。
homeloan_dev homeloan_data homeloan_expectedresults
サンプルデータをアップロードする
このセクションでは、リポジトリの data
フォルダと data_load
フォルダの内容を調べ、サンプルデータを BigQuery に読み込みます。
Cloud Shell エディタ インスタンスで、リポジトリの
data
フォルダに移動します。cd ../../../use_cases/examples/home_loan_delinquency/data/
このフォルダには、
input
とexpected
という 2 つのサブフォルダがあります。input
フォルダの内容を調べます。このフォルダには、サンプル入力データを含む CSV ファイルが存在します。このサンプルデータはテスト専用です。expected
フォルダの内容を調べます。このフォルダには、変換が適用されると、想定される結果を指定する CSV ファイルが含まれています。ステージング データのスキーマを指定するファイルのある
data_load/schema
フォルダを開いて調べます。cd ../data_load
このフォルダのスクリプトを使用すると、データを Cloud Storage に読み込んでから、BigQuery に読み込めます。データは、このチュートリアルの規制報告パイプラインのユースケースの例に想定されるスキーマを遵守しています。
データを Cloud Storage に読み込みます。
./load_to_gcs.sh ../data/input ./load_to_gcs.sh ../data/expected
これで、Cloud Storage 取り込みバケットでデータを利用できるようになりました。
Cloud Storage 取り込みバケットから BigQuery にデータを読み込みます。
./load_to_bq.sh
BigQuery にデータが読み込まれたことを確認するには、Google Cloud コンソールで BigQuery ページに移動し、
homeloan_data
データセットとhomeloan_expectedresults
データセットの両方にあるテーブルを選択します。各テーブルの [プレビュー] タブを選択し、各テーブルにデータがあることを確認します。
法令上の報告パイプラインを実行する
開発環境で、dbt の依存関係を初期化します。
cd ../dbt/ dbt deps
これにより、必要な dbt 依存関係が dbt プロジェクトにインストールされます。
ローカルの dbt インストールと BigQuery データセットの間の接続をテストします。
dbt debug
コマンドから返された接続、構成、依存関係情報の最後に、
All checks passed!
というメッセージが表示されます。models
フォルダで SQL ファイルを開き、dbt に実装されているサンプル レポートの変換ロジックを調べます。レポート変換を実行して法令上の報告指標を作成します。
dbt run
選択した日付の変換を実行します。
dbt run --vars '{"reporting_day": "2021-09-03"}'
変換の実行を制御する変数に注意してください。変数
reporting_day
は、ポートフォリオに含める日付値を示します。dbt run
コマンドを実行するときに、この値を指定することをおすすめします。Google Cloud コンソールで [BigQuery] ページに移動し、
homeloan_dev
データセットを調べます。データがどのように入力されているのかと、渡されたreporting_day
変数がwh_denormalised
ビューのcontrol.reporting_day
フィールドでどのように使用されているかに注意してください。models/schema.yml
ファイルを調べます。models: - <<: *src_current_accounts_attributes name: src_current_accounts_attributes columns: - name: ACCOUNT_KEY tests: - unique - not_null
このファイルで列の定義と、関連するデータ品質テストがどのように定義されているのかを確認します。たとえば、
src_current_accounts_attributes
テーブルのACCOUNT_KEY
フィールドは一意でなければならず、null は使用できません。構成ファイルで指定されたデータ品質テストを実行します。
dbt test -s test_type:generic
singular
テストを含むuse_cases/examples/home_loan_delinquency/dbt/tests
フォルダのコードを調べます。このフォルダのテストでは、dbt run
コマンドにより出力される実際の結果とhomeloan_expectedresults
データセットに保存される予想される結果のテーブル比較を実装します。単一のテストを実行します。
dbt test -s test_type:singular
プロジェクトのドキュメントを生成します。
dbt docs generate && dbt docs serve
表示された出力で、URL テキスト
http://127.0.0.1:8080
を検索してクリックします。ブラウザで新しいタブが開き、dbt ドキュメントのウェブ インターフェースが表示されます。
モデルのリネージとそのドキュメントを確認します。ドキュメントには、すべてのコードとモデルのドキュメント(
models/schema.yml
ファイルで指定されているもの)が含まれています。Cloud Shell で、次を入力します。
Ctrl + c
Cloud Shell が dbt ウェブ インターフェースのホスティングを停止します。
省略可: 変換をコンテナ化する
Cloud Shell で、BigQuery データ読み込みの手順のコンテナを作成し、そのコンテナを Google コンテナ リポジトリに push します。
cd ../../../../ # the gcloud command should be executed from the root gcloud builds submit --config use_cases/examples/home_loan_delinquency/data_load/cloudbuild.yaml
data_load
ディレクトリの Dockerfile によりコンテナ化が可能になり、ワークフローのオーケストレーションが簡単になります。データ変換ステップのコードをコンテナ化し、そのコンテナを Container Registry に push します。
gcloud builds submit --config use_cases/examples/home_loan_delinquency/dbt/cloudbuild.yaml
コンテナ化により、バージョニングとデプロイが可能なパッケージを作成できます。
[Airflow] ページと DAG の Cloud Storage バケットのパスを取得し、環境変数に格納します。
cd common_components/orchestration/infrastructure/ AIRFLOW_DAG_GCS=$(terraform output --raw airflow_dag_gcs_prefix) AIRFLOW_UI=$(terraform output --raw airflow_uri)
住宅ローン滞納 DAG をアップロードします。
cd ../../../use_cases/examples/home_loan_delinquency/deploy/ gsutil cp run_homeloan_dag.py $AIRFLOW_DAG_GCS
次のコマンドを実行して UI を取得し、リンクをクリックして [Airflow] ページに移動します。
echo $AIRFLOW_UI
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。
- Google Cloud コンソールで、[リソースの管理] ページに移動します。
- プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
- ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。
個々のリソースを削除する
さらなる費用負担を回避するには、このチュートリアルで使用する個々のリソースを削除します。
cd ../../../../common_components/orchestration/infrastructure/
terraform destroy
次のステップ
- 金融サービス向けの Google Cloud ソリューションの詳細を確認する。
- リファレンス アーキテクチャ、図、ベスト プラクティスについては、Cloud アーキテクチャ センターをご確認ください。