Configurer une architecture de rapports réglementaires avec BigQuery

Last reviewed 2022-05-24 UTC

Ce document explique comment utiliser une solution de création de rapports réglementaires pour le cloud et exécuter un pipeline de base. Il est destiné aux ingénieurs de données des institutions financières qui souhaitent se familiariser avec l'architecture et les bonnes pratiques permettant de produire des rapports réglementaires stables et fiables.

Dans ce tutoriel, vous allez établir un exemple fonctionnel de plate-forme de traitement de données réglementaires sur des ressources Google Cloud. L'exemple de plate-forme montre comment mettre en œuvre un pipeline de traitement de données qui garantit la qualité des données, la possibilité de réaliser des audits, la facilité de modification et de déploiement, et qui répond aux exigences suivantes en matière de rapports réglementaires :

  • Ingestion de données à partir de la source
  • Traitement de grands volumes de données précises
  • Agrégation de données dans des rapports

Dans ce document, nous partons du principe que vous connaissez la version 1.1.7 de Terraform, la version 1.0.4 de DBT ("Data Build Tool", ou outil de création de données), Cloud Storage et BigQuery.

Objectifs

  • Créer une infrastructure à partir d'un dépôt cloné.
  • Charger des données fabriquées dans BigQuery.
  • Extraire des métriques réglementaires à partir de données précises.
  • Conteneuriser le pipeline d'extraction.

Coûts

Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :

Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût. Les nouveaux utilisateurs de Google Cloud peuvent bénéficier d'un essai gratuit.

Une fois que vous avez terminé les tâches décrites dans ce document, vous pouvez éviter de continuer à payer des frais en supprimant les ressources que vous avez créées. Pour en savoir plus, consultez la section Effectuer un nettoyage.

Avant de commencer

  1. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  2. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  3. Dans la console Google Cloud, activez Cloud Shell.

    Activer Cloud Shell

Préparer votre environnement

  1. Dans Cloud Shell, spécifiez le projet que vous souhaitez utiliser pour ce tutoriel :

    gcloud config set project PROJECT_ID
    

    Remplacez PROJECT_ID par l'ID du projet que vous avez sélectionné ou créé pour ce tutoriel.

    Si une boîte de dialogue s'affiche, cliquez sur Autoriser.

  2. Spécifiez une région par défaut à utiliser pour la création d'infrastructures :

     gcloud config set compute/region REGION
    
  3. Créez et activez un environnement virtuel Python :

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

    Vous voyez que votre invite de ligne de commande porte le préfixe du nom de l'environnement virtuel.

  4. Clonez le dépôt :

    git clone \
    "https://github.com/GoogleCloudPlatform/reg-reporting-blueprint"
    
  5. Installez Terraform. Pour savoir comment effectuer cette installation, consultez la documentation HashiCorp.

  6. Vérifiez l'installation.

  7. Installez dbt :

    pip3 install dbt-bigquery --upgrade
    
  8. Vérifiez l'installation de dbt :

     dbt --version
    

    Les détails d'installation s'affichent.

  9. Initialisez les variables d'environnement :

    cd reg-reporting-blueprint && source environment-variables.sh
    
  10. Exécutez le script d'installation :

    cd common_components && ./setup_script.sh
    
  11. Exécutez Terraform pour créer l'infrastructure requise :

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

    Saisissez "yes" (oui) lorsque l'invite de confirmation s'affiche.

  12. Pour vérifier qu'un bucket d'ingestion a bien été créé, accédez à la page Cloud Storage dans la console Google Cloud et recherchez un bucket portant un nom semblable à la valeur PROJECT ID.

  13. Accédez à la page BigQuery et vérifiez que les ensembles de données suivants ont bien été créés :

    homeloan_dev
    homeloan_data
    homeloan_expectedresults
    

Importer les exemples de données

Dans cette section, vous allez explorer le contenu des dossiers data et data_load du dépôt, et charger des exemples de données dans BigQuery.

  1. Dans l'instance de l'éditeur Cloud Shell, accédez au dossier data du dépôt :

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

    Ce dossier contient deux sous-dossiers nommés input et expected.

    Inspectez le contenu du dossier input. Ce dossier contient des fichiers CSV avec des exemples de données d'entrée. Ces exemples de données ne sont fournis qu'à des fins de test.

    Inspectez le contenu du dossier expected. Ce dossier contient les fichiers CSV spécifiant les résultats attendus une fois les transformations appliquées.

  2. Ouvrez et inspectez le dossier data_load/schema, qui contient les fichiers spécifiant le schéma des données de préproduction :

    cd ../data_load
    

    Les scripts de ce dossier permettent d'abord de charger les données dans Cloud Storage, puis dans BigQuery. Les données sont conformes au schéma attendu pour l'exemple de cas d'utilisation de pipeline de création de rapports réglementaires du présent tutoriel.

  3. Chargez les données dans Cloud Storage :

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

    Les données sont maintenant disponibles dans votre bucket d'ingestion Cloud Storage.

  4. Chargez les données du bucket d'ingestion Cloud Storage dans BigQuery :

    ./load_to_bq.sh
    
  5. Pour vérifier que les données ont été chargées dans BigQuery, accédez à la page BigQuery dans la console Google Cloud, puis sélectionnez une table dans les ensembles de données homeloan_data et homeloan_expectedresults.

    Sélectionnez l'onglet Aperçu de chaque table et vérifiez que chaque table contient bien des données.

Exécuter le pipeline de rapports réglementaires

  1. Dans votre environnement de développement, initialisez les dépendances de dbt :

    cd ../dbt/
    dbt deps
    

    Toutes les dépendances dbt nécessaires seront installées dans votre projet dbt.

  2. Testez la connexion entre votre installation dbt locale et vos ensembles de données BigQuery :

    dbt debug
    

    À la fin des informations de connectivité, de configuration et de dépendance renvoyées par la commande, vous devriez voir le message suivant : All checks passed!

    Dans le dossier models, ouvrez un fichier SQL et inspectez la logique des exemples de transformations de rapport mises en œuvre dans dbt.

  3. Exécutez les transformations de rapport pour créer les métriques de création de rapports réglementaires :

    dbt run
    
  4. Exécutez les transformations pour une date de votre choix :

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

    Notez les variables qui contrôlent l'exécution des transformations. La variable reporting_day indique la valeur de date que le portefeuille doit avoir. Lorsque vous exécutez la commande dbt run, il est recommandé de fournir cette valeur.

  5. Dans la console Google Cloud, accédez à la page BigQuery et inspectez l'ensemble de données homeloan_dev. Notez comment les données ont été renseignées et comment la variable reporting_day que vous avez transmise est utilisée dans le champ control.reporting_day de la vue wh_denormalised.

  6. Inspectez le fichier models/schema.yml :

    models:
     - <<: *src_current_accounts_attributes
       name: src_current_accounts_attributes
       columns:
         - name: ACCOUNT_KEY
           tests:
             - unique
                  - not_null
    

    Notez comment le fichier définit les définitions des colonnes et les tests de qualité des données associés. Par exemple, le champ ACCOUNT_KEY de la table src_current_accounts_attributes doit être unique et non nul.

  7. Exécutez les tests de qualité des données spécifiés dans les fichiers de configuration :

    dbt test -s test_type:generic
    
  8. Inspectez le code dans le dossier use_cases/examples/home_loan_delinquency/dbt/tests, qui contient les tests singular. Notez que les tests de ce dossier mettent en œuvre une comparaison de table entre les résultats réels générés par la commande dbt run et les résultats attendus enregistrés dans l'ensemble de données homeloan_expectedresults.

  9. Exécutez les tests uniques :

    dbt test -s test_type:singular
    
  10. Générez la documentation du projet :

    dbt docs generate && dbt docs serve
    
  11. Dans le résultat affiché, recherchez le texte d'URL suivant, puis cliquez dessus : http://127.0.0.1:8080

    Votre navigateur ouvre un nouvel onglet qui affiche l'interface Web de documentation de base de données.

  12. Examinez la traçabilité des modèles et leur documentation. Vous constaterez que la documentation inclut l'intégralité du code et de la documentation des modèles (comme spécifié dans les fichiers models/schema.yml).

  13. Dans Cloud Shell, saisissez la commande suivante :

    Ctrl + c
    

    Cloud Shell cesse d'héberger l'interface Web dbt.

Facultatif : Conteneuriser les transformations

  1. Dans Cloud Shell, créez un conteneur pour l'étape de chargement des données BigQuery, puis transférez le conteneur vers Google Container Repository :

    cd ../../../../  # the gcloud command should be executed from the root
    gcloud builds submit --config use_cases/examples/home_loan_delinquency/data_load/cloudbuild.yaml
    

    Le fichier Dockerfile du répertoire data_load active la conteneurisation, ce qui simplifie l'orchestration du workflow.

  2. Conteneurisez le code pour l'étape de transformation des données et transférez le conteneur vers Container Registry :

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

    La conteneurisation vous aide à créer un package que vous pouvez versionner et déployer.

  3. Récupérez le chemin d'accès de la page Airflow et du bucket Cloud Storage pour les DAG, puis stockez-les dans des variables d'environnement :

    cd common_components/orchestration/infrastructure/
    AIRFLOW_DAG_GCS=$(terraform output --raw airflow_dag_gcs_prefix)
    AIRFLOW_UI=$(terraform output --raw airflow_uri)
    
  4. Importez le DAG de défaut de paiement prêt immobilier :

    cd ../../../use_cases/examples/home_loan_delinquency/deploy/
    gsutil cp run_homeloan_dag.py $AIRFLOW_DAG_GCS
    
  5. Accédez à la page Airflow en exécutant la commande suivante pour récupérer l'interface utilisateur, puis en cliquant sur le lien :

    echo $AIRFLOW_UI
    

Effectuer un nettoyage

Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.

  1. Dans la console Google Cloud, accédez à la page Gérer les ressources.

    Accéder à la page Gérer les ressources

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

Supprimer les ressources individuelles

Pour éviter des frais supplémentaires, supprimez les ressources individuelles utilisées dans ce tutoriel :

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

Étape suivante