أتمتة استيراد البيانات إلى Google BigQuery باستخدام Google Cloud Functions

نحن نعمل باستمرار مع Google BigQuery - نستورد بيانات حول المستخدمين وطلباتهم وتكاليف الإعلان من مصادر مختلفة حتى نتمكن من دمجها فيما بينهم. ماذا يعطينا هذا؟ على سبيل المثال ، إذا كان لديك متجر على الإنترنت وعمل أحد العملاء بطلبًا عبر الهاتف ، ثم سجل الدخول إلى الموقع ، ثم باستخدام Google BigQuery ، يمكنك ربط جميع إجراءاته بأثر رجعي. يمكنك تتبع المسار الكامل للعميل من خلال مسار التسويق - من الزيارة الأولى للموقع إلى الشراء في متجر من الطوب وقذائف الهاون ، وتقييم الحملات الإعلانية مع مراعاة مثل هذه المبيعات خارج الإنترنت.

في هذه المجموعة لدينا 6 نصوص بيثون لأتمتة استيراد البيانات إلى Google BigQuery باستخدام وظائف Google Cloud : FTP؛ FTPS HTTP (s) ؛ انتركم MySQL و SFTP. مبدأ التشغيل هو نفسه: باستخدام طلب HTTP POST ، يتم استدعاء وظيفة Cloud ، التي تتلقى البيانات من المصدر وتحملها في جدول Google BigQuery. إذا كان الجدول موجودًا بالفعل في مجموعة البيانات المحددة ، فسيتم استبداله.

المتطلبات الأساسية


  1. المشروع في Google Cloud Platform مع الفواتير المنشّطة.
  2. الوصول إلى التعديل (دور "المحرر" لبيانات BigQuery) وإتمام المهام (دور مستخدم مهام BigQuery) لحساب خدمة وظيفة Cloud في مشروع BigQuery حيث سيتم تحميل الجدول ؛
  3. عميل HTTP لتنفيذ طلبات POST التي تستدعي وظيفة Cloud.

خطوات الإعداد


  • انتقل إلى Google Cloud Platform Console وقم بتسجيل الدخول باستخدام حساب Google الخاص بك ، أو قم بالتسجيل إذا لم يكن لديك حساب حتى الآن.
  • انتقل إلى المشروع باستخدام الفواتير المفعّلة أو أنشئ حساب فواتير جديدًا للمشروع.
  • انتقل إلى قسم وظائف السحاب وانقر على إنشاء ميزة. يرجى ملاحظة أن رسوم السحابة تنطبق .
  • املأ الحقول التالية:

الاسم: على سبيل المثال ، ftp-bq-تكامل أو أي اسم مناسب آخر ؛

الذاكرة المخصصة: 2 غيغابايت أو أقل ، حسب حجم الملف المعالج ؛

الزناد: HTTP ؛

كود المصدر: محرر مدمج.

بيئة وقت التشغيل: Python 3.X.

  • انسخ محتويات ملف main.py إلى المحرر المدمج ، علامة التبويب main.py.
  • انسخ محتويات ملف المتطلبات. txt إلى المحرر المضمن ، علامة تبويب المتطلبات.
  • حدد ftp / ftps / https ، وهكذا ، كالوظيفة التي يتم استدعاؤها ، اعتمادًا على الوحدة النمطية التي تستخدمها.
  • في المعلمات الإضافية ، قم بزيادة وقت الانتظار من 60 ثانية. حتى 540 ثانية. أو أصغر ، حسب حجم الملف الذي تتم معالجته.
  • أكمل إنشاء وظيفة السحابة بالنقر فوق الزر "إنشاء".

FTP / FTPS / SFTP


تم تصميم هذه الوحدة لنقل الملفات من خوادم FTP (FTPS ، SFTP) في Google BigQuery باستخدام وظيفة Google Cloud. يتيح لك الحل تحميل البيانات تلقائيًا إلى Google BigQuery من ملف يتم تحديثه بانتظام على خادم FTP.

يمكن أن يكون للملف الذي سيتم الحصول عليه من الخادم المناسب أي امتداد مناسب (.json ، .txt ، .csv) ، ولكن يجب أن يكون بأحد التنسيقات التالية: JSON (محدد سطر جديد) أو قيم مفصولة بفواصل (CSV).

مثال للاستخدام


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)


وحدة لنقل الملفات من خوادم HTTPS إلى Google BigQuery.

مثال للاستخدام


 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) 

انتركم


وحدة لأتمتة نقل البيانات من Intercom إلى Google BigQuery باستخدام ميزة Google Cloud. حاليًا ، تتيح لك الوحدة الاستيراد من Intercom مثل الكيانات: المستخدمون والشركات وجهات الاتصال والمسؤولون والمحادثات والفرق والعلامات والقطاعات. ومع ذلك ، لا تدعم الوحدة النمطية السمات المخصصة.

مثال للاستخدام


 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


تُستخدم لنقل الملفات من خوادم MySQL إلى Google BigQuery باستخدام وظيفة Google Cloud. يتيح لك هذا الحل تحميل البيانات تلقائيًا إلى Google BigQuery من الجداول التي يتم تحديثها بانتظام على خادم MySQL.

مثال للاستخدام


 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) 

يمكن العثور على وثائق أكثر تفصيلاً لكل وحدة نمطية في ملفات المستند التمهيدي في كل قسم.

هذه ليست سوى البداية ، ونحن الآن نعمل على نصوص ل Bitrix و amoCRM ، لأننا نرى أنها الأكثر شعبية بين عملائنا. شارك الأساليب التي تستخدمها لدمج البيانات والتكاملات التي تفتقر إليها لهذا الغرض.

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


All Articles