الاستعلام عن مجموعة بيانات ويكيبيديا في BigQuery

1. نظرة عامة

‫BigQuery هو قاعدة بيانات إحصاءات مُدارة بالكامل ومنخفضة التكلفة ولا تتطلّب أي عمليات من Google. باستخدام BigQuery، يمكنك طلب البحث عن تيرابايت وتيرابايت من البيانات بدون الحاجة إلى إدارة أي بنية أساسية، كما أنّك لن تحتاج إلى مسؤول قاعدة بيانات. تستخدم BigQuery لغة SQL المألوفة ويمكنها الاستفادة من نموذج الدفع حسب الاستخدام. يتيح لك BigQuery التركيز على تحليل البيانات للعثور على إحصاءات مفيدة.

في هذا الدرس العملي، ستستكشف مجموعة بيانات Wikipedia باستخدام BigQuery.

أهداف الدورة التعليمية

  • كيفية استخدام BigQuery
  • كيفية تحميل مجموعة بيانات حقيقية إلى BigQuery
  • كيفية كتابة طلب بحث للحصول على إحصاءات حول مجموعة بيانات كبيرة

المتطلبات

  • مشروع على السحابة الإلكترونية من Google
  • متصفّح، مثل Google Chrome أو Firefox

استطلاع الرأي

كيف ستستخدم هذا البرنامج التعليمي؟

إذن بالقراءة فقط قراءة المحتوى وإكمال التمارين

كيف تقيّم تجربتك مع Google Cloud؟

مبتدئ متوسط متقدّم

2. الإعداد والمتطلبات

تفعيل BigQuery

إذا لم يكن لديك حساب على Google، عليك إنشاء حساب.

  1. سجِّل الدخول إلى وحدة تحكّم Google Cloud وانتقِل إلى BigQuery. يمكنك أيضًا فتح واجهة مستخدم الويب في BigQuery مباشرةً من خلال إدخال عنوان URL التالي في المتصفّح.
https://console.cloud.google.com/bigquery
  1. اقبَل بنود الخدمة.
  2. قبل أن تتمكّن من استخدام BigQuery، عليك إنشاء مشروع. اتّبِع التعليمات لإنشاء مشروعك الجديد.

اختَر اسم مشروع ودوِّن رقم تعريف المشروع. 1884405a64ce5765.png

رقم تعريف المشروع هو اسم فريد في جميع مشاريع Google Cloud. سيتم الإشارة إليه لاحقًا في هذا الدرس العملي باسم PROJECT_ID.

يستخدم هذا الدرس التطبيقي العملي موارد BigQuery ضمن حدود وضع الحماية في BigQuery. ليس من الضروري توفُّر حساب فوترة. إذا أردت إزالة حدود وضع الحماية لاحقًا، يمكنك إضافة حساب فوترة من خلال الاشتراك في الفترة التجريبية المجانية من Google Cloud.

يمكنك تحميل مجموعة بيانات Wikipedia في القسم التالي.

3- إنشاء مجموعة بيانات

أولاً، أنشئ مجموعة بيانات جديدة في المشروع. تتألف مجموعة البيانات من جداول متعددة.

  1. لإنشاء مجموعة بيانات، انقر على اسم المشروع ضمن لوحة الموارد، ثم انقر على إنشاء مجموعة بيانات:

4a5983b4dc299705.png

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

a592b5b9be20fdec.png

  1. انقر على إنشاء مجموعة بيانات لإنشاء مجموعة بيانات فارغة.

4. تحميل البيانات باستخدام برنامج سطر الأوامر bq

تفعيل Cloud Shell

  1. من Cloud Console، انقر على تفعيل Cloud Shell 4292cbf4971c9786.png.

bce75f34b2c53987.png

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

70f315d7b402b476.png

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

fbe3a0674c982259.png

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

بعد الاتصال بـ Cloud Shell، من المفترض أن يظهر لك أنّه تم إثبات هويتك وأنّه تم ضبط المشروع على رقم تعريف مشروعك.

  1. نفِّذ الأمر التالي في 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`
  1. نفِّذ الأمر التالي في 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، افتح أحد الجداول التي حمّلتها للتو.

  1. توسيع نطاق المشروع
  2. وسِّع مجموعة البيانات.
  3. اختَر الجدول. 99f875c838ed9a58.png

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

742cd54fbf17085.png

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

397a9c25480735cc.png

6. إنشاء طلب بحث

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

cc28282a25c9746e.png

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

e881286d275ab4ec.png

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

9abb7c4039961f5b.png

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

a119b65f2ca49e41.png

عالج هذا الطلب 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

d6c6c7901c314da7.png

لاحظ أنّه من خلال طلب البحث عن عمود إضافي، 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

إجراء طلب بحث في جداول متعددة

يمكنك اختيار مجموعة من الجداول لتكوين عملية دمج باستخدام جدول أحرف بدل.

  1. أولاً، أنشئ جدولاً ثانيًا لتنفيذ طلب بحث عليه من خلال تحميل مشاهدات الصفحة للساعة التالية في جدول جديد:
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
  1. في محرّر طلب البحث، أرسِل طلب بحث إلى كلا الجدولَين اللذين حمّلتهما من خلال طلب البحث في الجداول باستخدام "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. يمكنك الآن طلب البحث عن مجموعات بيانات كبيرة جدًا.

مزيد من المعلومات