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
- Daten-Synchronisation
- Konfiguration der Delta Share-Quelle
- Konfiguration des Snowflake-Ziels
- Optionen für die Planung
- Best Practices
- Problembehebung
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)
- Benutzer-Authentifizierung
- 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:
- 1
- 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
- Schritt 1: Installieren von Abhängigkeiten
- 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.
- Ungültiger Authentifizierungstyp
- 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.

