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 :
Préparez un entrepôt, un rôle de propriétaire de données et une base de données de destination.
Créez les objets Snowflake nécessaires à la connexion au GCP.
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;
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¶
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;
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;
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;
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;
(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>);
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>)
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’autorisationMANAGE 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), ouContenir 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');
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>;
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édurePROVISION_CONNECTOR
n’aura pas été exécutée.
Provisionnement du connecteur¶
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' );
Créez les objets Snowflake nécessaires à la connexion au GCP.¶
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>';
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;
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;
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;
Configuration de la connexion au GCP¶
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' );
Vérifiez le statut de la connexion.
CALL CONNECTION_STATUS();
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.