BigQuery を使用して法令上の報告のアーキテクチャを設定する

Last reviewed 2022-05-24 UTC

このドキュメントでは、クラウド向けの法令上の報告ソリューションを使用して基本的なパイプラインを実行する方法について説明します。このドキュメントは、安定性と信頼性の高い法令上の報告を作成するためのアーキテクチャとベスト プラクティスに精通している金融機関のデータ エンジニアを対象としています。

このチュートリアルでは、Google Cloud リソース上に規制データ処理プラットフォームの例を設定します。このプラットフォームの例は、データ品質、監査可能性、変更とデプロイの容易さを維持し、以下の規制報告の要件を満たすデータ処理パイプラインを実装する方法を示しています。

  • ソースからのデータの取り込み
  • きめ細かい大量のデータの処理
  • レポートへのデータの集約

このドキュメントは、Terraform バージョン 1.1.7、Data Build Tool(dbt)バージョン 1.0.4、Cloud Storage、BigQuery に精通していることを前提としています。

目標

  • クローンが作成されたリポジトリからインフラストラクチャを作成する。
  • 製造されたデータを BigQuery に読み込む。
  • きめ細かいデータから規制指標を抽出する。
  • 抽出パイプラインをコンテナ化する。

費用

このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。 新しい Google Cloud ユーザーは無料トライアルをご利用いただける場合があります。

このドキュメントに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。詳細については、クリーンアップをご覧ください。

始める前に

  1. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  2. Google Cloud プロジェクトで課金が有効になっていることを確認します

  3. Google Cloud コンソールで、「Cloud Shell をアクティブにする」をクリックします。

    Cloud Shell をアクティブにする

環境を準備する

  1. Cloud Shell で、このチュートリアルで使用するプロジェクトを指定します。

    gcloud config set project PROJECT_ID
    

    PROJECT_ID は、このチュートリアル用に選択または作成したプロジェクトの ID に置き換えます。

    ダイアログが表示されたら、[承認] をクリックします。

  2. インフラストラクチャの作成に使用するデフォルトのリージョンを指定します。

     gcloud config set compute/region REGION
    
  3. Python 仮想環境を作成してアクティブにします。

    python -m venv reg-rpt-env
    source reg-rpt-env/bin/activate
    

    コマンドライン プロンプトの先頭に、仮想環境の名前が付加されています。

  4. リポジトリのクローンを作成します。

    git clone \
    "https://github.com/GoogleCloudPlatform/reg-reporting-blueprint"
    
  5. Terraform をインストールします。インストール方法については、HashiCorp のドキュメントをご覧ください。

  6. インストールを確認します。

  7. dbt をインストールします。

    pip3 install dbt-bigquery --upgrade
    
  8. dbt のインストールを確認します。

     dbt --version
    

    インストールの詳細が表示されます。

  9. 環境変数を初期化します。

    cd reg-reporting-blueprint && source environment-variables.sh
    
  10. 設定スクリプトを実行します。

    cd common_components && ./setup_script.sh
    
  11. Terraform を実行して、必要なインフラストラクチャを作成します。

    cd orchestration/infrastructure/
    terraform init -upgrade
    terraform plan
    terraform apply
    

    確認メッセージが表示されたら、「yes」と入力します。

  12. 取り込みバケットの作成を確認するには、Google Cloud コンソールで Cloud Storage ページに移動し、PROJECT ID の値と類似した名前のバケットがあるかどうか確認します。

  13. [BigQuery] ページに移動して、次のデータセットが作成されていることを確認します。

    homeloan_dev
    homeloan_data
    homeloan_expectedresults
    

サンプルデータをアップロードする

このセクションでは、リポジトリの data フォルダと data_load フォルダの内容を調べ、サンプルデータを BigQuery に読み込みます。

  1. Cloud Shell エディタ インスタンスで、リポジトリの data フォルダに移動します。

    cd ../../../use_cases/examples/home_loan_delinquency/data/
    

    このフォルダには、inputexpected という 2 つのサブフォルダがあります。

    input フォルダの内容を調べます。このフォルダには、サンプル入力データを含む CSV ファイルが存在します。このサンプルデータはテスト専用です。

    expected フォルダの内容を調べます。このフォルダには、変換が適用されると、想定される結果を指定する CSV ファイルが含まれています。

  2. ステージング データのスキーマを指定するファイルのある data_load/schema フォルダを開いて調べます。

    cd ../data_load
    

    このフォルダのスクリプトを使用すると、データを Cloud Storage に読み込んでから、BigQuery に読み込めます。データは、このチュートリアルの規制報告パイプラインのユースケースの例に想定されるスキーマを遵守しています。

  3. データを Cloud Storage に読み込みます。

    ./load_to_gcs.sh ../data/input
    ./load_to_gcs.sh ../data/expected
    

    これで、Cloud Storage 取り込みバケットでデータを利用できるようになりました。

  4. Cloud Storage 取り込みバケットから BigQuery にデータを読み込みます。

    ./load_to_bq.sh
    
  5. BigQuery にデータが読み込まれたことを確認するには、Google Cloud コンソールで BigQuery ページに移動し、homeloan_data データセットと homeloan_expectedresults データセットの両方にあるテーブルを選択します。

    各テーブルの [プレビュー] タブを選択し、各テーブルにデータがあることを確認します。

法令上の報告パイプラインを実行する

  1. 開発環境で、dbt の依存関係を初期化します。

    cd ../dbt/
    dbt deps
    

    これにより、必要な dbt 依存関係が dbt プロジェクトにインストールされます。

  2. ローカルの dbt インストールと BigQuery データセットの間の接続をテストします。

    dbt debug
    

    コマンドから返された接続、構成、依存関係情報の最後に、All checks passed! というメッセージが表示されます。

    models フォルダで SQL ファイルを開き、dbt に実装されているサンプル レポートの変換ロジックを調べます。

  3. レポート変換を実行して法令上の報告指標を作成します。

    dbt run
    
  4. 選択した日付の変換を実行します。

    dbt run --vars '{"reporting_day": "2021-09-03"}'
    

    変換の実行を制御する変数に注意してください。変数 reporting_day は、ポートフォリオに含める日付値を示します。dbt run コマンドを実行するときに、この値を指定することをおすすめします。

  5. Google Cloud コンソールで [BigQuery] ページに移動し、homeloan_dev データセットを調べます。データがどのように入力されているのかと、渡された reporting_day 変数が wh_denormalised ビューの control.reporting_day フィールドでどのように使用されているかに注意してください。

  6. 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 は使用できません。

  7. 構成ファイルで指定されたデータ品質テストを実行します。

    dbt test -s test_type:generic
    
  8. singular テストを含む use_cases/examples/home_loan_delinquency/dbt/tests フォルダのコードを調べます。このフォルダのテストでは、dbt run コマンドにより出力される実際の結果と homeloan_expectedresults データセットに保存される予想される結果のテーブル比較を実装します。

  9. 単一のテストを実行します。

    dbt test -s test_type:singular
    
  10. プロジェクトのドキュメントを生成します。

    dbt docs generate && dbt docs serve
    
  11. 表示された出力で、URL テキスト http://127.0.0.1:8080 を検索してクリックします。

    ブラウザで新しいタブが開き、dbt ドキュメントのウェブ インターフェースが表示されます。

  12. モデルのリネージとそのドキュメントを確認します。ドキュメントには、すべてのコードとモデルのドキュメント(models/schema.yml ファイルで指定されているもの)が含まれています。

  13. Cloud Shell で、次を入力します。

    Ctrl + c
    

    Cloud Shell が dbt ウェブ インターフェースのホスティングを停止します。

省略可: 変換をコンテナ化する

  1. 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 によりコンテナ化が可能になり、ワークフローのオーケストレーションが簡単になります。

  2. データ変換ステップのコードをコンテナ化し、そのコンテナを Container Registry に push します。

    gcloud builds submit --config use_cases/examples/home_loan_delinquency/dbt/cloudbuild.yaml
    

    コンテナ化により、バージョニングとデプロイが可能なパッケージを作成できます。

  3. [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)
    
  4. 住宅ローン滞納 DAG をアップロードします。

    cd ../../../use_cases/examples/home_loan_delinquency/deploy/
    gsutil cp run_homeloan_dag.py $AIRFLOW_DAG_GCS
    
  5. 次のコマンドを実行して UI を取得し、リンクをクリックして [Airflow] ページに移動します。

    echo $AIRFLOW_UI
    

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。

  1. Google Cloud コンソールで、[リソースの管理] ページに移動します。

    [リソースの管理] に移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

個々のリソースを削除する

さらなる費用負担を回避するには、このチュートリアルで使用する個々のリソースを削除します。

cd ../../../../common_components/orchestration/infrastructure/
terraform destroy

次のステップ