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

1. بررسی اجمالی

BigQuery پایگاه داده تحلیلی کاملاً مدیریت شده، NoOps و کم هزینه Google است. با BigQuery می‌توانید ترابایت و ترابایت داده را بدون داشتن هیچ زیرساختی برای مدیریت جستجو کنید و به مدیر پایگاه داده نیازی ندارید. BigQuery از SQL آشنا استفاده می‌کند و می‌تواند از یک مدل پرداختی استفاده کند. BigQuery به شما اجازه می دهد تا بر تجزیه و تحلیل داده ها تمرکز کنید تا بینش های معنی دار پیدا کنید.

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

چیزی که یاد خواهید گرفت

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

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

نظرسنجی

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

فقط بخوانید آن را بخوانید و تمرینات را کامل کنید

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

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

2. راه اندازی و الزامات

BigQuery را فعال کنید

اگر قبلاً یک حساب Google ندارید، باید یک حساب ایجاد کنید .

  1. به Google Cloud Console وارد شوید و به BigQuery بروید. همچنین می توانید با وارد کردن URL زیر در مرورگر خود، رابط وب BigQuery را مستقیماً باز کنید.
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، روی Activate Cloud Shell کلیک کنید 4292cbf4971c9786.png .

bce75f34b2c53987.png

اگر قبلاً Cloud Shell را راه‌اندازی نکرده‌اید، یک صفحه میانی (در زیر تاشو) برای شما نمایش داده می‌شود که آن را توصیف می‌کند. اگر اینطور است، روی Continue کلیک کنید (و دیگر آن را نخواهید دید). در اینجا به نظر می رسد که آن صفحه یک بار مصرف:

70f315d7b402b476.png

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

fbe3a0674c982259.png

این ماشین مجازی با تمام ابزارهای توسعه مورد نیاز شما بارگذاری شده است. این دایرکتوری اصلی 5 گیگابایتی دائمی را ارائه می دهد و در Google Cloud اجرا می شود و عملکرد شبکه و احراز هویت را بسیار افزایش می دهد. بیشتر، اگر نه همه، کار شما در این کد لبه را می توان به سادگی با یک مرورگر یا Chromebook انجام داد.

پس از اتصال به Cloud Shell، باید ببینید که قبلاً احراز هویت شده اید و پروژه قبلاً روی ID پروژه شما تنظیم شده است.

  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، از مجموعه داده بازدید از صفحه ویکی‌مدیا در Google Cloud Storage به آدرس gs://cloud-samples-data/third-party/wikimedia/pageviews/pageviews-20190410-140000.gz . فایل داده یک فایل CSV GZip'ed است. می توانید این فایل را مستقیماً با استفاده از ابزار خط فرمان bq بارگیری کنید. به عنوان بخشی از فرمان load، شما همچنین طرح واره فایل را توضیح می دهید.

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 را تنظیم کنید تا در هنگام تجزیه فایل CSV حداکثر 3 خطا را نادیده بگیرد.

می توانید در مورد خط فرمان bq در مستندات بیشتر بیاموزید.

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

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

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

شما می توانید طرح جدول را در تب Schema مشاهده کنید. 4. با رفتن به برگه جزئیات ، متوجه شوید که چه مقدار داده در جدول وجود دارد:

742cd54fbf17085.png

  1. برای دیدن مجموعه ای از ردیف های جدول، برگه پیش نمایش را باز کنید.

397a9c25480735cc.png

6. یک پرس و جو بنویسید

  1. روی نوشتن پرسش جدید کلیک کنید:

cc28282a25c9746e.png

با این کار ویرایشگر Query ظاهر می شود:

e881286d275ab4ec.png

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

9abb7c4039961f5b.png

در عرض چند ثانیه، نتیجه در پایین لیست می شود و همچنین به شما می گوید که چه مقدار داده پردازش شده است:

a119b65f2ca49e41.png

این پرس و جو 123.9 مگابایت را پردازش کرد، حتی اگر جدول 691.4 مگابایت است. BigQuery فقط بایت های ستون هایی را که در پرس و جو استفاده می شود پردازش می کند، بنابراین مقدار کل داده های پردازش شده می تواند به طور قابل توجهی کمتر از اندازه جدول باشد. با خوشه بندی و پارتیشن بندی ، میزان داده های پردازش شده را می توان حتی بیشتر کاهش داد.

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

مشاهده صفحه ویکی پدیا را پیدا کنید

مجموعه داده ویکی‌مدیا شامل نماهای صفحه برای همه پروژه‌های ویکی‌مدیا (از جمله ویکی‌پدیا، ویکی‌واژه، ویکی‌کتاب‌ها و ویکی‌گفت‌وگوها) است. با افزودن عبارت 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. در ویرایشگر Query ، از هر دو جدولی که بارگیری کرده‌اید، با جست‌وجوی جداول با پیشوند « 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 برای پرس و جو از مجموعه داده بازدیدهای صفحه ویکی پدیا در دنیای واقعی استفاده کردید. شما این قدرت را دارید که مجموعه داده های مقیاس پتابایت را پرس و جو کنید!

بیشتر بدانید