使用 SQL 配置 Snowflake Connector for Google Analytics Raw Data¶
使用 Snowflake Connector for Google Analytics Raw Data 需遵守 连接器条款。
本主题提供通过 SQL 配置 Snowflake Connector for Google Analytics Raw Data 的信息。
备注
Snowflake Connector for Google Analytics Raw Data 通常使用 Snowsight 进行配置。SQL 配置被认为是一种高级配置方法,只有熟悉连接器配置底层细节的人才能使用。
要使用SQL 语句配置连接器,请执行以下步骤:
备注
为了预置连接器和配置连接,您必须使用在作为连接器安装数据库实例的数据库的 PUBLIC 架构中定义的存储过程。
在调用这些存储过程之前,选择该数据库作为会话使用的数据库。
例如,如果该数据库名为 snowflake_connector_for_google_analytics_raw_data
,请运行以下命令:
USE DATABASE snowflake_connector_for_google_analytics_raw_data;
准备好仓库、数据所有者角色和目标数据库¶
向连接器应用程序授予指定仓库的使用权和任务执行权限。
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;
创建数据所有者角色。
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;
创建目标数据库和架构。
您也可以使用现有的目标数据库和架构,尤其是在重新安装连接器的情况下。
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;
向应用程序添加对目标数据库的必需授权。
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;
(可选)在目标架构中转移表和视图的所有权
如果重新安装了连接器,并且重复使用了以前的目标架构,则必须将目标架构中所有表和视图的所有权转移到连接器。连接器需要所有权权限才能管理对架构中对象的授权,并在引入表的架构发生更改时重新创建扁平化视图。
要转让所有权,请调用
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
是 Snowflake 提供的一种系统函数,它允许将指定数据库或架构中的表和视图的所有权转移给应用程序。只会转移常规表和常规视图的所有权,例如不会转移动态表、外部表、物化视图等的所有权。该函数具有以下签名:
SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION(<to_app>, <should_copy_grants>, <from_database>, <from_schema>)
其中:
to_app
指定应向其转移对象所有权的应用程序的名称。
should_copy_grants
如果为
TRUE
,则复制现有授权,否则撤销。复制授权要求调用方具有MANAGE GRANTS
权限。from_database
包含应更改其所有权的对象的数据库的名称。
from_schema
(可选)包含应更改其所有权的对象的架构的名称。如未指定架构,则在所提供的数据库中的所有架构中的表和视图上转移所有权。托管架构中的对象在所有权转移期间会被省略。
要执行该函数,调用方须满足以下条件之一:
它具有
MANAGE GRANTS
权限(例如 ACCOUNTADMIN 或 SECURITYADMIN 角色),或者它包含拥有应用程序实例的角色和拥有所有对象的角色,以便转移所有权。缺少所有权的对象将被函数省略。
例如,转移以下连接器的所有权时:
作为
snowflake_connector_for_google_analytics_raw_data
安装为 Snowflake 中的 Google Analytics 数据使用名称为
dest_db.dest_schema
的架构
运行以下命令:
USE ROLE accountadmin; CALL SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION('snowflake_connector_for_google_analytics_raw_data', true, 'dest_db', 'dest_schema');
如果需要,请将
DATA_READER
应用程序角色授予先前拥有数据的角色,以使用数据防止现有管道中断:GRANT APPLICATION ROLE <connector_app>.DATA_READER TO ROLE <previous_data_owner_role>;
请注意,在
PROVISION_CONNECTOR
过程运行之前,DATA_READER
应用程序角色在目标架构中的表和视图上不会获得任何授权。
预置连接器¶
调用
PROVISION_CONNECTOR
过程。传递仓库名称、目标数据库和架构以及数据所有者角色。这些值区分大小写。
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' );
创建连接到 GCP 所需的 Snowflake 对象¶
为服务账户创建安全集成。
首先,您需要服务账户密钥文件。有关如何创建此文件的详细信息,请参阅 为 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>';
使用安全集成创建一个密钥。
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;
向连接器应用程序提供与密钥相关的授权。
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;
配置外部访问。
请记住,传给
allowed_authentication_secrets
的密钥路径是区分大小写的。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;
配置与 GCP 的连接¶
调用
CONFIGURE_CONNECTION
过程。传入外部访问集成的名称、密钥的完整路径和安全集成的名称。这些值区分大小写。
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' );
检查连接状态。
CALL CONNECTION_STATUS();
如果没有错误,您可以按照 为 Snowflake Connector for Google Analytics Raw Data 设置数据引入 所述启用 Google Analytics 属性。