Configuração do Snowflake Connector for Google Analytics Raw Data usando SQL¶
O Snowflake Conector para o Google Analytics Raw Data está sujeito aos Termos do conector.
Este tópico fornece informações sobre como configurar o Snowflake Connector for Google Analytics Raw Data pelo SQL.
Nota
A configuração do Snowflake Connector for Google Analytics Raw Data é normalmente realizada por meio do Snowsight. A configuração de SQL é considerada um método de configuração avançado e deve ser usado somente por aqueles familiarizados com os detalhes subjacentes da configuração do conector.
Para configurar o conector usando instruções SQL, faça o seguinte:
Nota
Para provisionar o conector e configurar a conexão, você terá que usar procedimentos armazenados definidos no esquema PUBLIC do banco de dados que serve como instância do banco de dados de instalação do conector.
Antes de chamar esses procedimentos armazenados, selecione esse banco de dados como o banco de dados a ser utilizado para a sessão.
Por exemplo, se esse banco de dados for nomeado snowflake_connector_for_google_analytics_raw_data
, execute o seguinte comando:
USE DATABASE snowflake_connector_for_google_analytics_raw_data;
Preparação de um warehouse, uma função de proprietário de dados e um banco de dados de destino¶
Conceda o uso em permissões especificadas de warehouse e execução de tarefas ao aplicativo do conector.
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;
Crie a função de proprietário de dados.
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;
Crie um banco de dados e um esquema de destino.
Você também pode usar um banco de dados e um esquema de destino existentes, especialmente se estiver reinstalando o conector.
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;
Adicione as concessões necessárias no banco de dados de destino ao aplicativo.
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;
(Opcional) Transferência de propriedade de tabelas e exibições no esquema de destino
Se o conector foi reinstalado e um esquema de destino anterior foi reutilizado, a propriedade de todas as tabelas e exibições no esquema de destino deve ser transferida ao conector. O conector requer privilégio de propriedade para gerenciar concessões em objetos no esquema e recriar exibições niveladas quando o esquema da tabela ingerida for alterado.
Para transferir a propriedade
SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION
, chame a função.USE ROLE accountadmin; CALL SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION(<connector_app>, true, <destination_database>, <destination_schema>);
SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION
é uma função de sistema fornecida pelo Snowflake que permite a transferência de propriedade de tabelas e exibições em um banco de dados ou esquema especificado para o aplicativo. Somente a propriedade de tabelas regulares e exibições comuns é transferida; a propriedade de tabelas dinâmicas, tabelas externas e exibições materializadas, por exemplo, não será transferida.A função possui a seguinte assinatura:
SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION(<to_app>, <should_copy_grants>, <from_database>, <from_schema>)
Onde:
to_app
Especifica o nome do aplicativo para o qual a propriedade dos objetos deve ser transferida.
should_copy_grants
Se
TRUE
, então copie as concessões existentes, caso contrário, revogue. A cópia de subsídios requer a permissãoMANAGE GRANTS
no chamador.from_database
Nome do banco de dados que contém objetos cuja propriedade deve ser alterada.
from_schema
Nome do esquema que contém objetos cuja propriedade deve ser alterada (opcional). Se nenhum esquema for especificado, a propriedade será transferida em tabelas exibições em todos os esquemas no banco de dados fornecido. Objetos em esquemas gerenciados são omitidos durante a transferência de propriedade.
Para executar a função, o chamador deve atender a uma das seguintes condições:
Ter a permissão
MANAGE GRANTS
(por exemplo, função ACCOUNTADMIN ou SECURITYADMIN); ouConter a função proprietária da instância do aplicativo e a função proprietária de todos os objetos para transferir a propriedade. Os objetos cuja propriedade está ausente são omitidos pela função.
Por exemplo, para transferir a propriedade ao conector que:
Foi instalado como
snowflake_connector_for_google_analytics_raw_data
Usa o esquema nomeado
dest_db.dest_schema
para os dados do Google Analytics no Snowflake
Execute o seguinte comando:
USE ROLE accountadmin; CALL SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION('snowflake_connector_for_google_analytics_raw_data', true, 'dest_db', 'dest_schema');
Se necessário, conceda a função de aplicativo
DATA_READER
para a função que anteriormente possuía os dados para evitar interrupções de pipelines existentes que usam os dados:GRANT APPLICATION ROLE <connector_app>.DATA_READER TO ROLE <previous_data_owner_role>;
Observe que a função de aplicativo
DATA_READER
não terá nenhuma concessão em tabelas e exibições no esquema de destino até que o procedimentoPROVISION_CONNECTOR
seja executado.
Provisionamento do conector¶
Chame o procedimento
PROVISION_CONNECTOR
.Passe o nome do warehouse, do banco de dados e do esquema de destino e da função do proprietário dos dados. Esses valores diferenciam maiúsculas de minúsculas.
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' );
Crie objetos Snowflake necessários para conectar-se ao GCP¶
Crie uma integração de segurança para sua conta de serviço.
Primeiro, você precisa de um arquivo de chave da conta de serviço. Para obter detalhes sobre como criar um, consulte Configuração da autenticação da conta de serviço para 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>';
Crie um segredo usando a integração de segurança.
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;
Forneça concessões relacionadas a segredos ao aplicativo do conector.
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;
Configure o acesso externo.
Lembre-se de que o caminho para o segredo passado para
allowed_authentication_secrets
diferencia maiúsculas de minúsculas.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;
Configuração da conexão com o GCP¶
Chame o procedimento
CONFIGURE_CONNECTION
.Passe o nome da integração de acesso externo, o caminho completo para o segredo e o nome da integração de segurança. Esses valores diferenciam maiúsculas de minúsculas.
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' );
Verifique o status da conexão.
CALL CONNECTION_STATUS();
Se não houver erros, você pode seguir Configuração da ingestão de dados para seu Snowflake Connector for Google Analytics Raw Data para ativar suas propriedades do Google Analytics.