1. نظرة عامة
BigQuery هو قاعدة بيانات إحصاءات مُدارة بالكامل ومنخفضة التكلفة ولا تتطلّب أي عمليات من Google. باستخدام BigQuery، يمكنك طلب البحث عن تيرابايت وتيرابايت من البيانات بدون الحاجة إلى إدارة أي بنية أساسية، كما أنّك لن تحتاج إلى مسؤول قاعدة بيانات. تستخدم BigQuery لغة SQL المألوفة ويمكنها الاستفادة من نموذج الدفع حسب الاستخدام. يتيح لك BigQuery التركيز على تحليل البيانات للعثور على إحصاءات مفيدة.
في هذا الدرس العملي، ستستكشف مجموعة بيانات Wikipedia باستخدام BigQuery.
أهداف الدورة التعليمية
- كيفية استخدام BigQuery
- كيفية تحميل مجموعة بيانات حقيقية إلى BigQuery
- كيفية كتابة طلب بحث للحصول على إحصاءات حول مجموعة بيانات كبيرة
المتطلبات
- مشروع على السحابة الإلكترونية من Google
- متصفّح، مثل Google Chrome أو Firefox
استطلاع الرأي
كيف ستستخدم هذا البرنامج التعليمي؟
كيف تقيّم تجربتك مع Google Cloud؟
2. الإعداد والمتطلبات
تفعيل BigQuery
إذا لم يكن لديك حساب على Google، عليك إنشاء حساب.
- سجِّل الدخول إلى وحدة تحكّم Google Cloud وانتقِل إلى BigQuery. يمكنك أيضًا فتح واجهة مستخدم الويب في BigQuery مباشرةً من خلال إدخال عنوان URL التالي في المتصفّح.
https://console.cloud.google.com/bigquery
- اقبَل بنود الخدمة.
- قبل أن تتمكّن من استخدام BigQuery، عليك إنشاء مشروع. اتّبِع التعليمات لإنشاء مشروعك الجديد.
اختَر اسم مشروع ودوِّن رقم تعريف المشروع. 
رقم تعريف المشروع هو اسم فريد في جميع مشاريع Google Cloud. سيتم الإشارة إليه لاحقًا في هذا الدرس العملي باسم PROJECT_ID.
يستخدم هذا الدرس التطبيقي العملي موارد BigQuery ضمن حدود وضع الحماية في BigQuery. ليس من الضروري توفُّر حساب فوترة. إذا أردت إزالة حدود وضع الحماية لاحقًا، يمكنك إضافة حساب فوترة من خلال الاشتراك في الفترة التجريبية المجانية من Google Cloud.
يمكنك تحميل مجموعة بيانات Wikipedia في القسم التالي.
3- إنشاء مجموعة بيانات
أولاً، أنشئ مجموعة بيانات جديدة في المشروع. تتألف مجموعة البيانات من جداول متعددة.
- لإنشاء مجموعة بيانات، انقر على اسم المشروع ضمن لوحة الموارد، ثم انقر على إنشاء مجموعة بيانات:

- أدخِل
labكمعرّف مجموعة البيانات:

- انقر على إنشاء مجموعة بيانات لإنشاء مجموعة بيانات فارغة.
4. تحميل البيانات باستخدام برنامج سطر الأوامر bq
تفعيل Cloud Shell
- من Cloud Console، انقر على تفعيل Cloud Shell
.

إذا لم يسبق لك بدء Cloud Shell، ستظهر لك شاشة وسيطة (الجزء السفلي غير المرئي من الصفحة) توضّح ماهيته. في هذه الحالة، انقر على متابعة (ولن تظهر لك مرة أخرى). في ما يلي الشكل الذي ستظهر به هذه الشاشة لمرة واحدة:

يستغرق توفير Cloud Shell والاتصال به بضع لحظات فقط.

يتم تحميل هذا الجهاز الافتراضي بجميع أدوات التطوير التي تحتاج إليها. توفّر هذه الخدمة دليلًا رئيسيًا دائمًا بسعة 5 غيغابايت وتعمل في Google Cloud، ما يؤدي إلى تحسين أداء الشبكة والمصادقة بشكل كبير. يمكن إنجاز معظم العمل في هذا الدرس التطبيقي حول الترميز، إن لم يكن كله، باستخدام متصفّح أو جهاز Chromebook فقط.
بعد الاتصال بـ Cloud Shell، من المفترض أن يظهر لك أنّه تم إثبات هويتك وأنّه تم ضبط المشروع على رقم تعريف مشروعك.
- نفِّذ الأمر التالي في Cloud Shell للتأكّد من إكمال عملية المصادقة:
gcloud auth list
ناتج الأمر
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- نفِّذ الأمر التالي في Cloud Shell للتأكّد من أنّ أمر gcloud يعرف مشروعك:
gcloud config list project
ناتج الأمر
[core] project = <PROJECT_ID>
إذا لم يكن كذلك، يمكنك تعيينه من خلال هذا الأمر:
gcloud config set project <PROJECT_ID>
ناتج الأمر
Updated property [core/project].
تحميل البيانات إلى BigQuery
لتسهيل الأمر عليك، تتوفّر بعض البيانات الخاصة بيوم 10 أبريل 2019 من مجموعة بيانات مشاهدات صفحات Wikimedia على Google Cloud Storage على الرابط gs://cloud-samples-data/third-party/wikimedia/pageviews/pageviews-20190410-140000.gz. ملف البيانات هو ملف CSV مضغوط بتنسيق GZip. يمكنك تحميل هذا الملف مباشرةً باستخدام أداة سطر الأوامر bq. كجزء من أمر التحميل، يمكنك أيضًا وصف مخطط الملف.
bq load \
--source_format CSV \
--field_delimiter " " \
--allow_jagged_rows \
--quote "" \
--max_bad_records 3 \
$GOOGLE_CLOUD_PROJECT:lab.pageviews_20190410_140000 \
gs://cloud-samples-data/third-party/wikimedia/pageviews/pageviews-20190410-140000.gz \
wiki,title,requests:integer,zero:integer
استخدمت بعض الخيارات المتقدّمة لتحميل ملف مرات مشاهدة الصفحة:
- اضبط القيمة على
--source_format CSVللإشارة إلى أنّه يجب تحليل الملف كملف CSV. هذه الخطوة اختيارية لأنّ CSV هو التنسيق التلقائي. - اضبط
--field_delimiter " "للإشارة إلى أنّه يتم استخدام مسافة واحدة لتحديد الحقول. - اضبط
--allow_jagged_rowsلتضمين الصفوف التي تحتوي على عدد أقل من الأعمدة وتجاهل الأخطاء أثناء تحميل ملف CSV. - اضبط القيمة على
--quote ""للإشارة إلى أنّ السلاسل غير مقتبسة. - اضبط
--max_bad_records 3لتجاهل 3 أخطاء على الأكثر أثناء تحليل ملف CSV.
يمكنك الاطّلاع على مزيد من المعلومات حول سطر الأوامر bq في المستندات.
5- معاينة مجموعة البيانات
في وحدة تحكّم BigQuery، افتح أحد الجداول التي حمّلتها للتو.
- توسيع نطاق المشروع
- وسِّع مجموعة البيانات.
- اختَر الجدول.

يمكنك الاطّلاع على مخطط الجدول في علامة التبويب المخطط. 4. يمكنك معرفة حجم البيانات في الجدول من خلال الانتقال إلى علامة التبويب التفاصيل:

- افتح علامة التبويب معاينة للاطّلاع على مجموعة من الصفوف من الجدول.

6. إنشاء طلب بحث
- انقر على إنشاء طلب بحث جديد:

سيؤدي ذلك إلى فتح محرّر طلبات البحث:

- ابحث عن إجمالي عدد المشاهدات على Wikimedia بين الساعة 2:00 والساعة 3:00 بعد الظهر في 10 أبريل 2019، وذلك من خلال كتابة طلب البحث التالي:
SELECT SUM(requests) FROM `lab.pageviews_20190410_140000`
- انقر على تشغيل:

بعد بضع ثوانٍ، ستظهر النتيجة في أسفل الصفحة، وستوضّح لك أيضًا مقدار البيانات التي تمت معالجتها:

عالج هذا الطلب 123.9 ميغابايت، على الرغم من أنّ حجم الجدول يبلغ 691.4 ميغابايت. لا تعالج BigQuery سوى وحدات البايت من الأعمدة المستخدَمة في طلب البحث، لذا يمكن أن يكون إجمالي كمية البيانات المعالَجة أقل بكثير من حجم الجدول. باستخدام التجميع والتقسيم، يمكن تقليل كمية البيانات التي تتم معالجتها بشكل أكبر.
7. طلبات بحث أكثر تقدّمًا
العثور على عدد مشاهدات صفحات Wikipedia
تحتوي مجموعة بيانات Wikimedia على عدد مرات مشاهدة الصفحات لجميع مشاريع Wikimedia (بما في ذلك Wikipedia وWiktionary وWikibooks وWikiquotes). يمكنك تضييق نطاق البحث ليشمل صفحات Wikipedia باللغة الإنجليزية فقط من خلال إضافة عبارة WHERE:
SELECT SUM(requests), wiki FROM `lab.pageviews_20190410_140000` WHERE wiki = "en" GROUP BY wiki

لاحظ أنّه من خلال طلب البحث عن عمود إضافي، wiki، زادت كمية البيانات التي تمت معالجتها من 124 ميغابايت إلى 204 ميغابايت.
يتوافق BigQuery مع العديد من عبارات SQL المعروفة، مثل CONTAINS وGROUP BY, ORDER BY وعدد من دوال التجميع. بالإضافة إلى ذلك، يمكنك أيضًا استخدام التعابير العادية للاستعلام عن الحقول النصية. جرِّب أحد الخيارات التالية:
SELECT title, SUM(requests) requests FROM `lab.pageviews_20190410_140000` WHERE wiki = "en" AND REGEXP_CONTAINS(title, 'Red.*t') GROUP BY title ORDER BY requests DESC
إجراء طلب بحث في جداول متعددة
يمكنك اختيار مجموعة من الجداول لتكوين عملية دمج باستخدام جدول أحرف بدل.
- أولاً، أنشئ جدولاً ثانيًا لتنفيذ طلب بحث عليه من خلال تحميل مشاهدات الصفحة للساعة التالية في جدول جديد:
bq load \
--source_format CSV \
--field_delimiter " " \
--quote "" \
$GOOGLE_CLOUD_PROJECT:lab.pageviews_20190410_150000 \
gs://cloud-samples-data/third-party/wikimedia/pageviews/pageviews-20190410-150000.gz \
wiki,title,requests:integer,zero:integer
- في محرّر طلب البحث، أرسِل طلب بحث إلى كلا الجدولَين اللذين حمّلتهما من خلال طلب البحث في الجداول باستخدام "
pageviews_2019" كبادئة:
SELECT title, SUM(requests) requests FROM `lab.pageviews_2019*` WHERE wiki = "en" AND REGEXP_CONTAINS(title, 'Red.*t') GROUP BY title ORDER BY requests DESC
يمكنك فلترة الجداول بشكل أكثر انتقائية باستخدام العمود الزائف _TABLE_SUFFIX. يقتصر طلب البحث هذا على الجداول التي تتوافق مع 10 أبريل.
SELECT title, SUM(requests) requests FROM `lab.pageviews_2019*` WHERE _TABLE_SUFFIX BETWEEN '0410' AND '0410_9999999' AND wiki = "en" AND REGEXP_CONTAINS(title, 'Red.*t') GROUP BY title ORDER BY requests DESC
8. تنظيف
يمكنك اختياريًا حذف مجموعة البيانات التي أنشأتها باستخدام الأمر bq rm. استخدِم العلامة -r لإزالة أي جداول تتضمّنها.
bq rm -r lab
9- تهانينا!
استخدمت BigQuery وSQL للاستعلام عن مجموعة بيانات حقيقية حول عدد مشاهدات صفحات Wikipedia. يمكنك الآن طلب البحث عن مجموعات بيانات كبيرة جدًا.
مزيد من المعلومات
- يمكنك الاطّلاع على منتدى BigQuery على Reddit لمعرفة كيفية استخدام الآخرين لأداة BigQuery اليوم.
- يمكنك العثور على مجموعات البيانات العامة المتوفّرة في BigQuery.
- كيفية تحميل البيانات إلى BigQuery