Zu Hauptinhalten wechseln
Procore

Exportieren nach Snowflake mit Python

Übersicht

Das Analytics Cloud Connect Access-Tool ist eine Befehlszeilenschnittstelle (CLI), mit der Sie Datenübertragungen von Procore zu Snowflake konfigurieren und verwalten können.

Es besteht aus zwei Hauptkomponenten: 

  • user_exp.py: Dienstprogramm zur Konfigurationseinrichtung
  • ds_to_snowflake.py: Skript zur Datensynchronisierung

Voraussetzungen

  • Python ist auf Ihrem System installiert 
  • Zugang zu Procore Delta Share
  • Anmeldedaten für das Snowflake-Konto 
  • Laden Sie das gezippte Paket aus dem Unternehmensebene Analytics-Tool herunter (über Analytics > Erste Schritte > Verbindungsoptionen > Snowflake).
  • Installieren Sie die erforderlichen Abhängigkeiten mit:
    • pip install -r requirements.txt 
  • Profildatei für die Delta-Freigabe:
    • Aktualisieren Sie das Token und den Endpunkt, die Sie von der Procore-Benutzeroberfläche in der Datei template_config.share (im heruntergeladenen Inhalt) erhalten haben, und benennen Sie template_config.share in config.share um.
    • Python-Umgebung:
      • Installieren Sie Python 3.9+ und pip auf Ihrem System.

Schritte

Erstkonfiguration

Führen Sie das Konfigurationsdienstprogramm mit Python user_exp.py aus.

Daten-Synchronisation

Nach der Konfiguration haben Sie zwei Möglichkeiten, die Datensynchronisierung auszuführen: 

  • Direkte Ausführung:
    • Python-ds_to_snowflake.py
  • Geplante Ausführung
    • Wenn Sie dies während des Setups konfigurieren, wird der Auftrag automatisch gemäß Ihrem Cron-Zeitplan ausgeführt.
    • Um die Planungsprotokolle zu überprüfen, wird die Datei 'procore_scheduling.log' erstellt, sobald die Planung eingerichtet wird.
    • Sie können die Planung auch überprüfen, indem Sie den folgenden Befehl im Terminal ausführen:

Für Linux und MacOS:

  • Bearbeiten/Löschen - Bearbeiten Sie den Terminplanungs-Cron mit:

    '''Bash

    EDITOR=nano crontab -e

    ```

  • Nachdem Sie den obigen Befehl ausgeführt haben, sollten Sie etwas Ähnliches wie das folgende sehen:

    2 * * * *
    /Benutzer/your_user/snowflake/venv/bin/python

     
    /Benutzer/your_user/Schneeflocke/sql_server_python/connection_config.py
    2>&1 | während der gelesenen Zeile; do echo "$(date) - $line"; Fertig>>

     
    /Benutzer/your_user/Schneeflocke/sql_server_python/procore_scheduling.log # Procore-Daten-Import 

     
  • Sie können auch den Zeitplan anpassen oder die gesamte Zeile löschen, um zu verhindern, dass sie nach Zeitplan ausgeführt wird.

Für Windows:

  • Überprüfen Sie, ob die Terminplanaufgabe erstellt wurde: 

    ```
        PowerShell (PowerShell) 

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

    ``` 

  • Um die Planungsaufgabe zu bearbeiten/zu löschen , öffnen Sie den Taskplaner.
  • Drücken Sie Win + R, geben Sie taskschd.msc ein. und drücken Sie die Eingabetaste. 
  • Navigieren Sie zu den geplanten Aufgaben. 
  • Erweitern Sie im linken Bereich die Taskplaner-Bibliothek. 
  • Suchen Sie nach dem Ordner, in dem Ihre Aufgabe gespeichert ist:
    Beispiel:  Taskplaner-Bibliothek oder ein benutzerdefinierter Ordner.
  • Finde deine Aufgabe.
  • Suchen Sie nach dem Namen der Aufgabe: ProcoreDeltaShareScheduling
  • Klicken Sie darauf, um die Details im unteren Bereich anzuzeigen. 
  • Überprüfen Sie den Zeitplan: 
    • Überprüfen Sie die Registerkarte Trigger, um zu sehen, wann die Aufgabe ausgeführt werden soll. 
    • Überprüfen Sie die Registerkarte Verlauf, um die letzten Ausführungen zu bestätigen. 
  • So löschen Sie die Aufgabe: 
    • Löschen Sie die Aufgabe aus der GUI.

Konfiguration der Delta-Freigabe

  • Erstellen der config.share-Datei 
  • Bevor Sie das Konfigurationsdienstprogramm ausführen können, müssen Sie eine config.share-Datei mit Ihren Delta Share-Anmeldedaten erstellen. Die Datei sollte im JSON-Format vorliegen: 

    "shareCredentialsVersion": 1, 
    "bearerToken": "xxxxxxxxxxxxxxx", 
    "endpoint": "https://nvirginia.cloud.databricks.c...astores/xxxxxx

     

  • Pflichtfelder: 
    • ShareCredentialsVersion: Versionsnummer (derzeit 1). 
    • BearerToken: Ihr Delta Share-Zugriffstoken.
    • Endpunkt: Die URL Ihres Delta Share-Endpunkts.
    • Diese Details können über die Procore-Web-Benutzeroberfläche abgerufen werden.
  • Schritte zum Erstellen von config.share: 
    • Erstellen Sie eine neue Datei mit dem Namen config.share.
    • Kopieren Sie die obige JSON-Vorlage. 
    • Ersetzen Sie die Platzhalterwerte durch Ihre tatsächlichen Anmeldedaten. 
    • Speichern Sie die Datei an einem sicheren Ort. 
    • Sie müssen den Pfad zu dieser Datei während der Konfiguration angeben. Bei der Konfiguration der Datenquelle werden Sie aufgefordert, Folgendes anzugeben:
      • Liste der Tabellen (durch Kommas getrennt).
      • Lassen Sie das Feld leer, um alle Tabellen zu synchronisieren.
      • Beispiel: Tabelle1, Tabelle2, Tabelle3.
  • Pfad zu Ihrer config.share-Datei .

Snowflake-Konfiguration

Sie müssen die folgenden Snowflake-Details angeben:

  • Authentifizierung (wählen Sie eine aus): 
    • Benutzer-Authentifizierung 
      • Nutzername 
      • Passwort (sicher eingegeben) 
  • Schlüsselpaar-Authentifizierung
    • Nutzername 
    • Dateipfad des privaten Schlüssels
    • Passwort für die Datei mit privatem Schlüssel 
  • Details zur Verbindung: 
    • Konto-ID 
    • Name des Lagers 
    • Name der Datenbank 
    • Name des Schemas 
    • Anzahl gleichzeitiger Threads 

Optionen für die Planung

Das Tool bietet die Möglichkeit, eine automatische Datensynchronisierung zu planen.

  • Cronjob-Konfiguration 
    • Auswählen, ob Sie ein tägliches Projekt einrichten möchten 
    • Wenn ja, geben Sie einen Cron-Zeitplan an 
    • Format: * * * * * (Minute, Stunde, Monat, Monat, Wochentag)
    • Beispiel für täglich um 2 Uhr morgens: 0 2 * * * 
  • Sofortige Ausführung 
    • Option zum sofortigen Ausführen der ds_to_snowflake.py nach der Konfiguration  
  • Datei-Struktur

    Unset 
    ├── requirements.txt                    # Abhängigkeiten 
    ├── user_exp.py                                # Konfigurations-Dienstprogramm
    ├── ds_to_snowflake.py                # Skript zur Datensynchronisierung
    ├── config.yaml                                  # Generierte Konfiguration
    ├── config.share                               # Delta-Share-Konfigurationsdatei
    ├── procore_scheduling.log       # Protokoll der Terminierungsläufe 


    Beispiel für die Verwendung 
    • Schritt 1: Installieren von Abhängigkeiten 
      $ pip install -r requirements.txt
    • Schritt 2: Konfigurationsdienstprogramm ausführen 
      $ python user_exp.py 
    • Procore Analytics Cloud Connect-Zugriff 
      • Diese CLI hilft Ihnen bei der Auswahl Ihres Quell- und Zielspeichers für den Zugriff/das Schreiben von Procore-Daten in Snowflake. 
      • Drücken Sie die Eingabetaste, um fortzufahren.
      • Geben Sie die Liste der Tabellen ein (durch Kommas getrennt), lassen Sie sie für alle Tabellen leer: Projekte, Benutzer, Aufgaben.
      • Geben Sie den Pfad zu config.share ein: /Pfad/zur/config.share.
      • Geben Sie den Benutzernamen ein: snowflake_user.
      • Welchen Authentifizierungstyp möchten Sie verwenden? (Benutzer/key_pair): Eingabetaste.
      • 1 für Benutzer,
      • 2 für Schlüsselpaar:
      • Passwort eingeben: ******** 
      • Konto eingeben: my_account 
      • Lager eingeben: my_warehouse 
      • Geben Sie den Datenbanknamen ein: procore_db
      • Geben Sie den Schemanamen ein: procore_schema 
      • Anzahl der Threads eingeben: 4 
      • Möchten Sie dies als täglichen Job auf cron konfigurieren? (Ja/Nein): Ja 
      • Geben Sie den Zeitplan im Cron-Format ein (z. B. * * * * * ): 0 2 * * * 
      • Möchten Sie den Auftrag jetzt ausführen? (Ja/Nein): Ja 
    • Schritt 3: Manuelle Ausführung (falls erforderlich)
      $ python ds_to_snowflake.py 
  • Wiederverwendung von Konfigurationen
    Das Tool speichert Ihre Konfiguration in der Datei config.yaml und bietet die Möglichkeit, zuvor gespeicherte Einstellungen wiederzuverwenden: 
    • Die Quellkonfiguration kann wiederverwendet werden.
    • Die Zielkonfiguration (Snowflake) kann wiederverwendet werden. 
    • Sie können wählen, ob Sie beide Konfigurationen unabhängig voneinander aktualisieren möchten.

Bewährte Methoden 

  • Authentifizierung
    • Verwenden Sie, wenn möglich, die Authentifizierung von Schlüsselpaaren.
    • Wechseln Sie die Anmeldedaten regelmäßig. 
    • Verwenden Sie die minimal erforderlichen Berechtigungen.
  • Leistung 
    • Passen Sie die Threadanzahl basierend auf Ihren Systemfunktionen an. 
    • Beginnen Sie mit einer kleineren Teilmenge von Tabellen zum Testen.

Fehlerbehebung 

  • Häufige Probleme und Lösungen: 
    • Ungültiger Authentifizierungstyp 
      • Stellen Sie sicher, dass Sie entweder "1" (Benutzer) oder "2" (key_pair) auswählen, wenn Sie dazu aufgefordert werden.
  • Cronjob einrichten  
    • Stellen Sie sicher, dass Sie über die entsprechenden Systemberechtigungen verfügen.
    • Überprüfen Sie die Systemprotokolle, wenn der Auftrag nicht ausgeführt werden kann.
    • Stellen Sie sicher, dass das ds_to_snowflake.py über die richtigen Berechtigungen verfügt. 
    • Überprüfen Sie die Einrichtung des Cron-Jobs, indem Sie die Systemprotokolle überprüfen:
      Siehe Datei 'procore_scheduling.log'.
  • Konfigurationsdatei
    • Befindet sich im selben Verzeichnis wie das Skript
    • Mit dem Namen config.yaml.
    • Sichern Sie, bevor Sie Änderungen vornehmen.
  • Unterstützen
    • Überprüfen Sie die Protokollausgabe des Skripts. 
    • Überprüfen Sie die Datei config.yaml
    • Wenden Sie sich an Ihren Systemadministrator, wenn Sie Fragen zu Berechtigungen haben.
    • Wenden Sie sich bei Problemen mit dem Delta Share-Zugriff an den Procore Support.

Anmerkung: Denken Sie daran, Ihre Konfiguration immer zu sichern, bevor Sie Änderungen vornehmen, und neue Konfigurationen zuerst in einer Nicht-Produktionsumgebung zu testen.