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

1. ভূমিকা

BigQuery হল Google-এর সম্পূর্ণরূপে পরিচালিত, NoOps, কম খরচের অ্যানালিটিক্স ডেটাবেস৷ BigQuery-এর মাধ্যমে, আপনি ডাটাবেস অ্যাডমিনিস্ট্রেটর বা অবকাঠামো ছাড়াই টেরাবাইট ডেটা জিজ্ঞাসা করতে পারেন। BigQuery পরিচিত SQL এবং একটি পে-অনলি-আপনি কি ব্যবহার করেন চার্জিং মডেল ব্যবহার করে। BigQuery আপনাকে অর্থপূর্ণ অন্তর্দৃষ্টি খুঁজতে ডেটা বিশ্লেষণে ফোকাস করতে দেয়। এই কোডল্যাবে, আপনি একটি স্থানীয় CSV ফাইল একটি নতুন BigQuery টেবিলে লোড করতে bq কমান্ড-লাইন টুল ব্যবহার করবেন।

আপনি কি শিখবেন

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

আপনি কি প্রয়োজন হবে

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

2. সেট আপ করুন

BigQuery সক্ষম করুন

আপনার যদি ইতিমধ্যে একটি Google অ্যাকাউন্ট না থাকে তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে৷

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

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

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

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

মেঘের শেল

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

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

  1. ক্লাউড কনসোল থেকে, ক্লাউড শেল সক্রিয় করুন ক্লিক করুন 4292cbf4971c9786.png .

bce75f34b2c53987.png

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

70f315d7b402b476.png

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

fbe3a0674c982259.png

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

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

  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].

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

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

একটি ডেটাসেট কি?

একটি 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

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

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

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

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

touch customer_transactions.csv

ক্লাউডশেল এডিট কমান্ডটি চালিয়ে ক্লাউড শেল-এর কোড এডিটরে 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 ফাইলটি সংরক্ষণ করুন।

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

একটি BigQuery টেবিলে আপনার CSV ফাইল লোড করতে 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 লোড কমান্ড gs://my_bucket/path/to/file URIs এর সাথে ক্লাউড স্টোরেজ থেকে ফাইল লোড করতে পারে।
  • একটি স্কিমা, যা একটি JSON স্কিমা ফাইলে বা কমা দ্বারা পৃথক করা তালিকা হিসাবে সংজ্ঞায়িত করা যেতে পারে৷ (আপনি সরলতার জন্য একটি কমা-বিচ্ছিন্ন তালিকা ব্যবহার করেছেন।)

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

  • Id:string : একটি গ্রাহক শনাক্তকারী
  • Zip:string : একটি US পোস্টাল জিপ কোড
  • 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

6. তথ্য অনুসন্ধান করুন

এখন যেহেতু আপনার ডেটা লোড হয়েছে, আপনি 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

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

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

bq rm -r bq_load_codelab

8. অভিনন্দন!

আপনি BigQuery-এ একটি টেবিল আপলোড করেছেন এবং এটিকে জিজ্ঞাসা করেছেন!

আপনি কি আচ্ছাদিত

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

এরপর কি

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