BigQuery-এর জন্য bq কমান্ড-লাইন টুলের সাহায্যে ডেটা লোড এবং কোয়েরি করুন

১. ভূমিকা

BigQuery হলো গুগলের একটি সম্পূর্ণ পরিচালিত, NoOps, স্বল্প খরচের অ্যানালিটিক্স ডেটাবেস। BigQuery-এর সাহায্যে আপনি কোনো ডেটাবেস অ্যাডমিনিস্ট্রেটর বা পরিকাঠামো ছাড়াই টেরাবাইট পরিমাণ ডেটা কোয়েরি করতে পারেন। BigQuery পরিচিত SQL এবং 'শুধুমাত্র ব্যবহারের জন্য অর্থ প্রদান' (pay-only-for-what-you-use) চার্জিং মডেল ব্যবহার করে। BigQuery আপনাকে অর্থপূর্ণ অন্তর্দৃষ্টি খুঁজে বের করার জন্য ডেটা বিশ্লেষণে মনোযোগ দিতে সাহায্য করে। এই কোডল্যাবে, আপনি একটি স্থানীয় CSV ফাইলকে একটি নতুন BigQuery টেবিলে লোড করার জন্য bq কমান্ড-লাইন টুলটি ব্যবহার করবেন।

আপনি যা শিখবেন

  • BigQuery-এর জন্য bq কমান্ড-লাইন টুলটি কীভাবে ব্যবহার করবেন
  • কীভাবে স্থানীয় ডেটা ফাইলগুলিকে BigQuery টেবিলে লোড করবেন

আপনার যা যা লাগবে

  • একটি গুগল ক্লাউড প্রকল্প
  • একটি ব্রাউজার, যেমন গুগল ক্রোম

২. প্রস্তুত হন

BigQuery সক্রিয় করুন

যদি আপনার আগে থেকে কোনো গুগল অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

  1. Google Cloud Console- এ সাইন ইন করুন এবং BigQuery-তে যান। এছাড়া, আপনি আপনার ব্রাউজারে নিম্নলিখিত URL-টি লিখে সরাসরি BigQuery ওয়েব UI-ও খুলতে পারেন।
https://console.cloud.google.com/bigquery
  1. পরিষেবার শর্তাবলী গ্রহণ করুন।
  2. BigQuery ব্যবহার করার আগে, আপনাকে অবশ্যই একটি প্রজেক্ট তৈরি করতে হবে। আপনার নতুন প্রজেক্টটি তৈরি করার জন্য নির্দেশাবলী অনুসরণ করুন।

একটি প্রকল্পের নাম নির্বাচন করুন এবং প্রকল্প আইডিটি লিখে রাখুন। 1884405a64ce5765.png

প্রজেক্ট আইডি হলো সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে একটি অনন্য নাম। এই কোডল্যাবে পরবর্তীতে এটিকে PROJECT_ID হিসাবে উল্লেখ করা হবে।

এই কোডল্যাবটি BigQuery স্যান্ডবক্সের সীমার মধ্যে BigQuery রিসোর্স ব্যবহার করে। এর জন্য কোনো বিলিং অ্যাকাউন্টের প্রয়োজন নেই। আপনি যদি পরবর্তীতে স্যান্ডবক্সের সীমা তুলে দিতে চান, তাহলে Google Cloud-এর ফ্রি ট্রায়ালের জন্য সাইন আপ করে একটি বিলিং অ্যাকাউন্ট যোগ করতে পারেন।

ক্লাউড শেল

আপনি গুগল ক্লাউডে চালিত একটি কমান্ড-লাইন পরিবেশ, ক্লাউড শেল ব্যবহার করবেন।

ক্লাউড শেল সক্রিয় করুন

  1. ক্লাউড কনসোল থেকে, Activate Cloud Shell-এ ক্লিক করুন। 4292cbf4971c9786.png .

bce75f34b2c53987.png

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

70f315d7b402b476.png

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

fbe3a0674c982259.png

এই ভার্চুয়াল মেশিনটিতে আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুলস লোড করা আছে। এটি একটি স্থায়ী ৫ জিবি হোম ডিরেক্টরি প্রদান করে এবং গুগল ক্লাউডে চলে, যা নেটওয়ার্ক পারফরম্যান্স ও অথেনটিকেশনকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার প্রায় সমস্ত কাজই শুধুমাত্র একটি ব্রাউজার বা আপনার ক্রোমবুক দিয়ে করা সম্ভব।

ক্লাউড শেলে সংযুক্ত হওয়ার পর আপনি দেখতে পাবেন যে, আপনাকে ইতিমধ্যেই প্রমাণীকৃত করা হয়েছে এবং প্রজেক্টটি আপনার প্রজেক্ট আইডিতে সেট করা আছে।

  1. আপনি প্রমাণীকৃত কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud auth list

কমান্ড আউটপুট

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. gcloud কমান্ডটি আপনার প্রজেক্ট সম্পর্কে জানে কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud config list project

কমান্ড আউটপুট

[core]
project = <PROJECT_ID>

যদি তা না থাকে, তবে আপনি এই কমান্ডটি দিয়ে এটি সেট করতে পারেন:

gcloud config set project <PROJECT_ID>

কমান্ড আউটপুট

Updated property [core/project].

৩. একটি ডেটাসেট তৈরি করুন

আপনার টেবিলগুলো রাখার জন্য একটি ডেটাসেট তৈরি করুন।

ডেটাসেট কী?

BigQuery ডেটাসেট হলো কতগুলো টেবিলের সমষ্টি। একটি ডেটাসেটের সমস্ত টেবিল একই ডেটা লোকেশনে সংরক্ষিত থাকে। আপনি একটি ডেটাসেট এবং এর টেবিলগুলোতে অ্যাক্সেস সীমিত করার জন্য কাস্টম অ্যাক্সেস কন্ট্রোলও যুক্ত করতে পারেন।

একটি ডেটাসেট তৈরি করুন

ক্লাউড শেলে, " bq_load_codelab " নামের একটি ডেটাসেট তৈরি করতে "bq mk" কমান্ডটি ব্যবহার করুন।

bq mk bq_load_codelab

ডেটাসেটের বৈশিষ্ট্য দেখুন

bq show কমান্ড ব্যবহার করে ডেটাসেটের প্রোপার্টিজ দেখে নিশ্চিত করুন যে আপনিই ডেটাসেটটি তৈরি করেছেন।

bq show bq_load_codelab

আপনি নিম্নলিখিতের অনুরূপ আউটপুট দেখতে পাবেন:

Dataset my-project:bq_load_codelab

   Last modified           ACLs          Labels
 ----------------- -------------------- --------
  15 Jun 14:12:49   Owners:
                      projectOwners,
                      your-email@example.com
                    Writers:
                      projectWriters
                    Readers:
                      projectReaders

৪. ডেটা ফাইলটি তৈরি করুন

BigQuery বিভিন্ন ডেটা ফরম্যাট থেকে ডেটা লোড করতে পারে, যার মধ্যে রয়েছে নিউলাইন-ডিলিমিটেড JSON , Avro , এবং CSV । সরলতার জন্য, আপনি CSV ব্যবহার করবেন।

একটি CSV ফাইল তৈরি করুন

ক্লাউড শেলে একটি খালি CSV ফাইল তৈরি করুন।

touch customer_transactions.csv

`cloudshell edit` কমান্ডটি চালিয়ে ক্লাউড শেলের কোড এডিটরে CSV ফাইলটি খুলুন, যা একটি কোড এডিটর এবং ক্লাউড শেল প্যানেলসহ একটি নতুন ব্রাউজার উইন্ডো খুলবে।

cloudshell edit customer_transactions.csv

কোড এডিটরে, BigQuery-তে লোড করার জন্য কিছু কমা দিয়ে আলাদা করা ভ্যালু লিখুন।

ID,Zipcode,Timestamp,Amount,Feedback,SKU
c123,78757,2018-02-14 17:01:39Z,1.20,4.7,he4rt5
c456,10012,2018-03-14 15:09:26Z,53.60,3.1,ppiieee
c123,78741,2018-04-01 05:59:47Z,5.98,2.0,ch0c0

ফাইল > সম্পাদনা- তে ক্লিক করে CSV ফাইলটি সংরক্ষণ করুন।

৫. ডেটা লোড করুন

আপনার CSV ফাইলটি BigQuery টেবিলে লোড করতে bq load কমান্ডটি ব্যবহার করুন।

bq load \
    --source_format=CSV \
    --skip_leading_rows=1 \
    bq_load_codelab.customer_transactions \
    ./customer_transactions.csv \
    id:string,zip:string,ttime:timestamp,amount:numeric,fdbk:float,sku:string

আপনি নিম্নলিখিত বিকল্পগুলি ব্যবহার করেছেন:

  • --source_format=CSV ডেটা ফাইল পার্স করার সময় CSV ডেটা ফরম্যাট ব্যবহার করে।
  • --skip_leading_rows=1 বিকল্পটি CSV ফাইলের প্রথম লাইনটি এড়িয়ে যায়, কারণ এটি একটি হেডার রো।
  • Bq_load_codelab.customer_transactions—the first positional argument— নির্ধারণ করে যে ডেটা কোন টেবিলে লোড করা হবে।
  • ./customer_transactions.csv —দ্বিতীয় পজিশনাল আর্গুমেন্টটি—কোন ফাইলটি লোড করতে হবে তা নির্ধারণ করে। লোকাল ফাইল ছাড়াও, bq load কমান্ডটি gs://my_bucket/path/to/file URIs ব্যবহার করে ক্লাউড স্টোরেজ থেকে ফাইল লোড করতে পারে।
  • একটি স্কিমা, যা একটি JSON স্কিমা ফাইলে অথবা কমা দ্বারা পৃথক করা তালিকা হিসাবে সংজ্ঞায়িত করা যেতে পারে। (সহজবোধ্যতার জন্য আপনি কমা দ্বারা পৃথক করা তালিকা ব্যবহার করেছেন।)

আপনি customer_transactions টেবিলে নিম্নলিখিত স্কিমাটি ব্যবহার করেছেন:

  • Id:string : গ্রাহকের শনাক্তকারী
  • Zip:string : একটি মার্কিন পোস্টাল জিপ কোড
  • Ttime:timestamp : লেনদেনটি সংঘটিত হওয়ার তারিখ ও সময়
  • Amount:numeric : একটি লেনদেনের পরিমাণ (একটি সংখ্যাসূচক কলাম দশমিক আকারে ডেটা সংরক্ষণ করে, যা আর্থিক মানের জন্য উপযোগী।)
  • Fdbk:float : লেনদেনটি সম্পর্কে একটি মতামত সমীক্ষা থেকে প্রাপ্ত রেটিং
  • Sku:string : ক্রয়কৃত আইটেমটির শনাক্তকারী

টেবিলের বিবরণ পান

টেবিলের প্রোপার্টিজ দেখে যাচাই করুন যে টেবিলটি লোড হয়েছে কিনা।

bq show bq_load_codelab.customer_transactions

আউটপুট:

Table my-project:bq_load_codelab.customer_transactions

   Last modified          Schema          Total Rows   Total Bytes
 ----------------- --------------------- ------------ -------------
  15 Jun 15:13:55   |- id: string         3            159
                    |- zip: string
                    |- ttime: timestamp
                    |- amount: numeric
                    |- fdbk: float
                    |- sku: string

৬. ডেটা অনুসন্ধান করুন

আপনার ডেটা লোড হয়ে গেলে, আপনি BigQuery ওয়েব UI , bq কমান্ড, অথবা API ব্যবহার করে এটি কোয়েরি করতে পারেন। আপনার কোয়েরিগুলো এমন যেকোনো ডেটাসেটের (বা একাধিক ডেটাসেটের, যদি সেগুলো একই অবস্থানে থাকে) সাথে আপনার ডেটা যুক্ত করতে পারে, যেগুলো পড়ার অনুমতি আপনার আছে।

একটি স্ট্যান্ডার্ড SQL কোয়েরি চালান যা আপনার ডেটাসেটকে ইউএস জিপ কোড ডেটাসেটের সাথে যুক্ত করে এবং মার্কিন যুক্তরাষ্ট্রের রাজ্য অনুসারে লেনদেনের যোগফল বের করে। কোয়েরিটি কার্যকর করতে bq query কমান্ডটি ব্যবহার করুন।

bq query --nouse_legacy_sql '
SELECT SUM(c.amount) AS amount_total, z.state_code AS state_code
FROM `bq_load_codelab.customer_transactions` c
JOIN `bigquery-public-data.utility_us.zipcode_area` z
ON c.zip = z.zipcode
GROUP BY state_code
'

ওই কমান্ডটির আউটপুট এইরকম কিছু হওয়া উচিত:

Waiting on bqjob_r26...05a15b38_1 ... (1s) Current status: DONE   
+--------------+------------+
| amount_total | state_code |
+--------------+------------+
|         53.6 | NY         |
|         7.18 | TX         |
+--------------+------------+

আপনি যে কোয়েরিটি চালিয়েছেন তাতে একটি পাবলিক ডেটাসেট এবং আপনার প্রাইভেট ডেটাসেট ব্যবহৃত হয়েছে। আরও বিস্তারিত জানতে একই কোয়েরিটির এই কমেন্টসহ সংস্করণটি পড়ুন:

#standardSQL
SELECT
  /* Total of all transactions in the state. */
  SUM(c.amount) AS amount_total,

  /* State corresponding to the transaction's zipcode. */
  z.state_code AS state_code

/* Query the table you just constructed.
 * Note: If you omit the project from the table ID,
 *       the dataset is read from your project. */
FROM `bq_load_codelab.customer_transactions` c

/* Join the table to the zipcode public dataset. */
JOIN `bigquery-public-data.utility_us.zipcode_area` z

/* Find the state corresponding to the transaction's zipcode. */
ON c.zip = z.zipcode

/* Group over all transactions by state. */
GROUP BY state_code

৭. পরিষ্কার করুন

bq rm কমান্ড দিয়ে তৈরি করা ডেটাসেটটি মুছে ফেলুন। এর অন্তর্ভুক্ত যেকোনো টেবিল মুছে ফেলার জন্য -r ফ্ল্যাগটি ব্যবহার করুন।

bq rm -r bq_load_codelab

৮. অভিনন্দন!

আপনি BigQuery-তে একটি টেবিল আপলোড করেছেন এবং সেটিতে কোয়েরি চালিয়েছেন!

আপনি যা কভার করেছেন

  • BigQuery-এর সাথে ইন্টারঅ্যাক্ট করার জন্য bq কমান্ড-লাইন টুল ব্যবহার করা।
  • BigQuery কোয়েরির মাধ্যমে আপনার ডেটা এবং একটি পাবলিক ডেটাসেট যুক্ত করা।

এরপর কী?

এ সম্পর্কে আরও জানুন: