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

1. ভূমিকা

BigQuery হল Google-এর সম্পূর্ণরূপে পরিচালিত, NoOps, কম খরচের বিশ্লেষণ ডাটাবেস। BigQuery-এর সাহায্যে, আপনি কোনও ডাটাবেস প্রশাসক বা অবকাঠামো ছাড়াই টেরাবাইট ডেটা অনুসন্ধান করতে পারেন। BigQuery পরিচিত SQL এবং একটি পে- অনলি -ফর-ওনলি-ইউ-ও

তুমি কি শিখবে

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

তোমার যা লাগবে

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

2. সেট আপ করুন

BigQuery সক্ষম করুন

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

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

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

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

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

ক্লাউড শেল

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

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

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

bce75f34b2c53987.png সম্পর্কে

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

70f315d7b402b476.png সম্পর্কে

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

fbe3a0674c982259.png সম্পর্কে

এই ভার্চুয়াল মেশিনটি আপনার প্রয়োজনীয় সকল ডেভেলপমেন্ট টুল দিয়ে পূর্ণ। এটি একটি স্থায়ী 5GB হোম ডিরেক্টরি অফার করে এবং Google Cloud-এ চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার বেশিরভাগ কাজ, যদি সব না হয়, কেবল একটি ব্রাউজার বা আপনার 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].

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

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

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

একটি 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 বিভিন্ন ডেটা ফর্ম্যাট থেকে ডেটা লোড করতে পারে, যার মধ্যে রয়েছে newline-delimited 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 ফাইলটি সংরক্ষণ করুন।

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

আপনার 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 কোয়েরি কমান্ড ব্যবহার করুন।

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 কোয়েরির সাথে সংযুক্ত করা।

এরপর কি?

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