Configuration de Snowflake Connector for Google Analytics Raw Data à l’aide de SQL

Snowflake Connector for Google Analytics Raw Data est soumis aux Conditions de connecteur.

Cette rubrique fournit des informations sur la configuration de Snowflake Connector for Google Analytics Raw Data via SQL.

Note

La configuration de Snowflake Connector for Google Analytics Raw Data s’effectue généralement à l’aide de Snowsight. La configuration SQL est considérée comme une méthode de configuration avancée et ne doit être utilisée que par des personnes familiarisées avec les détails sous-jacents de la configuration du connecteur.

Pour configurer le connecteur à l’aide d’instructions SQL, procédez comme suit :

Note

Afin de provisionner le connecteur et de configurer la connexion, vous devrez utiliser des procédures stockées qui sont définies dans le schéma PUBLIC de la base de données qui sert d’instance de la base de données d’installation du connecteur.

Avant d’appeler ces procédures stockées, sélectionnez cette base de données comme base de données à utiliser pour la session.

Par exemple, si la base de données s’appelle snowflake_connector_for_google_analytics_raw_data, exécutez la commande suivante :

USE DATABASE snowflake_connector_for_google_analytics_raw_data;
Copy

Préparation d’un entrepôt, d’un rôle de propriétaire de données et d’une base de données de destination

  1. Accordez à l’application du connecteur le droit d’utiliser l’entrepôt spécifié et d’exécuter des tâches.

    USE ROLE accountadmin;
    CREATE WAREHOUSE google_analytics_raw_data_warehouse with warehouse_size = 'X-Small';
    GRANT USAGE ON WAREHOUSE google_analytics_raw_data_warehouse TO APPLICATION snowflake_connector_for_google_analytics_raw_data;
    GRANT EXECUTE TASK ON ACCOUNT TO APPLICATION snowflake_connector_for_google_analytics_raw_data;
    GRANT EXECUTE MANAGED TASK ON ACCOUNT TO APPLICATION snowflake_connector_for_google_analytics_raw_data;
    
    Copy
  2. Créez le rôle de propriétaire de données.

    USE ROLE accountadmin;
    CREATE OR REPLACE ROLE google_analytics_raw_data_resources_provider;
    GRANT CREATE DATABASE ON ACCOUNT TO ROLE google_analytics_raw_data_resources_provider;
    GRANT USAGE ON WAREHOUSE google_analytics_raw_data_warehouse TO ROLE google_analytics_raw_data_resources_provider;
    GRANT ROLE google_analytics_raw_data_resources_provider TO USER ADMIN;
    
    Copy
  3. Créez une base de données et un schéma de destination.

    Vous pouvez également utiliser une base de données et un schéma de destination existants, en particulier si vous réinstallez le connecteur.

    USE ROLE google_analytics_raw_data_resources_provider;
    CREATE DATABASE google_analytics_raw_data_dest_db;
    CREATE SCHEMA google_analytics_raw_data_dest_db.google_analytics_raw_data_dest_schema;
    
    Copy
  4. Ajoutez à l’application les droits nécessaires sur la base de données de destination.

    USE ROLE accountadmin;
    GRANT USAGE ON DATABASE google_analytics_raw_data_dest_db TO APPLICATION snowflake_connector_for_google_analytics_raw_data;
    GRANT USAGE ON SCHEMA google_analytics_raw_data_dest_db.google_analytics_raw_data_dest_schema TO APPLICATION snowflake_connector_for_google_analytics_raw_data;
    
    GRANT CREATE TABLE ON SCHEMA google_analytics_raw_data_dest_db.google_analytics_raw_data_dest_schema TO APPLICATION snowflake_connector_for_google_analytics_raw_data;
    GRANT CREATE VIEW ON SCHEMA google_analytics_raw_data_dest_db.google_analytics_raw_data_dest_schema TO APPLICATION snowflake_connector_for_google_analytics_raw_data;
    
    Copy
  5. (Facultatif) Transférer la possession des tables et des vues dans le schéma de destination

    Si le connecteur a été réinstallé et qu’un schéma de destination précédent est réutilisé, la possession de toutes les tables et vues du schéma de destination doit être transférée au connecteur. Le connecteur nécessite un privilège de possession pour gérer les droits sur les objets du schéma et pour recréer les vues aplaties lorsque le schéma de la table ingérée est modifié.

    Pour transférer la possession, appelez la fonction SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION.

    USE ROLE accountadmin;
    CALL SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION(<connector_app>, true, <destination_database>, <destination_schema>);
    
    Copy

    SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION est une fonction système fournie par Snowflake qui permet de transférer à l’application la possession des tables et des vues d’une base de données ou d’un schéma spécifié. Seule la possession des tables et des vues normales est transférée, c’est-à-dire que les tables dynamiques, les tables externes, les vues matérialisées, etc., ne changeront pas de propriétaire.

    Cette fonction présente la signature suivante :

    SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION(<to_app>, <should_copy_grants>, <from_database>, <from_schema>)
    
    Copy

    Où :

    to_app

    Spécifie le nom de l’application à laquelle la possession des objets doit être transférée.

    should_copy_grants

    Si TRUE, copiez les droits existants ; sinon, révoquez-les. La copie des droits nécessite l’autorisation MANAGE GRANTS sur l’appelant.

    from_database

    Nom de la base de données contenant les objets qui doivent changer de propriétaire.

    from_schema

    (Facultatif) Nom du schéma contenant les objets qui doivent changer de propriétaire. Si aucun schéma n’est spécifié, la possession est transférée sur les tables et les vues de tous les schémas de la base de données fournie. Les objets des schémas gérés sont omis lors du transfert de possession.

    Pour exécuter la fonction, l’appelant doit remplir l’une des conditions suivantes :

    • Disposer de l’autorisation MANAGE GRANTS (par exemple, du rôle ACCOUNTADMIN ou SECURITYADMIN), ou

    • Contenir le rôle de propriétaire de l’instance d’application et le rôle de propriétaire de tous les objets afin de transférer la possession. Les objets sans propriétaire sont omis par la fonction.

    Par exemple, pour transférer la possession au connecteur qui :

    • A été installé comme snowflake_connector_for_google_analytics_raw_data

    • Utilise le schéma nommé dest_db.dest_schema pour les données Google Analytics dans Snowflake

    Exécutez la commande suivante :

    USE ROLE accountadmin;
    CALL SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION('snowflake_connector_for_google_analytics_raw_data', true, 'dest_db', 'dest_schema');
    
    Copy

    Si nécessaire, accordez le rôle d’application DATA_READER au rôle précédemment propriétaire des données afin d’éviter toute perturbation des pipelines existants qui utilisent les données :

    GRANT APPLICATION ROLE <connector_app>.DATA_READER TO ROLE <previous_data_owner_role>;
    
    Copy

    Notez que le rôle d’application DATA_READER n’aura aucun droit sur les tables et les vues du schéma de destination tant que la procédure PROVISION_CONNECTOR n’aura pas été exécutée.

Provisionnement du connecteur

  1. Appelez la procédure PROVISION_CONNECTOR.

    Indiquez le nom de l’entrepôt, de la base de données et du schéma de destination ainsi que du rôle de propriétaire de données. Ces valeurs sont sensibles à la casse.

    CALL PROVISION_CONNECTOR(
        'GOOGLE_ANALYTICS_RAW_DATA_WAREHOUSE',
        'GOOGLE_ANALYTICS_RAW_DATA_DEST_DB.GOOGLE_ANALYTICS_RAW_DATA_DEST_SCHEMA',
        'GOOGLE_ANALYTICS_RAW_DATA_RESOURCES_PROVIDER'
    );
    
    Copy

Créez les objets Snowflake nécessaires à la connexion au GCP.

  1. Créez une intégration de sécurité pour votre compte de service.

    Tout d’abord, vous avez besoin d’un fichier de clé de compte de service. Pour des informations détaillées sur sa création, voir Configuration de l’authentification du compte de service de Google Cloud Platform (GCP)

    CREATE SECURITY INTEGRATION
    google_analytics_raw_data_security_integration
    type = api_authentication
    auth_type = oauth2
    oauth_client_id = '<value of client_id from the JSON key file>'
    oauth_token_endpoint = 'https://oauth2.googleapis.com/token'
    enabled = true
    oauth_allowed_scopes = (
        'https://www.googleapis.com/auth/bigquery.readonly',
        'https://www.googleapis.com/auth/cloudplatformprojects.readonly'
    )
    oauth_assertion_issuer = '<value of client_email from the JSON key file>'
    oauth_grant='JWT_BEARER'
    oauth_client_secret = '<value of private_key from the JSON key file with no delimiters or newlines>';
    
    Copy
  2. Créez un secret à l’aide de l’intégration de sécurité.

    CREATE DATABASE google_analytics_raw_data_connector_secret;
    CREATE SCHEMA google_analytics_raw_data_connector_secret.oauth;
    
    USE SCHEMA google_analytics_raw_data_connector_secret.oauth;
    
    CREATE OR REPLACE SECRET google_analytics_raw_data
    type = oauth2
    api_authentication = google_analytics_raw_data_security_integration;
    
    Copy
  3. Accordez à l’application du connecteur les droits associés au secret.

    GRANT USAGE ON DATABASE google_analytics_raw_data_connector_secret TO APPLICATION snowflake_connector_for_google_analytics_raw_data;
    GRANT USAGE ON SCHEMA google_analytics_raw_data_connector_secret.oauth TO APPLICATION snowflake_connector_for_google_analytics_raw_data;
    GRANT READ ON SECRET google_analytics_raw_data_connector_secret.oauth.google_analytics_raw_data TO APPLICATION snowflake_connector_for_google_analytics_raw_data;
    
    Copy
  4. Configurez l’accès externe.

    N’oubliez pas que le chemin d’accès au secret transmis à allowed_authentication_secrets est sensible à la casse.

    USE SCHEMA google_analytics_raw_data_connector_secret.oauth;
    
    CREATE NETWORK RULE
    google_analytics_raw_data_allow_rule
    mode = EGRESS
    type = HOST_PORT
    value_list = (
        'www.googleapis.com',
        'bigquery.googleapis.com',
        'bigquerystorage.googleapis.com',
        'cloudresourcemanager.googleapis.com',
        'oauth2.googleapis.com'
    );
    
    CREATE EXTERNAL ACCESS INTEGRATION
    google_analytics_raw_data_external_access_integration
    allowed_network_rules = (google_analytics_raw_data_allow_rule)
    allowed_authentication_secrets = ('GOOGLE_ANALYTICS_RAW_DATA_CONNECTOR_SECRET.OAUTH.GOOGLE_ANALYTICS_RAW_DATA')
    enabled = true;
    
    GRANT USAGE ON INTEGRATION google_analytics_raw_data_external_access_integration TO APPLICATION snowflake_connector_for_google_analytics_raw_data;
    
    Copy

Configuration de la connexion au GCP

  1. Appelez la procédure CONFIGURE_CONNECTION.

    Transmettez le nom de l’intégration d’accès externe, le chemin d’accès complet au secret et le nom de l’intégration de sécurité. Ces valeurs sont sensibles à la casse.

    CALL CONFIGURE_CONNECTION(
        'GOOGLE_ANALYTICS_RAW_DATA_EXTERNAL_ACCESS_INTEGRATION',
        'GOOGLE_ANALYTICS_RAW_DATA_CONNECTOR_SECRET.OAUTH.GOOGLE_ANALYTICS_RAW_DATA',
        'GOOGLE_ANALYTICS_RAW_DATA_SECURITY_INTEGRATION'
    );
    
    Copy
  2. Vérifiez le statut de la connexion.

    CALL CONNECTION_STATUS();
    
    Copy

    S’il n’y a pas d’erreurs, vous pouvez suivre la procédure Configuration de l’ingestion de données pour votre Snowflake Connector for Google Analytics Raw Data pour activer vos propriétés Google Analytics.