Saltar al contenido principal
Procore

Exportar a Snowflake usando Python

Descripción general

La herramienta Procore Analytics Nube Connect Access es una interfaz de línea de comandos (CLI) que lo ayuda a configurar y administrar las transferencias de datos de Procore a Snowflake.

Consta de dos componentes principales: 

  • user_exp.py: Utilidad de configuración
  • ds_to_snowflake.py: Script de sincronización de datos

Requisitos previos

  • Python está instalado en su sistema 
  • Acceso a Procore Delta Share
  • Credenciales de la cuenta de Snowflake 
  • Instale las dependencias necesarias mediante:
    • pip install -r requirements.txt 

Pasos

Configuración inicial

Ejecute la utilidad de configuración usando python user_exp.py.

Sincronización de datos

Después de la configuración, tiene dos opciones para ejecutar la sincronización de datos: 

  • Ejecución directa:
    • Python ds_to_snowflake.py
  • Ejecución programada
    • Si se configura durante la configuración, el trabajo se ejecutará automáticamente de acuerdo con su programa Cron.
    • Para verificar los registros de programación, el archivo 'procore_scheduling.log' se creará tan pronto como se configure la programación.
    • Además, puede verificar la programación ejecutando el comando en la terminal:

Para Linux y MacOS:

  • Para editar/eliminar - edite el cron de programación usando:

    '''bash

    EDITOR=nano crontab -e

    ```

  • Después de ejecutar el comando anterior, debería ver algo similar a:

    2 * * * *
    /usuarios/your_user/copo de nieve/venv/bin/python

     
    /usuarios/your_user/copo de nieve/sql_server_python/connection_config.py
    2> y 1 | mientras se lee la línea; do echo "$(fecha) - $line"; ¡Listo>>

     
    /usuarios/your_user/copo de nieve/sql_server_python/procore_scheduling.log # procore-data-import 

     
  • También puede ajustar el cron de programación o eliminar toda la línea para que deje de ejecutarse según el programa.

Para Windows:

  • Compruebe que se ha creado la tarea de programa: 

    ```
        PowerShell 

        schtasks /query /tn "ProcoreDeltaShareScheduling" /fo LIST /v 

    ``` 

  • Para editar/eliminar la tarea de programación, abra el Programador de tareas.
  • Presione Win + R, escriba taskschd.msc, y presione ENTER. 
  • Navegue hasta las tareas programadas. 
  • En el panel izquierdo, expanda la Biblioteca del programador de tareas. 
  • Busque la carpeta donde está guardada su tarea:
    Ejemplo: Biblioteca del programador de tareas o una carpeta personalizada.
  • Encuentre su tarea.
  • Busque el nombre de la tarea: ProcoreDeltaShareScheduling
  • Haga clic en él para ver los detalles en el panel inferior. 
  • Verifica su horario: 
    • Compruebe la pestaña Desencadenadores para ver cuándo está configurada la tarea para ejecutarse. 
    • Compruebe la pestaña Historial para confirmar las ejecuciones recientes. 
  • Para eliminar la tarea: 
    • Eliminar tarea de la GUI.

Configuración de recursos compartidos delta

  • Creación del archivo config.share 
  • Antes de ejecutar la utilidad de configuración, debe crear un archivo config.share con sus credenciales de Delta Share. El archivo debe estar en formato JSON: 

    "shareCredentialsVersion": 1, 
    "bearerToken": "xxxxxxxxxxxxx", 
    "endpoint": "[1]"

     

  • Campos obligatorios: 
    • ShareCredentialsVersion: número de versión (actualmente 1). 
    • BearerToken: Su token de acceso a Delta Share.
    • Punto de conexión: la URL del punto de conexión de Delta Share.
    • Estos detalles se pueden obtener en la interfaz de usuario web de Procore.
  • Pasos para crear config.share: 
    • Cree un nuevo archivo llamado config.share.
    • Copie la plantilla JSON anterior. 
    • Reemplace los valores de marcador de posición por sus credenciales reales. 
    • Guarde el archivo en un lugar seguro. 
    • Deberá proporcionar la ruta de acceso a este archivo durante la configuración. Al configurar la fuente de datos, se le pedirá que proporcione:
      • Lista de tablas (separadas por comas).
      • Dejar en blanco para sincronizar todas las tablas.
      • Ejemplo: tabla1, tabla2, tabla3.
  • Ruta de acceso al archivo config.share .

Configuración de copo de nieve

Deberá proporcionar los siguientes detalles de Snowflake:

  • Autenticación (elija una): 
    • Autenticación de usuario 
      • Nombre de usuario 
      • Contraseña (ingresada de forma segura) 
  • Autenticación de par de claves
    • Nombre de usuario 
    • Ruta del archivo de clave privada
    • Contraseña del archivo de clave privada 
  • Detalles de la conexión: 
    • Identificador de cuenta 
    • Nombre del almacén 
    • Nombre de la base de datos 
    • Nombre del esquema 
    • Número de subprocesos simultáneos 

Opciones de programación

La herramienta ofrece la posibilidad de programar la sincronización automática de datos.

  • Configuración de Cron Job 
    • Elegir si desea configurar un trabajo diario 
    • En caso afirmativo, proporcione un cron schedule 
    • Formato: * * * * * (minuto, hora, día del mes, mes, día de la semana)
    • Ejemplo para todos los días a las 2 a.m.: 0 2 * * * 
  • Ejecución inmediata 
    • Opción para ejecutar el ds_to_snowflake.py inmediatamente después de la configuración  
  • Estructura de archivos

    Unset 
    ├── requirements.txt                    # Dependencias 
    ├── user_exp.py                                # Utilidad de configuración
    ├── ds_to_snowflake.py                # Script de sincronización de datos
    ├── config.yaml                                  # Configuración generada
    ├── config.share                               # Archivo de configuración de Delta Share
    ├── procore_scheduling.log       # Registro de ejecuciones de programación 


    Ejemplo de uso 
    • Paso 1: Instalar dependencias 
      $ pip install -r requirements.txt
    • Paso 2: Ejecutar la utilidad de configuración 
      $ python user_exp.py 
    • Acceso a Procore Analytics Nube Connect 
      • Esta CLI lo ayudará a elegir su almacén de origen y destino para acceder/escribir datos de Procore en Snowflake. 
      • Presione Enter para continuar.
      • Ingrese a la lista de tablas (separadas por comas), déjela en blanco para todas las tablas: proyectos, usuarios, tareas.
      • Ingrese la ruta a config.share: /ruta/a/config.share.
      • Ingrese el nombre de usuario: snowflake_user.
      • ¿Qué tipo de autenticación desea utilizar? (usuario/key_pair): Ingresar.
      • 1 para el usuario,
      • 2 para el par de claves:
      • Ingrese la contraseña: ******** 
      • Ingrese la cuenta: my_account 
      • Entrar en el almacén: my_warehouse 
      • Ingrese el nombre de la base de datos: procore_db
      • Introduzca el nombre del esquema: procore_schema 
      • Introduzca el número de hilos: 4 
      • ¿Quieres configurar esto como un trabajo diario en cron? (Sí/No): Sí 
      • Ingrese el programa en formato cron (por ejemplo, * * * * * ): 0 2 * * * 
      • ¿Desea ejecutar el trabajo ahora? (Sí/No): Sí 
    • Paso 3: Ejecución manual (si es necesario)
      $ python ds_to_snowflake.py 
  • Reutilización de la configuración
    La herramienta guarda su configuración en el archivo config.yaml y le ofrece reutilizar la configuración almacenada anteriormente: 
    • La configuración de origen se puede reutilizar.
    • La configuración de destino (copo de nieve) se puede reutilizar. 
    • Puede optar por actualizar cualquiera de las configuraciones de forma independiente.

Prácticas recomendadas 

  • Autenticación
    • Utilice la autenticación de par de claves siempre que sea posible.
    • Rotar las credenciales con regularidad. 
    • Utilice los permisos mínimos requeridos.
  • Rendimiento 
    • Ajuste el número de subprocesos en función de las capacidades de su sistema. 
    • Comience con un subconjunto más pequeño de tablas para realizar pruebas.

Solución de problemas 

  • Problemas comunes y soluciones: 
    • Tipo de autenticación no válido 
      • Asegúrese de seleccionar "1" (usuario) o "2" (key_pair) cuando se le solicite.
  • Configuración de Cron Job  
    • Verifique que tiene los permisos del sistema adecuados.
    • Compruebe los registros del sistema si el trabajo no se puede ejecutar.
    • Asegúrese de que el ds_to_snowflake.py tenga los permisos correctos. 
    • Verifique la configuración del trabajo cron comprobando los registros del sistema:
      Consulte el archivo 'procore_scheduling.log '.
  • Archivo de configuración
    • Ubicado en el mismo directorio que el script,
    • Llamado config.yaml.
    • Haga una copia de seguridad antes de realizar cualquier cambio.
  • Soporte
    • Compruebe la salida de registro del script. 
    • Revise su archivo config.yaml
    • Póngase en contacto con el administrador del sistema si tiene problemas relacionados con los permisos.
    • Comuníquese con el soporte de Procore para problemas de acceso a Delta Share.

Nota: Recuerde siempre hacer una copia de seguridad de su configuración antes de realizar cambios y probar primero las nuevas configuraciones en un entorno que no sea de producción.