مجموعه داده های ویکی پدیا را در BigQuery جستجو کنید

۱. مرور کلی

بیگ‌کوئری (BigQuery) پایگاه داده تحلیلی کم‌هزینه، بدون نیاز به عملیات (NoOps) و کاملاً مدیریت‌شده گوگل است. با بیگ‌کوئری، می‌توانید ترابایت‌ها داده را بدون نیاز به هیچ زیرساختی برای مدیریت، جستجو کنید و نیازی به مدیر پایگاه داده ندارید. بیگ‌کوئری از SQL آشنا استفاده می‌کند و می‌تواند از مدل پرداخت به ازای استفاده (pay-as-you-go) بهره ببرد. بیگ‌کوئری به شما امکان می‌دهد تا بر تجزیه و تحلیل داده‌ها تمرکز کنید تا به بینش‌های معناداری برسید.

در این آزمایشگاه کد، شما با استفاده از BigQuery مجموعه داده‌های ویکی‌پدیا را بررسی می‌کنید.

آنچه یاد خواهید گرفت

  • نحوه استفاده از بیگ کوئری
  • نحوه بارگذاری یک مجموعه داده واقعی در BigQuery
  • چگونه یک کوئری بنویسیم تا بینشی نسبت به یک مجموعه داده بزرگ به دست آوریم

آنچه نیاز دارید

نظرسنجی

چگونه از این آموزش استفاده خواهید کرد؟

فقط خواندنی آن را بخوانید و تمرین‌ها را انجام دهید

تجربه خود را با Google Cloud چگونه ارزیابی می‌کنید؟

تازه کار متوسط ماهر

۲. تنظیمات و الزامات

فعال کردن بیگ‌کوئری

اگر از قبل حساب گوگل ندارید، باید یکی ایجاد کنید .

  1. وارد کنسول گوگل کلود شوید و به BigQuery بروید. همچنین می‌توانید با وارد کردن آدرس اینترنتی زیر در مرورگر خود، رابط کاربری وب BigQuery را مستقیماً باز کنید.
https://console.cloud.google.com/bigquery
  1. شرایط خدمات را بپذیرید.
  2. قبل از اینکه بتوانید از BigQuery استفاده کنید، باید یک پروژه ایجاد کنید. برای ایجاد پروژه جدید خود، دستورالعمل‌ها را دنبال کنید.

یک نام برای پروژه انتخاب کنید و شناسه پروژه را یادداشت کنید. ۱۸۸۴۴۰۵a۶۴ce۵۷۶۵.png

شناسه پروژه یک نام منحصر به فرد در تمام پروژه‌های Google Cloud است که بعداً در این آزمایشگاه کد به عنوان PROJECT_ID به آن اشاره خواهد شد.

این آزمایشگاه کد از منابع BigQuery در محدوده‌ی سندباکس BigQuery استفاده می‌کند. حساب کاربری لازم نیست. اگر بعداً بخواهید محدودیت‌های سندباکس را حذف کنید، می‌توانید با ثبت‌نام در دوره‌ی آزمایشی رایگان Google Cloud، یک حساب کاربری اضافه کنید.

شما مجموعه داده‌های ویکی‌پدیا را در بخش بعدی بارگذاری می‌کنید.

۳. ایجاد یک مجموعه داده

ابتدا، یک مجموعه داده جدید در پروژه ایجاد کنید. یک مجموعه داده از چندین جدول تشکیل شده است.

  1. برای ایجاد یک مجموعه داده، روی نام پروژه در زیر پنل منابع کلیک کنید، سپس روی ایجاد مجموعه داده کلیک کنید:

4a5983b4dc299705.png

  1. به عنوان شناسه مجموعه داده، lab وارد کنید:

a592b5b9be20fdec.png

  1. برای ایجاد یک مجموعه داده خالی، روی «ایجاد مجموعه داده» کلیک کنید.

۴. بارگذاری داده‌ها با برنامه خط فرمان bq

فعال کردن پوسته ابری

  1. از کنسول ابری، روی فعال کردن پوسته ابری کلیک کنید 4292cbf4971c9786.png .

bce75f34b2c53987.png

اگر قبلاً Cloud Shell را شروع نکرده‌اید، یک صفحه میانی (در پایین صفحه) به شما نمایش داده می‌شود که توضیح می‌دهد چیست. در این صورت، روی ادامه کلیک کنید (و دیگر هرگز آن را نخواهید دید). آن صفحه یکبار مصرف به این شکل است:

70f315d7b402b476.png

آماده‌سازی و اتصال به Cloud Shell فقط چند لحظه طول می‌کشد.

fbe3a0674c982259.png

این ماشین مجازی با تمام ابزارهای توسعه مورد نیاز شما پر شده است. این ماشین یک دایرکتوری خانگی ۵ گیگابایتی دائمی ارائه می‌دهد و در فضای ابری گوگل اجرا می‌شود که عملکرد شبکه و احراز هویت را تا حد زیادی بهبود می‌بخشد. بخش عمده‌ای از کار شما در این آزمایشگاه کد، اگر نگوییم همه، را می‌توان به سادگی با یک مرورگر یا کروم‌بوک انجام داد.

پس از اتصال به 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

برای راحتی شما، برخی از داده‌های مربوط به ۱۰ آوریل ۲۰۱۹، از مجموعه داده‌های بازدید صفحات ویکی‌مدیا ، در فضای ذخیره‌سازی ابری گوگل به 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

شما از چند گزینه پیشرفته برای بارگذاری فایل page-views استفاده کرده‌اید:

  • مقدار --source_format CSV طوری تنظیم کنید که نشان دهد فایل باید به صورت فایل CSV تجزیه شود. این مرحله اختیاری است زیرا CSV فرمت پیش‌فرض است.
  • برای مشخص کردن اینکه برای جدا کردن فیلدها از یک فاصله استفاده شود، از --field_delimiter " " استفاده کنید.
  • --allow_jagged_rows طوری تنظیم کنید که ردیف‌هایی با تعداد ستون‌های کمتر را شامل شود و هنگام بارگذاری فایل CSV، خطاها را نادیده بگیرد.
  • برای نشان دادن اینکه رشته‌ها بدون نقل قول هستند، از --quote "" استفاده کنید.
  • مقدار --max_bad_records 3 قرار دهید تا حداکثر 3 خطا هنگام تجزیه فایل CSV نادیده گرفته شود.

می‌توانید اطلاعات بیشتری در مورد خط فرمان bq را در مستندات آن بیابید.

۵. پیش‌نمایش مجموعه داده‌ها

در کنسول BigQuery، یکی از جداولی را که بارگذاری کرده‌اید، باز کنید.

  1. پروژه را گسترش دهید.
  2. مجموعه داده‌ها را گسترش دهید.
  3. جدول را انتخاب کنید. 99f875c838ed9a58.png

می‌توانید طرح جدول را در برگه Schema مشاهده کنید. ۴. با رفتن به برگه Details ، میزان داده‌های موجود در جدول را بیابید:

742cd54fbf17085.png

  1. برای مشاهده‌ی ردیف‌های انتخابی از جدول، تب پیش‌نمایش (Preview ) را باز کنید.

397a9c25480735cc.png

۶. یک پرس‌وجو بنویسید

  1. روی ایجاد پرس‌وجوی جدید کلیک کنید:

cc28282a25c9746e.png

این کار ویرایشگر کوئری را باز می‌کند:

e881286d275ab4ec.png

  1. با نوشتن این کوئری، تعداد کل بازدیدهای ویکی‌مدیا را بین ساعت ۲ تا ۳ بعد از ظهر در تاریخ ۱۰ آوریل ۲۰۱۹ پیدا کنید:
SELECT SUM(requests)
FROM `lab.pageviews_20190410_140000`
  1. روی اجرا کلیک کنید:

9abb7c4039961f5b.png

ظرف چند ثانیه، نتیجه در پایین فهرست می‌شود و همچنین به شما می‌گوید که چه مقدار داده پردازش شده است:

a119b65f2ca49e41.png

این پرس‌وجو ۱۲۳.۹ مگابایت پردازش کرد، در حالی که حجم جدول ۶۹۱.۴ مگابایت است. بیگ‌کوئری فقط بایت‌های ستون‌هایی را پردازش می‌کند که در پرس‌وجو استفاده شده‌اند، بنابراین حجم کل داده‌های پردازش‌شده می‌تواند به‌طور قابل‌توجهی کمتر از حجم جدول باشد. با خوشه‌بندی و پارتیشن‌بندی ، حجم داده‌های پردازش‌شده می‌تواند حتی بیشتر کاهش یابد.

۷. پرس‌وجوهای پیشرفته‌تر

مشاهده تعداد بازدید صفحات ویکی پدیا

مجموعه داده‌های ویکی‌مدیا شامل تعداد بازدیدهای صفحه برای همه پروژه‌های ویکی‌مدیا (از جمله ویکی‌پدیا، ویکی‌واژه، ویکی‌کتاب و ویکی‌گفتاورد) است. با اضافه کردن یک عبارت WHERE ، پرس‌وجو را فقط به صفحات انگلیسی ویکی‌پدیا محدود کنید:

SELECT SUM(requests), wiki
FROM `lab.pageviews_20190410_140000`
WHERE wiki = "en"
GROUP BY wiki

d6c6c7901c314da7.png

توجه داشته باشید که با پرس و جوی یک ستون اضافی، wiki ، مقدار داده پردازش شده از ۱۲۴ مگابایت به ۲۰۴ مگابایت افزایش یافت.

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

پرس و جو در چندین جدول

شما می‌توانید با استفاده از جدول wildcard، طیفی از جداول را برای تشکیل اتحادیه انتخاب کنید.

  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. در ویرایشگر پرس‌وجو (Query editor )، با استفاده از پرس‌وجوی جداولی که پیشوند " 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، جداول را به صورت گزینشی‌تری فیلتر کنید . این کوئری به جداول مربوط به ۱۰ آوریل محدود می‌شود.

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

۸. تمیز کردن

در صورت تمایل، مجموعه داده‌ای که با دستور bq rm ایجاد کرده‌اید را حذف کنید. از پرچم -r برای حذف جداول موجود در آن استفاده کنید.

bq rm -r lab

۹. تبریک می‌گویم!

شما از BigQuery و SQL برای پرس‌وجو در مجموعه داده‌های بازدید از صفحات ویکی‌پدیا در دنیای واقعی استفاده کردید. شما قدرت پرس‌وجو در مجموعه داده‌های در مقیاس پتابایت را دارید!

بیشتر بدانید