Mengotomatiskan impor data ke Google BigQuery dengan Google Cloud Functions

Kami terus-menerus bekerja dengan Google BigQuery - kami mengimpor data tentang pengguna, pesanan mereka, dan biaya iklan dari berbagai sumber agar dapat menggabungkan mereka di antara mereka sendiri. Apa yang ini berikan pada kita? Misalnya, jika Anda memiliki toko online dan pelanggan melakukan pemesanan melalui telepon, lalu masuk ke situs, lalu menggunakan Google BigQuery Anda dapat menautkan semua tindakannya secara surut. Anda dapat melacak seluruh jalur klien melalui corong pemasaran - dari kunjungan pertama ke situs untuk membeli di toko batu bata dan mortir, dan mengevaluasi kampanye iklan dengan memperhitungkan penjualan offline tersebut.

Dalam koleksi ini kami memiliki 6 skrip python untuk mengotomatisasi impor data ke Google BigQuery menggunakan fungsi Google Cloud : FTP; FTPS HTTP (s); Interkom MySQL dan SFTP. Prinsip operasi adalah sama: menggunakan permintaan HTTP POST, fungsi Cloud disebut, yang menerima data dari sumber dan memuatnya ke tabel Google BigQuery. Jika tabel sudah ada di dataset yang dipilih, maka itu akan ditimpa.

Persyaratan dasar


  1. Proyeksikan di Google Cloud Platform dengan penagihan yang diaktifkan.
  2. Akses untuk mengedit (peran "Editor" dari data BigQuery) dan melakukan tugas (peran Pengguna tugas BigQuery) untuk akun layanan fungsi Cloud dalam proyek BigQuery tempat tabel akan diunggah;
  3. Klien HTTP untuk melakukan permintaan POST yang menjalankan fungsi Cloud.

Langkah-langkah pengaturan


  • Buka Google Cloud Platform Console dan masuk menggunakan akun Google Anda, atau mendaftar jika Anda belum memiliki akun.
  • Buka proyek dengan penagihan yang diaktifkan atau buat akun penagihan baru untuk proyek tersebut.
  • Pergi ke bagian Fungsi Cloud dan klik Buat Fitur. Harap dicatat bahwa biaya cloud berlaku .
  • Isi kolom-kolom berikut:

Nama: misalnya, integrasi ftp-bq atau nama lain yang sesuai;

Memori yang dialokasikan: 2 GB atau kurang, tergantung pada ukuran file yang diproses;

Pemicu: HTTP;

Kode sumber: Editor internal;

Runtime Environment: Python 3.X.

  • Salin konten file main.py ke editor bawaan, tab main.py.
  • Salin konten file requirement.txt ke editor bawaan, tab requirement.txt.
  • Tentukan ftp / ftps / https, dan seterusnya, sebagai fungsi untuk memanggil, tergantung pada modul yang Anda gunakan.
  • Pada parameter tambahan, tambah waktu tunggu dari 60 detik. hingga 540 detik. atau lebih kecil, tergantung pada ukuran file yang sedang diproses.
  • Selesai membuat fungsi Cloud dengan mengklik tombol "Buat".

FTP / FTPS / SFTP


Modul ini dirancang untuk mentransfer file dari server FTP (FTPS, SFTP) di Google BigQuery menggunakan fungsi Google Cloud. Solusi ini memungkinkan Anda untuk secara otomatis mengunggah data ke Google BigQuery dari file yang diperbarui secara berkala di server FTP.

File yang akan diperoleh dari server yang sesuai dapat memiliki ekstensi yang sesuai (.json, .txt, .csv), tetapi harus dalam salah satu format berikut: JSON (dibatasi baris baru) atau nilai yang dipisahkan koma (CSV).

Contoh penggunaan


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


Modul untuk mentransfer file dari server HTTPS ke Google BigQuery.

Contoh penggunaan


 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) 

Interkom


Modul untuk mengotomatisasi transfer data dari Interkom ke Google BigQuery menggunakan fitur Google Cloud. Saat ini, modul ini memungkinkan Anda untuk mengimpor dari Intercom entitas seperti: pengguna, perusahaan, kontak, admin, percakapan, tim, tag, segmen. Namun, modul ini tidak mendukung atribut khusus.

Contoh penggunaan


 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


Digunakan untuk mentransfer file dari server MySQL ke Google BigQuery menggunakan fungsi Google Cloud. Solusi ini memungkinkan Anda untuk secara otomatis mengunggah data ke Google BigQuery dari tabel yang diperbarui secara berkala di server MySQL.

Contoh penggunaan


 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) 

Dokumentasi yang lebih terperinci untuk setiap modul dapat ditemukan di file readme di setiap bagian.

Ini hanya permulaan, dan sekarang kami sedang mengerjakan skrip untuk Bitrix dan amoCRM, karena kami melihat bahwa mereka adalah yang paling populer di antara klien kami. Bagikan metode apa yang Anda gunakan untuk menggabungkan data dan integrasi apa yang tidak Anda miliki untuk ini.

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


All Articles