Procedimentos armazenados para manutenção diária¶
Introdução¶
O Snowflake Connector for Google Analytics Aggregate Data fornece vários procedimentos armazenados que permitem gerenciar programaticamente a ingestão de dados e a configuração do conector. Abaixo estão detalhes sobre cada procedimento armazenado, incluindo seu uso, parâmetros e exemplos.
Configuração de um novo relatório¶
O procedimento CONFIGURE_REPORT
configura um novo relatório para ingestão de dados do Google Analytics 4 (GA4) no Snowflake. Esse procedimento usa os parâmetros do relatório como entrada, incluindo dimensões, métricas e cronograma de ingestão.
CALL CONFIGURE_REPORT( <report_name>, <property_id>, <dimensions>, <metrics>, <start_date>, <refresh_interval>[, <keep_empty_rows>][, <avoid_sampling>]);
Onde:
report_name
Uma cadeia de caracteres que especifica o nome do relatório a ser configurado. Esse nome será usado como prefixo para as tabelas com dados brutos criadas no banco de dados de destino. Após a ingestão inicial, o nome do relatório será usado para as exibições criadas no banco de dados de destino. Obrigatório.
- O nome do relatório deve:
começar com uma letra (maiúscula ou minúscula) ou um sublinhado.
continuar com um ou mais caracteres que podem ser letras (maiúsculas ou minúsculas), dígitos ou sublinhados.
ter 150 caracteres ou menos.
property_id
Uma cadeia de caracteres que especifica o ID da propriedade do Google Analytics 4 a ser usado para o relatório. O ID da propriedade é um número que pode ser obtido da conta do GA4. Certifique-se de que o PROPERTY_ID corresponde a uma propriedade do GA4 que possa ser acessada pelo método de autenticação dos conectores (oauth2 ou conta de serviço). Obrigatório.
dimensions
Uma lista separada por vírgulas com as dimensões do GA4 a serem incluídas no relatório. As dimensões devem ser separadas por vírgulas. Se a dimensão
date
não for especificada de forma explícita, ela será adicionada automaticamente. No máximo nove dimensões podem ser especificadas (incluindodate
). Obrigatório.Exemplo:
'country,city,deviceCategory,sessions'
metrics
Uma lista separada por vírgulas com métricas do GA4 a serem incluídas no relatório. É necessária pelo menos uma métrica, e é possível ter no máximo dez métricas. Obrigatório.
Exemplo:
'sessions,pageViews'.
start_date
Uma cadeia de caracteres que especifica a data de início do relatório. A data deve estar no formato
YYYY-MM-DD
. Os dados a partir dessa data serão ingeridos. Obrigatório.refresh_interval
Uma cadeia de caracteres que especifica o intervalo de atualização do relatório. Obrigatório. O intervalo deve ter um dos seguintes formatos:
'EVERY <número de minutos> MINUTE'
'EVERY <número de horas> HOUR'
'EVERY <número de dias> DAY'
keep_empty_rows
Opcional. O valor padrão é
false
. Setrue
, a tabela de saída incluirá registros com combinações de dimensões em que todas as métricas são zero. Serve para analisar combinações de dimensões sem eventos.avoid_sampling
Opcional. O valor padrão é
false
. Setrue
, o conector poderá ajustar a maneira de buscar os dados da API GA4 para tentar evitar a amostragem de dados. Pode melhorar a precisão dos dados, mas também aumentar a frequência de chamadas da API.Nota
Não há garantia de que os dados não serão amostrados. O conector tentará evitar a amostragem, mas talvez isso não seja possível em todos os casos. Isso se deve às limitações da API GA4.
Exemplo:
CALL CONFIGURE_REPORT( REPORT_NAME => 'USER_ENGAGEMENT_REPORT', PROPERTY_ID => '123456789', DIMENSIONS => 'country,deviceCategory', METRICS => 'activeUsers,newUsers', START_DATE => '2023-01-01', REFRESH_INTERVAL => 'EVERY 1 DAY', KEEP_EMPTY_ROWS => TRUE, AVOID_SAMPLING => TRUE );
Remoção de relatório existente¶
O procedimento DELETE_REPORT
exclui a configuração de um relatório existente do conector, interrompendo qualquer outra ingestão de dados desse relatório. Os dados que já foram ingeridos não serão removidos.
CALL DELETE_REPORT( <report_name> );
Onde:
report_name
Uma cadeia de caracteres que especifica o nome do relatório a ser excluído. Deve corresponder ao REPORT_NAME usado em CONFIGURE_REPORT. Obrigatório.
Exemplo:
CALL DELETE_REPORT('USER_ENGAGEMENT_REPORT');
Listagem de propriedades da conta do Google Analytics 4¶
O procedimento GET_PROPERTIES
retorna uma lista com todas as propriedades do Google Analytics 4 disponíveis para serem ingeridas pelo conector.
CALL GET_PROPERTIES();
Exemplo de saída do procedimento:
{[ { "propertyName": "test1", "propertyId": "1" }, { "propertyName": "test2", "propertyId": "2" }, { "propertyName": "test3", "propertyId": "3" } ]}Nota
O conector deve ter as permissões necessárias para acessar as propriedades. Se um resultado estiver vazio, verifique os direitos de acesso no GA4.
Busca de dimensões e métricas para uma propriedade doGA4¶
O procedimento GET_DIMENSIONS_AND_METRICS
recupera a lista de dimensões e métricas disponíveis para uma determinada propriedade do GA4.
CALL GET_DIMENSIONS_AND_METRICS( <property_id> );
Onde:
property_id
Uma cadeia de caracteres que especifica o ID da propriedade do Google Analytics 4 a ser usado para o relatório. O ID da propriedade é um número que pode ser obtido da conta do GA4. Certifique-se de que o
property_id
corresponde a uma propriedade do GA4 que possa ser acessada pelo método de autenticação dos conectores (oauth2 ou conta de serviço). Obrigatório.Exemplo:
CALL GET_DIMENSIONS_AND_METRICS('123456789');Exemplo de saída do procedimento:
{ "dimensions": [ { "dimension": "achievementId", "category": "Other", "description": "Some description." } ], "metrics": [ { "metric": "active1DayUsers", "category": "User", "description": "Some description." }, { "metric": "active28DayUsers", "category": "User", "description": "Some description." } ] }Nota
As dimensões e métricas disponíveis para cada propriedade podem variar.
Pausa do conector¶
O procedimento PAUSE_CONNECTOR
pausa o conector, interrompendo toda a ingestão e o processamento de dados.
CALL PAUSE_CONNECTOR();Nota
A pausa do conector interrompe a ingestão de dados de todos os relatórios configurados.
A ingestão de dados pode ser retomada usando RESUME_CONNECTOR.
Os dados existentes permanecem acessíveis durante a pausa.
Retomada do conector¶
O procedimento RESUME_CONNECTOR
retoma o conector, iniciando toda a ingestão e o processamento de dados que foram pausados anteriormente. A ingestão de dados continuará do ponto em que parou.
CALL RESUME_CONNECTOR();
Ingestão sob demanda¶
O procedimento INGEST_NOW
agenda a ingestão de dados para o relatório especificado no conector. Esse procedimento pode ser usado para iniciar manualmente a ingestão de dados para um relatório específico fora dos intervalos programados.
Nota
O procedimento agenda a ingestão imediata para o relatório especificado usando
EXECUTE TASK ...
. Isso significa que a ingestão começará o mais rápido possível, mas pode não ser instantânea, especialmente se o mesmo relatório já estiver sendo ingerido. Certifique-se de que o conector não esteja pausado antes de chamar esse procedimento.CALL INGEST_NOW('<report_name>');
Onde:
report_name
Uma cadeia de caracteres que especifica o nome do relatório a ser ingerido. Deve corresponder ao REPORT_NAME usado em CONFIGURE_REPORT. Obrigatório.
Exemplo:
CALL INGEST_NOW('USER_ENGAGEMENT_REPORT');
Como saber o status atual do conector¶
Nota
No contexto deste documento, o
state
e ostatus
do conector são usados de forma intercambiável. O status/estado do conector pode ser recuperado usando o procedimentoGET_CONNECTOR_STATUS
.CALL GET_CONNECTOR_STATUS();Exemplo de saída do procedimento:
{ "response_code": "OK", "status": "STARTED", "configurationStatus": "PREREQUISITES_DONE" }
Ele retorna um objeto JSON com os seguintes campos:
response_code
: se o procedimento foi executado com sucesso, o valor OK é retornado. Códigos de resposta diferentes de OK indicam um erro.status
: o status atual do conector. Esse status pode mudar somente quando você re/instalar, pausar, retomar o conector ou finalizar o processo de configuração. Ele pode ter um dos seguintes valores:CONFIGURING
: é o estado padrão definido após a instalação do conector a partir da listagem ou pacote do aplicativo. O conector permanece nesse estado até que o processo de configuração seja finalizado. Após a finalização da configuração, o conector passa para o estado STARTED.STARTED
: quando o conector estiver totalmente configurado ou retomado, ele fará a transição para o estado STARTED.PAUSED
: quando o conector é pausado com sucesso, ele passa para o estado PAUSED.ERROR
: se o conector encontrar um erro irreversível, ele fará a transição para o estado ERROR, indicando que não pode ser usado ativamente. Quando estiver nesse estado, o procedimentoRECOVER_CONNECTOR_STATE
poderá ser usado para fazer a transição para um estado válido.
configurationStatus
: é um substatus do status principalCONFIGURING
. O processo de configuração do conector é dividido em poucas etapas que estão sendo rastreadas por esse substatus. Ele pode ter um dos seguintes valores:INSTALLED
: a configuração começa no estado INSTALLED após a criação da instância do conector.PREREQUISITES_DONE
: depois que o usuário conclui os pré-requisitos e chama o procedimentoMARK_ALL_PREREQUISITES_AS_DONE
, em que a configuração passa para o estado PREREQUISITES_DONE. Os pré-requisitos são etapas manuais que precisam ser executadas pelo usuário, como configurar a conexão a fontes de dados de terceiros ou criar banco de dados de destino.CONFIGURED
: o procedimentoCONFIGURE_CONNECTOR(VARIANT)
foi chamado.CONNECTED
: o procedimentoSET_CONNECTION_CONFIGURATION(VARIANT)
foi chamado.FINALIZED
: por fim, após completar a configuração, ela passa para o estado FINALIZED (o procedimentoFINALIZE_CONNECTOR_CONFIGURATION(VARIANT)
foi chamado).
Reinicialização do processo de configuração¶
O procedimento armazenado RESET_CONFIGURATION
redefine a configuração do conector para seu estado padrão. Esse procedimento pode ser usado para redefinir a configuração do conector antes que ela seja finalizada. Para que o procedimento funcione, o conector deve ter o status CONFIGURING
. Para saber mais sobre os status principais do conector e os substatus de configuração, consulte Como saber o status atual do conector.
Se a fase de configuração for concluída (FINALIZED), esse procedimento retornará um erro.
CALL RESET_CONFIGURATION();
Recuperação de um estado intermediário ou incorreto¶
O procedimento RECOVER_CONNECTOR_STATE
serve para recuperar o conector quando ele está preso em um estado intermediário ou de erro (ERROR
, STARTING
, PAUSING
), configurando manualmente o status para STARTED
ou PAUSED
. Algumas operações podem deixar o conector em um estado inconsistente por vários motivos. Por exemplo, quando o usuário descarta permissões para determinados objetos de banco de dados de que o conector precisa.
O procedimento retornará um erro se o novo estado não for válido ou se o conector não estiver em um dos estados predeterminados. As seguintes transições são permitidas:
ERROR -> PAUSED
ERROR -> STARTED
PAUSING -> PAUSED
PAUSING -> STARTED
STARTING -> PAUSED
STARTING -> STARTED
CALL RECOVER_CONNECTOR_STATE('<new_state>');
Onde:
new_state
Uma cadeia de caracteres que especifica o novo estado do conector. O estado deve ser
STARTED
ouPAUSED
. Obrigatório.Exemplo:
CALL RECOVER_CONNECTOR_STATE('STARTED');
Recuperação de relatórios após o descarte de um conector¶
O procedimento IMPORT_STATE
é usado para recuperar relatórios configurados e o histórico de ingestão após a desinstalação do conector. Esse procedimento deve ser feito depois que o conector for reinstalado e o novo conector for configurado. Ele serve para usar o mesmo banco de dados que foi usado pelo conector desinstalado. O estado que está sendo importado está localizado no banco de dados de destino usado pela instância anterior do conector, na forma de tabelas com o sufixo SFSDKEXPORT
. Para saber mais sobre o processo, leia o guia Recuperação em caso de desastre. O procedimento não substituirá o estado existente no conector se detectar que o estado não é novo, a menos que o parâmetro force
seja definido como true
. O estado novo é aquele logo após o processo de configuração ser finalizado e nenhum relatório ser configurado. Se os relatórios foram configurados, mas excluídos posteriormente, o estado também será considerado como não novo.
Nota
Esse procedimento não funciona quando o conector tiver sido desinstalado (descartado) usando a opção
CASCADE
.CALL IMPORT_STATE([force]);
Onde:
force
Opcional. O valor padrão é
false
. Setrue
, o procedimento substituirá o estado existente no conector. Inclusive qualquer relatório que já tenha sido configurado. Sefalse
, o procedimento retornará um erro se detectar que o estado não é novo.Exemplo:
CALL IMPORT_STATE();