Automatisieren Sie den Datenimport in Google BigQuery mit Google Cloud-Funktionen

Wir arbeiten ständig mit Google BigQuery zusammen - wir importieren Daten über Nutzer, deren Bestellungen und Werbekosten aus verschiedenen Quellen, um sie untereinander kombinieren zu können. Was gibt uns das? Wenn Sie beispielsweise einen Online-Shop haben und ein Kunde telefonisch eine Bestellung aufgibt und sich dann auf der Website anmeldet, können Sie mit Google BigQuery alle Aktionen rückwirkend verknüpfen. Sie können den gesamten Weg des Kunden durch den Marketing-Trichter verfolgen - vom ersten Besuch auf der Website bis zum Kauf in einem stationären Geschäft - und Werbekampagnen unter Berücksichtigung solcher Offline-Verkäufe bewerten.

In dieser Sammlung finden Sie 6 Python-Skripte zur Automatisierung des Datenimports in Google BigQuery mithilfe der Google Cloud-Funktionen : FTP; FTPS HTTP (s); Gegensprechanlage MySQL und SFTP. Das Funktionsprinzip ist dasselbe: Mit der HTTP-POST-Anforderung wird die Cloud-Funktion aufgerufen, die Daten von der Quelle empfängt und in die Google BigQuery-Tabelle lädt. Wenn die Tabelle bereits im ausgewählten Datensatz vorhanden ist, wird sie überschrieben.

Grundvoraussetzungen


  1. Projekt in Google Cloud Platform mit aktivierter Abrechnung.
  2. Zugriff zum Bearbeiten (die Rolle „Editor“ von BigQuery-Daten) und Ausführen von Aufgaben (die Rolle des Benutzers der BigQuery-Aufgaben) für das Dienstkonto der Cloud-Funktion im BigQuery-Projekt, in das die Tabelle hochgeladen wird;
  3. Ein HTTP-Client zum Ausführen von POST-Anforderungen, die die Cloud-Funktion aufrufen.

Einrichtungsschritte


  • Rufen Sie die Google Cloud Platform Console auf und melden Sie sich mit Ihrem Google-Konto an oder registrieren Sie sich, wenn Sie noch kein Konto haben.
  • Gehen Sie mit aktivierter Abrechnung zum Projekt oder erstellen Sie ein neues Abrechnungskonto für das Projekt.
  • Gehen Sie zum Abschnitt Cloud-Funktionen und klicken Sie auf Feature erstellen. Bitte beachten Sie, dass Cloud- Gebühren anfallen .
  • Füllen Sie die folgenden Felder aus:

Name: zum Beispiel FTP-BQ-Integration oder ein anderer geeigneter Name;

Zugewiesener Speicher: 2 GB oder weniger, abhängig von der Größe der verarbeiteten Datei;

Auslöser: HTTP;

Quellcode: Eingebauter Editor;

Laufzeitumgebung: Python 3.X.

  • Kopieren Sie den Inhalt der Datei main.py in den integrierten Editor auf der Registerkarte main.py.
  • Kopieren Sie den Inhalt der Datei require.txt in den integrierten Editor auf der Registerkarte require.txt.
  • Geben Sie als aufgerufene Funktion ftp / ftps / https usw. an, je nachdem, welches Modul Sie verwenden.
  • Erhöhen Sie in den zusätzlichen Parametern die Wartezeit von 60 Sekunden. bis zu 540 Sek. oder kleiner, abhängig von der Größe der zu verarbeitenden Datei.
  • Beenden Sie die Erstellung der Cloud-Funktion, indem Sie auf die Schaltfläche "Erstellen" klicken.

FTP / FTPS / SFTP


Dieses Modul dient zum Übertragen von Dateien von FTP-Servern (FTPS, SFTP) in Google BigQuery mithilfe der Google Cloud-Funktion. Mit der Lösung können Sie automatisch Daten aus einer Datei, die regelmäßig auf dem FTP-Server aktualisiert wird, in Google BigQuery hochladen.

Die vom entsprechenden Server abzurufende Datei kann eine beliebige geeignete Erweiterung (.json, .txt, .csv) haben, muss jedoch in einem der folgenden Formate vorliegen: JSON (durch Zeilenumbrüche getrennt) oder durch Kommas getrennte Werte (CSV).

Anwendungsbeispiel


from urllib import urlencode from httplib2 import Http trigger_url = "https://REGION-PROJECT_ID.cloudfunctions.net/ftp/" headers = { "Content-Type": "application/json" } payload = { "ftp": { "user": "ftp.user_name", "psswd": "ftp.password", "path_to_file": "ftp://server_host/path/to/file/" }, "bq": { "project_id": "my_bq_project", "dataset_id": "my_bq_dataset", "table_id": "my_bq_table", "delimiter": ",", "source_format": "NEWLINE_DELIMITED_JSON", "location": "US" } } Http().request(trigger_url, "POST", urlencode(payload), headers = headers) 

HTTP (s)


Modul zum Übertragen von Dateien von HTTPS-Servern an Google BigQuery.

Anwendungsbeispiel


 from urllib import urlencode from httplib2 import Http trigger_url = "https://REGION-PROJECT_ID.cloudfunctions.net/https/" headers = { "Content-Type": "application/json" } payload = { "https": { "path_to_file": "https://server_host/path/to/file/", "user": "https.user_name", "psswd": "https.password" }, "bq": { "project_id": "my_bq_project", "dataset_id": "my_bq_dataset", "table_id": "my_bq_table", "delimiter": ",", "source_format": "CSV", "location": "US" } } Http().request(trigger_url, "POST", urlencode(payload), headers = headers) 

Gegensprechanlage


Ein Modul zur Automatisierung der Datenübertragung von Intercom zu Google BigQuery mithilfe der Google Cloud-Funktion. Derzeit können Sie mit dem Modul Entitäten wie Benutzer, Unternehmen, Kontakte, Administratoren, Konversationen, Teams, Tags und Segmente von Intercom importieren. Das Modul unterstützt jedoch keine benutzerdefinierten Attribute.

Anwendungsbeispiel


 from urllib import urlencode from httplib2 import Http trigger_url = "https://REGION-PROJECT_ID.cloudfunctions.net/intercom/" headers = { "Content-Type": "application/json" } payload = { "intercom": { "accessToken": "INTERCOM ACCESS TOKEN", "entities": [ "users", "companies", "contacts", "admins", "conversations", "teams", "tags", "segments" ] }, "bq": { "project_id": "YOUR GCP PROJECT", "dataset_id": "YOUR DATASET NAME", "location": "US" } } Http().request(trigger_url, "POST", urlencode(payload), headers = headers) 

MySQL


Wird verwendet, um Dateien von MySQL-Servern mithilfe der Google Cloud-Funktion an Google BigQuery zu übertragen. Mit dieser Lösung können Sie automatisch Daten aus Tabellen, die regelmäßig auf dem MySQL-Server aktualisiert werden, in Google BigQuery hochladen.

Anwendungsbeispiel


 from urllib import urlencode from httplib2 import Http trigger_url = "https://REGION-PROJECT_ID.cloudfunctions.net/mysql/" headers = { "Content-Type": "application/json" } payload = { "mysql": { "user": "mysql.user", "psswd": "mysql.password", "host": "host_name", "port”: 3306, "database": "database_name", "table_id": "table_name", "query": "SELECT * FROM table_name" }, "bq": { "project_id": "my_bq_projec", "dataset_id": "my_bq_dataset", "table_id": "my_bq_table" } } Http().request(trigger_url, "POST", urlencode(payload), headers = headers) 

Eine ausführlichere Dokumentation für jedes Modul finden Sie in den Readme-Dateien in den einzelnen Abschnitten.

Dies ist nur der Anfang, und jetzt arbeiten wir an Skripten für Bitrix und amoCRM, da wir sehen, dass sie bei unseren Kunden am beliebtesten sind. Teilen Sie mit, welche Methoden Sie zum Kombinieren von Daten verwenden und welche Integrationen Ihnen dafür fehlen.

Source: https://habr.com/ru/post/de426647/


All Articles