১. সংক্ষিপ্ত বিবরণ
BigQuery হলো গুগলের সম্পূর্ণভাবে পরিচালিত, NoOps এবং স্বল্প খরচের একটি অ্যানালিটিক্স ডেটাবেস। BigQuery-এর সাহায্যে আপনি কোনো পরিকাঠামো ব্যবস্থাপনার ঝামেলা ছাড়াই টেরাবাইট পরিমাণ ডেটা কোয়েরি করতে পারেন এবং এর জন্য কোনো ডেটাবেস অ্যাডমিনিস্ট্রেটরেরও প্রয়োজন হয় না। BigQuery পরিচিত SQL ব্যবহার করে এবং এটি পে-অ্যাজ-ইউ-গো মডেলের সুবিধা নিতে পারে। BigQuery আপনাকে অর্থপূর্ণ অন্তর্দৃষ্টি খুঁজে বের করার জন্য ডেটা বিশ্লেষণে মনোযোগ দিতে সাহায্য করে।
এই কোডল্যাবে, আপনি BigQuery ব্যবহার করে উইকিপিডিয়া ডেটাসেট অন্বেষণ করবেন।
আপনি যা শিখবেন
- BigQuery কীভাবে ব্যবহার করবেন
- BigQuery-তে কীভাবে একটি বাস্তব ডেটাসেট লোড করবেন
- একটি বৃহৎ ডেটাসেট থেকে অন্তর্দৃষ্টি লাভের জন্য কীভাবে কোয়েরি লিখতে হয়
আপনার যা যা লাগবে
- একটি গুগল ক্লাউড প্রকল্প
- একটি ব্রাউজার, যেমন গুগল ক্রোম বা ফায়ারফক্স
জরিপ
আপনি এই টিউটোরিয়ালটি কীভাবে ব্যবহার করবেন?
গুগল ক্লাউড ব্যবহারের অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?
২. সেটআপ এবং প্রয়োজনীয়তা
BigQuery সক্রিয় করুন
যদি আপনার আগে থেকে কোনো গুগল অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।
- Google Cloud Console- এ সাইন ইন করুন এবং BigQuery-তে যান। এছাড়া, আপনি আপনার ব্রাউজারে নিম্নলিখিত URL-টি লিখে সরাসরি BigQuery ওয়েব UI-ও খুলতে পারেন।
https://console.cloud.google.com/bigquery
- পরিষেবার শর্তাবলী গ্রহণ করুন।
- BigQuery ব্যবহার করার আগে, আপনাকে অবশ্যই একটি প্রজেক্ট তৈরি করতে হবে। আপনার নতুন প্রজেক্টটি তৈরি করার জন্য নির্দেশাবলী অনুসরণ করুন।
একটি প্রকল্পের নাম নির্বাচন করুন এবং প্রকল্প আইডিটি লিখে রাখুন। 
প্রজেক্ট আইডি হলো সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে একটি অনন্য নাম। এই কোডল্যাবে পরবর্তীতে এটিকে PROJECT_ID হিসাবে উল্লেখ করা হবে।
এই কোডল্যাবটি BigQuery স্যান্ডবক্সের সীমার মধ্যে BigQuery রিসোর্স ব্যবহার করে। এর জন্য কোনো বিলিং অ্যাকাউন্টের প্রয়োজন নেই। আপনি যদি পরবর্তীতে স্যান্ডবক্সের সীমা তুলে দিতে চান, তাহলে Google Cloud-এর ফ্রি ট্রায়ালের জন্য সাইন আপ করে একটি বিলিং অ্যাকাউন্ট যোগ করতে পারেন।
পরবর্তী অংশে আপনি উইকিপিডিয়া ডেটাসেটটি লোড করবেন।
৩. একটি ডেটাসেট তৈরি করুন
প্রথমে, প্রজেক্টে একটি নতুন ডেটাসেট তৈরি করুন। একটি ডেটাসেট একাধিক টেবিল নিয়ে গঠিত।
- একটি ডেটাসেট তৈরি করতে, রিসোর্স প্যানেলের অধীনে প্রজেক্টের নামে ক্লিক করুন, তারপর 'Create dataset'-এ ক্লিক করুন।

- ডেটা সেট আইডি হিসাবে
labপ্রবেশ করান:

- একটি খালি ডেটাসেট তৈরি করতে 'Create dataset'-এ ক্লিক করুন।
৪. bq কমান্ড-লাইন প্রোগ্রাম ব্যবহার করে ডেটা লোড করুন।
ক্লাউড শেল সক্রিয় করুন
- ক্লাউড কনসোল থেকে, Activate Cloud Shell-এ ক্লিক করুন।
.

আপনি যদি আগে কখনো ক্লাউড শেল চালু না করে থাকেন, তাহলে এটি কী তা বর্ণনা করে একটি মধ্যবর্তী স্ক্রিন (নিচে দেওয়া আছে) আপনার সামনে আসবে। যদি তাই হয়, তাহলে 'Continue'-তে ক্লিক করুন (এবং আপনি এটি আর কখনো দেখতে পাবেন না)। একবারের জন্য আসা সেই স্ক্রিনটি দেখতে এইরকম:

ক্লাউড শেল প্রস্তুত করতে এবং এর সাথে সংযোগ স্থাপন করতে মাত্র কয়েক মুহূর্ত সময় লাগা উচিত।

এই ভার্চুয়াল মেশিনটিতে আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুলস লোড করা আছে। এটি একটি স্থায়ী ৫ জিবি হোম ডিরেক্টরি প্রদান করে এবং গুগল ক্লাউডে চলে, যা নেটওয়ার্ক পারফরম্যান্স ও অথেনটিকেশনকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার প্রায় সমস্ত কাজই শুধুমাত্র একটি ব্রাউজার বা আপনার ক্রোমবুক দিয়ে করা সম্ভব।
ক্লাউড শেলে সংযুক্ত হওয়ার পর আপনি দেখতে পাবেন যে, আপনাকে ইতিমধ্যেই প্রমাণীকৃত করা হয়েছে এবং প্রজেক্টটি আপনার প্রজেক্ট আইডিতে সেট করা আছে।
- আপনি প্রমাণীকৃত কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud auth list
কমান্ড আউটপুট
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- 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 পাওয়া যাচ্ছে। ডেটা ফাইলটি একটি GZip করা 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
পেজ-ভিউ ফাইলটি লোড করার জন্য আপনি কয়েকটি উন্নত অপশন ব্যবহার করেছেন:
- ফাইলটিকে CSV ফাইল হিসেবে পার্স করা হবে তা বোঝাতে
--source_format CSVসেট করুন। এই ধাপটি ঐচ্ছিক, কারণ CSV হলো ডিফল্ট ফরম্যাট। - ফিল্ডগুলোকে আলাদা করতে একটিমাত্র স্পেস ব্যবহার করা হবে, তা বোঝাতে
--field_delimiter " "সেট করুন। - কম সংখ্যক কলামযুক্ত সারিগুলো অন্তর্ভুক্ত করতে এবং CSV ফাইল লোড করার সময় ত্রুটি উপেক্ষা করতে
--allow_jagged_rowsসেট করুন। - স্ট্রিংগুলো উদ্ধৃতি ছাড়া থাকবে তা বোঝাতে
--quote ""সেট করুন। - CSV ফাইলটি পার্স করার সময় সর্বাধিক ৩টি ত্রুটি উপেক্ষা করতে
--max_bad_records 3সেট করুন।
আপনি ডকুমেন্টেশন থেকে bq কমান্ড লাইন সম্পর্কে আরও জানতে পারবেন।
৫. ডেটাসেটটির প্রিভিউ দেখুন
BigQuery কনসোলে, আপনি এইমাত্র লোড করা টেবিলগুলোর মধ্যে একটি খুলুন।
- প্রকল্পটি সম্প্রসারিত করুন।
- ডেটাসেটটি প্রসারিত করুন।
- টেবিলটি নির্বাচন করুন।

আপনি স্কিমা ট্যাবে টেবিলের স্কিমা দেখতে পারেন। ৪. ডিটেইলস ট্যাবে গিয়ে টেবিলটিতে কী পরিমাণ ডেটা আছে তা খুঁজে বের করুন:

- টেবিলের নির্বাচিত সারিগুলো দেখতে প্রিভিউ ট্যাবটি খুলুন।

৬. একটি কোয়েরি রচনা করুন
- নতুন কোয়েরি রচনা করতে ক্লিক করুন :

এটি কোয়েরি এডিটরটি খুলে দেয়:

- এই কোয়েরিটি লিখে ১০ই এপ্রিল, ২০১৯ তারিখে দুপুর ২টা থেকে ৩টার মধ্যে উইকিমিডিয়ার মোট ভিউ সংখ্যা খুঁজুন:
SELECT SUM(requests) FROM `lab.pageviews_20190410_140000`
- রান-এ ক্লিক করুন :

কয়েক সেকেন্ডের মধ্যেই ফলাফলটি নীচে তালিকাভুক্ত হয় এবং কী পরিমাণ ডেটা প্রক্রিয়াজাত করা হয়েছে তাও জানিয়ে দেয়:

টেবিলটির আকার ৬৯১.৪ মেগাবাইট হওয়া সত্ত্বেও, এই কোয়েরিটি ১২৩.৯ মেগাবাইট ডেটা প্রসেস করেছে। BigQuery শুধুমাত্র কোয়েরিতে ব্যবহৃত কলামগুলোর বাইট প্রসেস করে, তাই প্রসেস করা মোট ডেটার পরিমাণ টেবিলের আকারের চেয়ে উল্লেখযোগ্যভাবে কম হতে পারে। ক্লাস্টারিং এবং পার্টিশনিং- এর মাধ্যমে প্রসেস করা ডেটার পরিমাণ আরও কমানো যেতে পারে।
৭. আরও উন্নত অনুসন্ধান
উইকিপিডিয়া পৃষ্ঠার ভিউ খুঁজুন
উইকিমিডিয়া ডেটাসেটে সমস্ত উইকিমিডিয়া প্রকল্পের (উইকিপিডিয়া, উইকশনারি, উইকিবুকস এবং উইকিকোটস সহ) পেজ ভিউ অন্তর্ভুক্ত রয়েছে। একটি WHERE স্টেটমেন্ট যোগ করে কোয়েরিটিকে শুধুমাত্র ইংরেজি উইকিপিডিয়া পেজগুলিতে সীমাবদ্ধ করুন:
SELECT SUM(requests), wiki FROM `lab.pageviews_20190410_140000` WHERE wiki = "en" GROUP BY wiki

লক্ষ্য করুন যে, 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
একাধিক টেবিল জুড়ে কোয়েরি
আপনি ওয়াইল্ডকার্ড টেবিল ব্যবহার করে ইউনিয়ন গঠন করার জন্য একাধিক টেবিল নির্বাচন করতে পারেন।
- প্রথমে, পরবর্তী এক ঘণ্টার পেজ ভিউগুলো একটি নতুন টেবিলে লোড করে কোয়েরি করার জন্য একটি দ্বিতীয় টেবিল তৈরি করুন:
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_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 ব্যবহার করেছেন। আপনার পেটাবাইট-স্কেল ডেটাসেট কোয়েরি করার ক্ষমতা আছে!
আরও জানুন
- বর্তমানে অন্যরা কীভাবে BigQuery ব্যবহার করে, তা জানতে BigQuery সাবরেডিটটি দেখুন।
- BigQuery-তে উপলব্ধ পাবলিক ডেটাসেটগুলি খুঁজুন।
- BigQuery-তে কিভাবে ডেটা লোড করতে হয় তা শিখুন।