Configuration du Openflow Connector for Google BigQuery

Note

Ce connecteur est soumis aux conditions d’utilisation de Snowflake Connector.

Cette rubrique décrit les étapes pour paramétrer Openflow Connector for Google BigQuery.

Conditions préalables

  1. Consulter À propos de Openflow Connector for Google BigQuery

  2. Configurez votre déploiement de runtime.

  3. Si vous utilisez Openflow - Snowflake Deployments, assurez-vous d’avoir consulté la configuration des domaines requis et d’avoir accordé l’accès aux domaines requis pour le connecteur.

  4. Vous avez accès au rôle d’administrateur Openflow ou à un rôle similaire que vous utilisez pour gérer Openflow.

  5. Si vous créez un utilisateur de service Snowflake pour gérer le connecteur, vous avez créé une authentification par paire de clés. Pour plus d’informations sur l’authentification par paire de clés, voir Authentification par paire de clés.

Points de terminaison requis

Les points de terminaison suivants sont nécessaires pour que le connecteur fonctionne :

  • bigquery.googleapis.com:443

  • bigquerystorage.googleapis.com:443

  • oauth2.googleapis.com:443

Si vous utilisez Openflow -BYOC, vous devez configurer la sortie de votre réseau Cloud pour autoriser l’accès TLS 443 aux points de terminaison énumérés ci-dessus. Si vous utilisez|OFSFSPCS-plural|, vous devez créer une règle réseau et une intégration d’accès externe (EAI). Ensuite, accordez les privilèges d’utilisation du rôle Snowflake sur laEAI.

Configuration des BigQuery

  1. Créez un compte Google Cloud Service et accordez-lui les autorisations nécessaires pour lire les données BigQuery. Le connecteur utilise ce compte pour l’authentification.

    Ce compte doit disposer des autorisations suivantes :

Important

BigQuery Data Editor doit être accordé au niveau du projet et non aux ensembles de données individuels. Les requêtes du connecteur {project}.{region}.INFORMATION_SCHEMA.TABLES pour découvrir les tables dans toutes les régions configurées - une vue à l’échelle de la région qui nécessite un accès au niveau du projet. Le connecteur interroge également {project}.{dataset}.INFORMATION_SCHEMA.KEY_COLUMN_USAGE pour déterminer les clés primaires de chaque table répliquée. Sans accès au niveau du projet, la requête échoue avec une erreur Access Denied et le connecteur ne fonctionne pas correctement.

  1. Générer et télécharger le fichier de clé JSON correspondant pour le compte de service. Vous aurez besoin de l’intégralité du contenu de ce fichier pour la configuration du connecteur.

  2. Activez l’historique des modifications sur chaque table source pour permettre au connecteur d’effectuer une réplication incrémentielle. Cette fonctionnalité permet à BigQuery de suivre les modifications au niveau des lignes (insertions, mises à jour et suppressions), que le connecteur utilise pour synchroniser efficacement les données.

    Exécutez la requête suivante dans la console BigQuery pour chaque table :

    ALTER TABLE `project.dataset.table`
    SET OPTIONS (enable_change_history = TRUE);
    

Configuration de votre compte Snowflake

En tant qu’administrateur Openflow, effectuez les tâches suivantes pour configurer votre compte Snowflake :

  1. Créez un utilisateur de service Snowflake :

    USE ROLE USERADMIN;
    CREATE USER <openflow_service_user>
      TYPE=SERVICE
      COMMENT='Service user for Openflow automation';
    
  2. Stockez la clé privée de cet utilisateur dans un fichier à fournir à la configuration du connecteur. Pour plus d’informations sur l’authentification par paire de clés, voir Authentification par paire de clés.

    ALTER USER <openflow_service_user> SET RSA_PUBLIC_KEY = '<pubkey>';
    
  3. Créez une base de données qui stocke les données répliquées et définissez les autorisations permettant à l’utilisateur de Snowflake de créer des objets dans cette base de données en lui accordant les privilèges USAGE et CREATE SCHEMA.

    USE ROLE ACCOUNTADMIN;
    CREATE DATABASE IF NOT EXISTS <destination_database>;
    GRANT USAGE ON DATABASE <destination_database> TO USER <openflow_service_user>;
    GRANT CREATE SCHEMA ON DATABASE <destination_database> TO USER <openflow_service_user>;
    
  4. Créez un nouvel entrepôt ou utilisez un entrepôt existant pour le connecteur.

    Pour créer un nouvel entrepôt

    CREATE WAREHOUSE <openflow_warehouse>
    WITH
       WAREHOUSE_SIZE = 'MEDIUM'
       AUTO_SUSPEND = 300
       AUTO_RESUME = TRUE;
    GRANT USAGE, OPERATE ON WAREHOUSE <openflow_warehouse> TO USER <openflow_service_user>;
    

    Commencez par la taille de l’entrepôt MEDIUM, puis expérimentez la taille en fonction de la quantité de tables répliquées et de la quantité de données transférées.

    Pour déterminer si vous devez augmenter la taille de l’entrepôt, surveillez le connecteur et la base de données pendant que la réplication des données est en cours. Si vous observez des retards importants lors de la réplication incrémentielle, expérimentez avec une taille d’entrepôt plus importante. Cependant, avec un grand nombre de tables, l’utilisation d’entrepôts multi-clusters offre généralement une meilleure scalabilité que l’augmentation de la taille de l’entrepôt.

  5. Créez une intégration d’accès externe pour permettre l’accès réseau en dehors de Snowflake.

    Prudence

    Si votre environnement d’exécution s’exécute dans Openflow -BYOC, vous n’avez pas besoin de créer une intégration d’accès externe (EAI). À la place, configurez la sortie de votre réseau Cloud pour autoriser l’accès TLS 443 aux points de terminaison énumérés ci-dessous.

    Hôte requis : les points de terminaison de port sont répertoriés dans Points de terminaison requis.

    Pour permettre au connecteur d’appeler les APIs Google requises à partir d’un environnement d’exécution hébergé par Snowflake, vous devez créer une règle de réseau et une intégration d’accès externe (EAI). Ensuite, accordez les privilèges d’utilisation du rôle Snowflake sur le rôle EAI.

    Pour créer l’intégration de l’accès externe et la règle réseau, et accorder l’accès, procédez comme suit :

    1. Créez une règle de réseau pour permettre au connecteur d’accéder aux APIs Google requises :

      USE ROLE ACCOUNTADMIN;
      USE DATABASE <openflow_network_db>;
      
      CREATE OR REPLACE NETWORK RULE openflow_<runtime_name>_network_rule
        TYPE = HOST_PORT
        MODE = EGRESS
        VALUE_LIST = (
          'bigquery.googleapis.com:443',
          'bigquerystorage.googleapis.com:443',
          'oauth2.googleapis.com:443'
        );
      
    2. Créez une intégration d’accès externe qui fait référence à la règle de réseau :

      CREATE OR REPLACE EXTERNAL ACCESS INTEGRATION openflow_<runtime_name>_eai
        ALLOWED_NETWORK_RULES = (openflow_<runtime_name>_network_rule)
        ENABLED = TRUE;
      
    3. Accordez le privilège USAGE à votre rôle Snowflake sur l’intégration :

      GRANT USAGE ON INTEGRATION openflow_<runtime_name>_eai
        TO ROLE openflow_runtime_role_<runtime_name>;
      

Installer le connecteur

Pour installer le connecteur, procédez comme suit en tant qu’ingénieur des données :

  1. Accédez à la page d’aperçu d’Openflow. Dans la section Featured connectors, sélectionnez View more connectors.

  2. Sur la page des connecteurs Openflow, trouvez le connecteur et sélectionnez Add to runtime.

  3. Dans la boîte de dialogue Select runtime, sélectionnez votre environnement d’exécution dans la liste déroulante Available runtimes, puis cliquez sur Add.

    Note

    Avant d’installer le connecteur, assurez-vous que vous avez créé une base de données et un schéma dans Snowflake pour que le connecteur puisse stocker les données ingérées.

  4. Authentifiez-vous au déploiement avec les identifiants de votre compte Snowflake et sélectionnez Allow lorsque vous êtes invité à autoriser l’application d’exécution à accéder à votre compte Snowflake. Le processus d’installation du connecteur prend quelques minutes.

  5. Authentifiez-vous auprès de l’environnement d’exécution avec les identifiants de votre compte Snowflake.

Le canevas Openflow apparaît avec le groupe de processus du connecteur ajouté.

Configuration du connecteur

Pour configurer le connecteur, procédez comme suit :

  1. Cliquez avec le bouton droit de la souris sur le runtime ajouté et sélectionnez Parameters.

  2. Renseignez les valeurs des paramètres requis comme décrit dans Spécifier les paramètres de flux.

Spécifier les paramètres de flux

Cette section décrit les paramètres de flux que vous pouvez configurer en fonction des contextes de paramètres suivants :

Paramètres source BigQuery

Paramètre

Description

Nom du projet BigQuery

L’identificateur unique du projet Google Cloud qui contient les ensembles de données et les tables BigQuery.

Emplacement : ouvrez BigQuery Studio (Google Cloud Console > BigQuery) et dans le volet de gauche de l’explorateur survolez votre projet pour voir l’ID du projet.

Exemple :** example-team-gcp

GCP Compte de service JSON

Tout le contenu du fichier de clé JSON du compte de service Google Cloud Platform utilisé pour l’authentification. Assurez-vous que le compte de service dispose des autorisations IAM nécessaires pour exécuter les opérations BigQuery, telles que les rôles BigQuery Job User (Utilisateur de tâches BigQuery) etBigQuery Data Viewer (Visionneur de données BigQuery).

Où l’obtenir : Google Cloud Console >IAM et Admin > Service Accounts (Comptes de service) > sélectionnez le compte de service > onglet Keys (cL2S° > Add key (Ajouter une clé) > Create new key (Créer une nouvelle clé) >JSON. Ceci télécharge un fichier .json. Ouvrez-le et collez tout son contenu (y compris les accolades) dans ce champ.

Paramètres de destination BigQuery

Paramètre

Description

Stratégie d’authentification Snowflake

Lorsque vous utilisez SPCS, utilisez SNOWFLAKE_SESSION_TOKEN comme valeur pour la stratégie d’authentification. Lorsque vous utilisez BYOC, utilisez KEY_PAIR comme valeur pour la stratégie d’authentification.

Exemple :** KEY_PAIR

Identificateur de compte Snowflake

Lorsque vous utilisez :

  • Stratégie d’authentification par jeton de session : Doit être vide.

  • KEY_PAIR : Nom du compte Snowflake où les données seront conservées.

Base de données de destination

Nom de la base de données de destination vers laquelle la réplication doit être effectuée. La casse mixte est prise en charge.

Fichier de clé privée de Snowflake

Lorsque vous utilisez :

  • Stratégie d’authentification par jeton de session : Le fichier de la clé privée doit être vide.

  • KEY_PAIR : Chargez le fichier qui contient la clé privée RSA utilisée pour l’authentification auprès de Snowflake, formatée conformément aux normes PKCS8 et possédant des en-têtes et des pieds de page PEM standards. La ligne d’en-tête commence par -----BEGIN PRIVATE. Pour charger le fichier de clé privée, cochez la case à cocher Reference asset (Actif de référence).

Mot de passe de la clé privée de Snowflake

Lorsque vous utilisez :

  • Stratégie d’authentification par jeton de session : Doit être vide.

  • KEY_PAIR : Fournissez le mot de passe associé au fichier de la clé privée Snowflake.

Rôle Snowflake

Lorsque vous utilisez :

  • Stratégie d’authentification par jeton de session : Utilisez votre rôle Snowflake. Vous pouvez trouver votre rôle Snowflake dans l’UI d’Openflow, en accédant à Voir les détails de votre exécution.

  • Stratégie d’authentification KEY_PAIR : Utilisez un rôle valide configuré pour votre utilisateur de service.

Nom d’utilisateur Snowflake

Lorsque vous utilisez :

  • Stratégie d’authentification par jeton de session : Doit être vide.

  • KEY_PAIR : Indiquez le nom d’utilisateur utilisé pour vous connecter à l’instance Snowflake.

Entrepôt Snowflake

Le nom de l’entrepôt à utiliser par le connecteur.

Paramètres d’ingestion BigQuery

Paramètre

Description

Régions BigQuery

Spécifie une liste d’emplacements à interroger, séparés par des virgules pour les ensembles de données BigQuery. Vous pouvez combiner les emplacements régionaux et multirégionaux dans la même liste.

Exemple :** us,eu,us-west1

Noms des ensembles de données inclus

Liste des ensembles de données à répliquer, séparés par des virgules (interrogée dans toutes les régions sélectionnées).

Exemple :** sales_data,marketing_leads

Regex Noms des ensembles de données inclus

Expression régulière pour spécifier les noms des ensembles de données à répliquer (interrogée dans toutes les régions sélectionnées). Combinée avec les noms des ensembles de données inclus pour inclure tout ensemble de données correspondant. Remarque : l’expression REGEXP doit correspondre à la syntaxe RE2 de Google.

Exemple :** ^sales_.*

Noms des tables incluses

Liste de tables séparées par des virgules à répliquer dans les ensembles de données.

Exemple :** transactions,customers

Regex Noms des tables incluses

Expression régulière pour spécifier les noms de table à répliquer dans les ensembles de données. Combinée avec les noms de table inclus pour inclure toute table correspondante. Remarque : l’expression REGEXP doit correspondre à la syntaxe RE2 de Google.

Exemple :** ^revenue_.*

Noms des vues incluses

Liste de vues séparées par des virgules à répliquer dans les ensembles de données.

Exemple :** customer_summary,revenue_report

Regex Noms des vues incluses

Expression régulière pour spécifier les noms des vues à répliquer dans les ensembles de données. Combinée avec les noms de vues incluses pour inclure toute vue correspondante. Remarque : l’expression REGEXP doit correspondre à la syntaxe RE2 de Google.

Exemple :** ^report_.*

Fréquence de synchronisation incrémentielle

Fréquence à laquelle le connecteur exécute une synchronisation incrémentielle pour chaque table. Les exécutions ne se chevauchent pas si un cycle prend plus de temps que l’intervalle configuré, l’exécution suivante attend la fin de la précédente. Étant donné que BigQuery limite la taille maximale de la fenêtre à 24h, la planification doit être plus fréquente que cette valeur.

Exemple :** 10m

Voir la fréquence de synchronisation

Fréquence à laquelle le connecteur exécute une synchronisation pour chaque vue. Les exécutions ne se chevauchent pas ; si un cycle prend plus de temps que l’intervalle configuré, l’exécution suivante attend la fin de la précédente. L’ingestion de vues ne prend pas en charge la CDC (capture de données modifiées), seulement tronquer et charger.

Exemple :** 1h

Ensemble de données de table temporaire

Ensemble de données dans lequel les tables temporaires nécessaires sont créées, telles que les tables de journal CDC ou les tables temporaires pour l’ingestion de vues. Snowflake recommande de disposer d’un ensemble de données distinct pour les tables temporaires et de ne pas utiliser l’ensemble de données ingéré à cette fin.

Exemple :** openflow_temp

Exécutez le flux

  1. Cliquez avec le bouton droit de la souris sur l’avion et sélectionnez Enable all Controller Services.

  2. Cliquez avec le bouton droit de la souris sur le groupe de processus importé et sélectionnez Start. Le connecteur démarre l’ingestion des données.

Prochaines étapes

  • Pour plus d’informations sur les tâches que vous pouvez effectuer après l’installation du connecteur, voir Utiliser le connecteur

  • Pour plus d’informations sur le suivi du flux, voir Contrôler le flux