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

1. نظرة عامة

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

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

ما ستتعرَّف عليه

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

المتطلبات

استطلاع

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

للقراءة فقط اقرأها وأكمِل التمارين

ما هو تقييمك لتجربتك مع Google Cloud؟

حديث متوسط بارع

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

تفعيل BigQuery

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

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

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

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

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

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

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. ملف البيانات هو ملف GZip'd CSV. يمكنك تحميل هذا الملف مباشرةً باستخدام أداة سطر الأوامر 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 و3 بعد الظهر في 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 وWikibook وWikiquotes). يمكنك تضييق نطاق طلب البحث ليقتصر على صفحات ويكيبيديا الإنجليزية فقط عن طريق إضافة عبارة 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_COMMENTER. يقتصر طلب البحث هذا على الجداول المقابلة في 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 للاستعلام عن مجموعة بيانات مشاهدات الصفحات في العالم الحقيقي على ويكيبيديا. لديك القدرة على الاستعلام عن مجموعات البيانات على مقياس بيتابايت!

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