Exportar para o Snowflake usando Python
Visão geral
A ferramenta Procore Analytics Cloud Connect Access é uma interface de linha de comando (CLI) que ajuda você a configurar e gerenciar transferências de dados do Procore para o Snowflake.
Consiste em dois componentes principais:
- user_exp.py: Utilitário configuração configuração
- ds_to_snowflake.py: Script de sincronização de dados
Pré-requisitos
- Python está instalado no seu sistema
- Acesso ao compartilhamento Delta do Procore
- Conta Flocos de neve credenciais
- Instale as dependências necessárias usando:
- pip install -r requirements.txt
Passos
- Configuração Inicial
- Sincronização de dados
- Configuração de origem do compartilhamento delta
- Configuração do destino do floco de neve
- Opções de agendamento
- Práticas recomendadas
- Solucionando problemas
Configuração Inicial
Execute o utilitário de configuração usando python user_exp.py.
Sincronização de dados
Após a configuração, você tem duas opções para executar a sincronização de dados:
- Execução Direta:
- ds_to_snowflake.py Python
- Execução Programada
- Se configurado durante configuração, o trabalho será executado automaticamente de acordo com sua programação Cron.
- Para verificar os registros de agendamento, o arquivo 'procore_scheduling.log' será criado assim que o agendamento for configurado.
- Além disso, você pode verificar o agendamento executando o comando terminal:
Para Linux e MacOS:
- Para editar/excluir - edite o cron de agendamento usando:
''Bash
EDITOR=nano crontab -e
``` - Depois de executar o comando acima, você verá algo semelhante a:
2 * * * *
/Usuários/your_user/floco de neve/venv/bin/python
/Usuários/your_user/Flocos de neve/sql_server_python/connection_config.py
2>&1 | durante a linha de leitura; fazer echo "$(date) - $line"; feito>>
/Usuários/your_user/floco de neve/sql_server_python/procore_scheduling.log #procore-data-import - Você também pode ajustar o cron do cronograma ou excluir toda a linha para interrompê-lo em execução por agendamento.
Para Windows:
- Verifique se a tarefa do cronograma foi criada:
```
powershell
schtasks /query /tn "ProcoreDeltaShareScheduling" /fo LIST /v
```
- Para editar/excluir tarefa de agendamento, abra o Agendador de Tarefas.
- Pressione Win + R, digite taskschd.msc, e pressione enter.
- Navegue até as tarefas agendadas.
- No painel esquerdo, expanda a Biblioteca do Agendador de Tarefas.
- Procure a pasta onde sua tarefa foi salva:
Exemplo: Biblioteca do Agendador de Tarefas ou uma pasta personalizada. - Encontre sua tarefa.
- Procure o nome da tarefa: ProcoreDeltaShareScheduling.
- Clique nele para visualizar os detalhes no painel inferior.
- Confira sua programação:
- Verifique a guia Gatilhos para ver quando a tarefa está definida para ser executada.
- Verifique a guia Histórico para confirmar as execuções recentes.
- Para excluir tarefa:
- Exclua a tarefa da GUI.
Configuração de compartilhamento delta
- Criando o arquivo config.share
- Antes de executar o utilitário de configuração, você precisa criar um arquivo config.share com seu Delta Share credenciais. O arquivo deve estar no formato JSON:
{
"shareCredentialsVersion": 1,
"bearerToken": "xxxxxxxxxxxxx",
"ponto de extremidade": "https://nvirginia.nuvem. databricks.c... alojas/xxxxxx"
}
- Campos obrigatórios:
- ShareCredentialsVersion: Número da versão (atualmente 1).
- BearerToken: Seu token de acesso Delta Share.
- Ponto de extremidade: seu endpoint de compartilhamento Delta URL.
- Esses detalhes podem ser obtidos na interface do usuário da Web do Procore.
- Etapas para criar config.share:
- Crie um novo arquivo chamado config.share.
- Copie o modelo JSON acima.
- Substitua os valores de espaço reservado pelo seu credenciais real.
- Salve o arquivo em um local seguro.
- Você precisará fornecer o caminho para esse arquivo durante a configuração. Ao configurar a fonte de dados, você será solicitado a fornecer:
- Lista de tabelas (separadas por vírgula).
- Deixe em branco para sincronizar todas as tabelas.
- Exemplo: tabela1, tabela2, tabela3.
- Caminho para o arquivo config.share .
Configuração do Flocos de Neve
Você precisará fornecer os seguintes detalhes do Flocos de Neve:
- Autenticação (escolha uma):
- Autenticação do usuário
- Nome de usuário
- Senha (digitada com segurança)
- Autenticação do usuário
- Autenticação de par de chaves
- Nome de usuário
- Caminho do arquivo de chave privada
- Senha do arquivo de chave privada
- Detalhes da conexão:
- Identificador da conta
- Nome do armazém
- Nome do banco de dados
- Nome do esquema
- Número de threads simultâneos
Opções de agendamento
A ferramenta oferece a capacidade de agendar a sincronização automática de dados.
- Configuração do trabalho Cron
- Escolher se deseja configurar um trabalho diário
- Se sim, forneça um cronograma cron
- Formato: * * * * * (minuto hora dia-do-mês mês, dia-da-semana)
- Exemplo para diariamente às 2 da manhã: 0 2 * * *
- Execução Imediata
- Opção para executar o ds_to_snowflake.py imediatamente após a configuração
- Estrutura de arquivos
Unset
├── requirements.txt # Dependências
├── user_exp.py # Utilitário de configuração
├── ds_to_snowflake.py # Script de sincronização de dados
├── config.yaml # Configuração gerada
├── config.share # Arquivo de configuração do Delta Share
├── procore_scheduling.log # Log de execuções de agendamento
Exemplo de uso- Etapa 1: Instalar dependências
$ pip instalar -r requirements.txt - Etapa 2: Executar o utilitário de configuração
$ python user_exp.py - Acesso ao Procore Analytics Cloud Connect
- Essa CLI ajudará você a escolher seu armazenamento de origem e destino para acessar/gravar dados do Procore no Snowflake.
- Pressione Enter para continuar.
- Insira a lista de tabelas (separadas por vírgula), deixe-a em branco para todas as tabelas: projetos,usuários,tarefas.
- Digite o caminho para config.share: /caminho/para/config.share.
- Digite o nome de usuário: snowflake_user.
- Qual tipo de autenticação você deseja usar? (usuário/key_pair): Digite.
- 1 para o usuário,
- 2 para o par de chaves:
- 1
- Digite a senha: ********
- Digite a conta: my_account
- Entre no armazém: my_warehouse
- Digite o nome do banco de dados: procore_db
- Digite o nome do esquema: procore_schema
- Digite o número de tópicos: 4
- Você quer configurar isso como um trabalho diário no cron? (Sim/Não): Sim
- Insira o cronograma no formato cron (por exemplo, * * * * * ): 0 2 * * *
- Quer executar o trabalho agora? (Sim/Não): Sim
- Etapa 3: Execução manual (se necessário)
$ python ds_to_snowflake.py
- Etapa 1: Instalar dependências
- Reutilização de configuração
A ferramenta salva sua configuração no arquivo config.yaml e oferece a reutilização de configurações armazenadas anteriormente:- A configuração de origem pode ser reutilizada.
- A configuração de destino (floco de neve) pode ser reutilizada.
- Você pode optar por atualizar qualquer configuração independentemente.
Práticas recomendadas
- Autenticação
- Use a autenticação de par de chaves quando possível.
- Gire regularmente credenciais.
- Use as permissões mínimas necessárias.
- Desempenho
- Ajuste a contagem de threads com base nos recursos do sistema.
- Comece com um subconjunto menor de tabelas para teste.
Solucionando problemas
- Problemas e soluções comuns:
- Tipo de autenticação inválido
- Certifique-se de selecionar '1' (usuário) ou '2' (key_pair) quando solicitado.
- Tipo de autenticação inválido
- Configuração do trabalho Cron
- Verifique se você tem as permissões de sistema adequadas.
- Verifique os logs do sistema se o trabalho não for executado.
- Verifique se o ds_to_snowflake.py tem permissões corretas.
- Verifique o configuração do trabalho cron verificando os logs do sistema:
Consulte o arquivo "procore_scheduling.log ".
- Arquivo de configuração
- Localizado no mesmo diretório que o script,
- Chamado config.yaml.
- Faça backup antes de fazer qualquer alteração.
- Suporte
- Verifique a saída de log do script.
- Revise seu arquivo config.yaml .
- Entre em contato com o administrador do sistema para problemas relacionados à permissão.
- Entre em contato com suporte do Procore para problemas de acesso ao Delta Share.
Nota: Lembre-se de sempre fazer backup de sua configuração antes de fazer alterações e testar novas configurações em um ambiente que não seja de produção primeiro.