1. نظرة عامة
BigQuery هي قاعدة بيانات إحصاءات منخفضة التكلفة مُدارة بالكامل من Google، وهي NoOps. باستخدام BigQuery، يمكنك الاستعلام عن البيانات التي حجمها تيرابايت وتيرابايت بدون الحاجة إلى أي بنية أساسية لإدارتها، ولن تحتاج إلى مشرف قاعدة بيانات. يستخدم BigQuery لغة SQL مألوفة ويمكنها الاستفادة من نموذج الدفع حسب الاستخدام. يتيح لك BigQuery التركيز على تحليل البيانات للعثور على رؤى ذات مغزى.
في هذا الدرس التطبيقي، يمكنك استكشاف مجموعة بيانات ويكيبيديا باستخدام BigQuery.
ما ستتعرَّف عليه
- كيفية استخدام BigQuery
- كيفية تحميل مجموعة بيانات حقيقية في BigQuery
- كيفية كتابة استعلام للحصول على رؤية حول مجموعة بيانات كبيرة
المتطلبات
- مشروع على Google Cloud
- متصفح، مثل Google Chrome أو Firefox
استطلاع
كيف ستستخدم هذا البرنامج التعليمي؟
ما هو تقييمك لتجربتك مع Google Cloud؟
2. الإعداد والمتطلبات
تفعيل BigQuery
إذا لم يكن لديك حساب على Google، عليك إنشاء حساب.
- سجِّل الدخول إلى Google Cloud Console وانتقِل إلى BigQuery. يمكنك أيضًا فتح واجهة مستخدم الويب BigQuery مباشرةً عن طريق إدخال عنوان URL التالي في متصفحك.
https://console.cloud.google.com/bigquery
- وافِق على بنود الخدمة.
- قبل أن تتمكن من استخدام BigQuery، يجب إنشاء مشروع. اتبع التعليمات لإنشاء مشروعك الجديد.
اختَر اسم مشروع ودوِّن رقم تعريف المشروع.
رقم تعريف المشروع هو اسم فريد في جميع مشاريع Google Cloud. ستتم الإشارة إليها لاحقًا في هذا الدرس التطبيقي حول الترميز باسم PROJECT_ID
.
يستخدم هذا الدرس التطبيقي حول الترميز موارد BigQuery ضمن حدود وضع الحماية في BigQuery. ولا يكون حساب الفوترة مطلوبًا. إذا كنت ترغب في وقت لاحق في إزالة حدود وضع الحماية، يمكنك إضافة حساب فوترة من خلال الاشتراك في الفترة التجريبية المجانية من Google Cloud.
تقوم بتحميل مجموعة بيانات ويكيبيديا في القسم التالي.
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
. ملف البيانات هو ملف 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، افتح أحد الجداول التي قمت بتحميلها للتو.
- توسيع المشروع
- وسِّع مجموعة البيانات.
- اختَر الجدول.
يمكنك الاطّلاع على مخطط الجدول في علامة التبويب المخطط. 4. يمكنك معرفة حجم البيانات الواردة في الجدول من خلال الانتقال إلى علامة التبويب التفاصيل:
- افتح علامة التبويب معاينة للاطّلاع على مجموعة من الصفوف من الجدول.
6- إنشاء طلب بحث
- انقر على إنشاء طلب بحث جديد:
يؤدي ذلك إلى ظهور محرِّر طلبات البحث:
- اعثر على العدد الإجمالي لمشاهدات Wikimedia بين الساعة 2 و3 بعد الظهر في 10 نيسان (أبريل) 2019، عن طريق كتابة هذا الاستعلام:
SELECT SUM(requests) FROM `lab.pageviews_20190410_140000`
- انقر على تشغيل:
في غضون بضع ثوانٍ، تظهر النتيجة في الأسفل وتعرض لك أيضًا مقدار البيانات التي تمت معالجتها:
تمّت معالجة هذا الطلب بحجم 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
لاحظ أنه من خلال إجراء طلب بحث في عمود إضافي، 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_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 للاستعلام عن مجموعة بيانات مشاهدات الصفحات في العالم الحقيقي على ويكيبيديا. لديك القدرة على الاستعلام عن مجموعات البيانات على مقياس بيتابايت!
مزيد من المعلومات
- اطّلِع على تطبيق subreddit في BigQuery للتعرّف على الطريقة التي يستخدم بها الآخرون BigQuery اليوم.
- يمكنك العثور على مجموعات البيانات العلنية المتوفّرة في BigQuery.
- تعرّف على كيفية تحميل البيانات إلى BigQuery.