كيفية جدولة وظيفة BigQuery ETL مع Dataprep

تتيح لك واجهة مستخدم BigQuery القيام بجميع أنواع الأشياء - تشغيل استعلام تفاعلي ، وحفظه كجدول ، والتصدير إلى جدول ، وما إلى ذلك - ولكن لا توجد طريقة (حتى الآن!) لجدولة استعلام لتشغيله في وقت أو دورية محددة. كان Graham Polley في مرحلة قائمة مؤخرًا ، حيث تم طرح أربعة حلول بديلة بدون خادم وتتضمن منتجات GCP أخرى. لكنه افتقد ما ، في رأيي ، هو الفائز الواضح في وظائف ETL - أنه مرن ، قوي ، لا يتضمن أي تشفير ، ومن المرجح أنك سوف ترغب في ذلك في مجموعة الأدوات الخاصة بك حتى بعد قيام فريق BigQuery بالقدرة على الجري استعلامات مجدولة.

لكي تكون واضحًا: بمجرد أن تقوم BigQuery باستعلامات مجدولة ، فإنك تريد استخدام ذلك ، بحيث يمكنك الاحتفاظ ببياناتك في BigQuery والاستفادة من حجمها وقوتها. ومع ذلك ، إذا كنت تجري تحويلات (T في ETL) ، ففكر في هذا النهج:

  1. في BigQuery UI ، احفظ الاستعلام المطلوب كطريقة عرض.
  2. في Cloud Dataprep ، اكتب وصفة جديدة ، مع مصدر BigQuery. اختياريا ، إضافة بعض التحولات إلى وصفتك. على سبيل المثال ، قد ترغب في إضافة بعض الصيغ ، وإلغاء التكرار ، والتحولات ، إلخ.
  3. تصدير نتيجة التحول إلى جدول BigQuery أو ملف CSV على Cloud Storage
  4. جدولة تدفق Dataprep لتعمل بشكل دوري

إذا كانت واجهة المستخدم مختلفة عندما تحاول تكرار الخطوات ، فما عليك سوى البحث قليلاً. من المرجح أن تكون هناك وظيفة ، فقط في مكان مختلف.

جدولة استعلام لتشغيله بشكل دوري أمر سهل حقًا.

1. حفظ الاستعلام BigQuery كما عرض

سأقوم بالشرح باستخدام استعلام يسحب الطقس الأخير من مجموعة بيانات عامة عن الطقس ، لذلك اكتب هذا في BigQuery UI ثم احفظه كعرض:

#standardSQL
تحديد
  تاريخ،
  MAX (prcp) AS prcp ،
  MAX (tmin) AS tmin ،
  MAX (tmax) AS tmax
من عند (
  تحديد
    تاريخ wx.date ،
    إذا (wx.element = 'PRCP' ،
      wx.value / 10،
      NULL) كما prcp ،
    إذا (wx.element = 'TMIN' ،
      wx.value / 10،
      NULL) كما tmin ،
    إذا (wx.element = 'TMAX' ،
      wx.value / 10،
      NULL) كما tmax
  من عند
    `bigquery-public-data.ghcn_d.ghcnd_2018` AS wx
  أين
    المعرف = 'USW00094846'
    AND DATE_DIFF (CURRENT_DATE () ، wx.date ، DAY) <15)
مجموعة من
  تاريخ
ترتيب حسب
  تاريخ ASC
احفظ الاستعلام كطريقة عرض

2. في Cloud Dataprep ، اكتب وصفة جديدة

الخطوة 1: تشغيل Dataprep من وحدة تحكم الويب GCP

إنشاء تدفق جديد

وصفات هي جزء من التدفق

استيراد طريقة عرض BigQuery مثل مجموعة بيانات Dataprep

انقر على استيراد مجموعات البيانات واتبع تدفق واجهة المستخدم للوصول إلى مجموعة بيانات BigQuery واستيراد طريقة العرض الحالية التي تم إنشاؤها حديثًا على شكل مجموعة بيانات.

قم باستيراد طريقة عرض BigQuery الحالية_الرمز كملف بيانات Dataprep

أضف وصفة جديدة وقم بتحريرها

أضف خطوات إلى الوصفة

إضافة خطوات وصفة لمزيد من تحويل البيانات

بعد النقر على "تعديل الوصفة" ، ستقوم Dataprep بسحب عينة من مجموعة البيانات الخاصة بك وتظهر لك الأعمدة ، وتوزيعاتها ، وما إلى ذلك.

انقر على زر علامة زائد الزرقاء لإضافة خطوة إلى الوصفة. سنقوم بإزالة أي صفوف حيث تكون أعمدة البيانات فارغة:

كتابة حذف حذف لتحويل الصفوف التي تتطابق مع معيار

لاحظ أنه أثناء كتابة الصيغة ، يعرض لك Dataprep الصفوف / الأعمدة التي ستتأثر.

3. قم بتشغيل المهمة لتصدير البيانات

انقر فوق "تشغيل الوظيفة". الإعداد الافتراضي هو إنشاء ملف CSV على "التخزين السحابي" ، ولكن يمكننا تغيير هذا إلى BigQuery من خلال النقر على أيقونة القلم الرصاص ("تحرير"):

قم بتغيير مخرجات المهمة للكتابة إلى مجموعة البيانات في BigQuery

انقر فوق "تشغيل الوظيفة" لتشغيلها مرة واحدة. هنا ، نطلب من الوظيفة إسقاط واستبدال الجدول كل شوط ، ولكن كما ترون ، هناك خيارات أخرى. يعمل هذا كعمل Dataflow ، أي على نطاق واسع وموزع.

تدفقات Dataprep تعمل كوظائف Dataflow! لا تحتاج إلى كتابة Java / Python لاستخدام Dataflow.

4. جدولة المهمة لتشغيلها بشكل دوري

انتقل إلى قسم "التدفقات" في Dataprep UI وانقر على الأزرار الثلاثة الموجودة بجانب التدفق الجديد. سترى خيارًا لإضافة جدول:

تشمل الخيارات يوميًا وأسبوعيًا ، إلخ ، ولكن أيضًا تنسيق crontab لمزيد من المرونة:

جدولة المهمة لتشغيلها بشكل دوري

وهذا كل شيء!