পাইথনের সাথে BigQuery ব্যবহার করা

১. সংক্ষিপ্ত বিবরণ

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

এই কোডল্যাবে, আপনি পাইথনের জন্য গুগল ক্লাউড ক্লায়েন্ট লাইব্রেরি ব্যবহার করে বিগকোয়েরি পাবলিক ডেটাসেট কোয়েরি করবেন।

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

  • ক্লাউড শেল কীভাবে ব্যবহার করবেন
  • BigQuery API কীভাবে সক্রিয় করবেন
  • এপিআই অনুরোধগুলি কীভাবে প্রমাণীকরণ করবেন
  • পাইথন ক্লায়েন্ট লাইব্রেরি কীভাবে ইনস্টল করবেন
  • শেক্সপিয়রের রচনা সম্পর্কে কীভাবে অনুসন্ধান করবেন
  • গিটহাব ডেটাসেট কীভাবে কোয়েরি করবেন
  • ক্যাশিং কীভাবে সামঞ্জস্য করবেন এবং পরিসংখ্যান প্রদর্শন করবেন

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

  • একটি গুগল ক্লাউড প্রজেক্ট
  • একটি ব্রাউজার, যেমন ক্রোম বা ফায়ারফক্স
  • পাইথন ব্যবহারে পরিচিতি

জরিপ

আপনি এই টিউটোরিয়ালটি কীভাবে ব্যবহার করবেন?

শুধু পুরোটা পড়ুন এটি পড়ুন এবং অনুশীলনগুলো সম্পূর্ণ করুন।

পাইথন নিয়ে আপনার অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?

শিক্ষানবিশ মধ্যবর্তী দক্ষ

গুগল ক্লাউড পরিষেবা ব্যবহারের অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?

শিক্ষানবিশ মধ্যবর্তী দক্ষ

২. সেটআপ এবং প্রয়োজনীয়তা

স্ব-গতিতে পরিবেশ সেটআপ

  1. Google Cloud Console- এ সাইন-ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। যদি আপনার আগে থেকে Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • প্রজেক্টের নামটি হলো এই প্রজেক্টের অংশগ্রহণকারীদের প্রদর্শিত নাম। এটি একটি ক্যারেক্টার স্ট্রিং যা গুগল এপিআই ব্যবহার করে না, এবং আপনি যেকোনো সময় এটি আপডেট করতে পারেন।
  • সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে প্রজেক্ট আইডি অবশ্যই অনন্য হতে হবে এবং এটি অপরিবর্তনীয় (একবার সেট করার পর পরিবর্তন করা যায় না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত এটি কী তা নিয়ে আপনার মাথা ঘামানোর দরকার নেই। বেশিরভাগ কোডল্যাবে, আপনাকে প্রজেক্ট আইডি উল্লেখ করতে হবে (এবং এটি সাধারণত PROJECT_ID হিসাবে চিহ্নিত করা হয়), তাই যদি এটি আপনার পছন্দ না হয়, তবে এলোমেলোভাবে অন্য একটি তৈরি করুন, অথবা, আপনি নিজের আইডি দিয়ে চেষ্টা করে দেখতে পারেন যে সেটি উপলব্ধ আছে কিনা। এরপর প্রজেক্ট তৈরি হয়ে গেলে এটি "স্থির" হয়ে যায়।
  • তৃতীয় আরেকটি ভ্যালু আছে, যা হলো প্রজেক্ট নম্বর এবং কিছু এপিআই এটি ব্যবহার করে। এই তিনটি ভ্যালু সম্পর্কে আরও জানতে ডকুমেন্টেশন দেখুন।
  1. এরপরে, ক্লাউড রিসোর্স/এপিআই ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে। এই কোডল্যাবটি সম্পন্ন করতে খুব বেশি খরচ হওয়ার কথা নয়, এমনকি আদৌ কোনো খরচ নাও হতে পারে। এই টিউটোরিয়ালের পর যাতে কোনো বিলিং না হয়, সেজন্য রিসোর্সগুলো বন্ধ করতে কোডল্যাবের শেষে দেওয়া যেকোনো "ক্লিন-আপ" নির্দেশাবলী অনুসরণ করুন। গুগল ক্লাউডের নতুন ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।

ক্লাউড শেল শুরু করুন

যদিও গুগল ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালনা করা যায়, এই কোডল্যাবে আপনি গুগল ক্লাউড শেল ব্যবহার করবেন, যা ক্লাউডে চালিত একটি কমান্ড লাইন পরিবেশ।

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

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

55efc1aaa7a4d3ad.png

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

9c92662c6a846a5c.png

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

9f0e51b578fecce5.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 API ডিফল্টরূপে সক্রিয় থাকা উচিত। ক্লাউড শেলে নিম্নলিখিত কমান্ডের মাধ্যমে আপনি এটি পরীক্ষা করতে পারেন: আপনাকে BigQuery-তে তালিকাভুক্ত থাকতে হবে:

gcloud services list

আপনি BigQuery তালিকাভুক্ত দেখতে পাবেন:

NAME                              TITLE
bigquery.googleapis.com           BigQuery API

...

যদি BigQuery API সক্রিয় করা না থাকে, তবে আপনি ক্লাউড শেলে নিম্নলিখিত কমান্ডটি ব্যবহার করে এটি সক্রিয় করতে পারেন:

gcloud services enable bigquery.googleapis.com

৪. এপিআই অনুরোধ প্রমাণীকরণ করুন

BigQuery API-তে অনুরোধ পাঠানোর জন্য, আপনাকে একটি সার্ভিস অ্যাকাউন্ট ব্যবহার করতে হবে। একটি সার্ভিস অ্যাকাউন্ট আপনার প্রোজেক্টের অন্তর্গত এবং এটি Google Cloud Python ক্লায়েন্ট লাইব্রেরি দ্বারা BigQuery API-তে অনুরোধ পাঠানোর জন্য ব্যবহৃত হয়। অন্য যেকোনো ইউজার অ্যাকাউন্টের মতোই, একটি সার্ভিস অ্যাকাউন্ট একটি ইমেল অ্যাড্রেস দ্বারা চিহ্নিত করা হয়। এই অংশে, আপনি ক্লাউড SDK ব্যবহার করে একটি সার্ভিস অ্যাকাউন্ট তৈরি করবেন এবং তারপর সেই সার্ভিস অ্যাকাউন্ট হিসেবে প্রমাণীকরণের জন্য প্রয়োজনীয় ক্রেডেনশিয়াল তৈরি করবেন।

প্রথমে, একটি PROJECT_ID এনভায়রনমেন্ট ভেরিয়েবল সেট করুন:

export PROJECT_ID=$(gcloud config get-value core/project)

এরপরে, BigQuery API অ্যাক্সেস করার জন্য নিম্নলিখিত পদ্ধতি ব্যবহার করে একটি নতুন সার্ভিস অ্যাকাউন্ট তৈরি করুন:

gcloud iam service-accounts create my-bigquery-sa \
  --display-name "my bigquery service account"

এরপরে, আপনার পাইথন কোড নতুন সার্ভিস অ্যাকাউন্ট হিসেবে লগইন করার জন্য ক্রেডেনশিয়াল তৈরি করবে। নিম্নলিখিত কমান্ডটি ব্যবহার করে এই ক্রেডেনশিয়ালগুলো তৈরি করুন এবং ~/key.json নামে একটি JSON ফাইল হিসেবে সংরক্ষণ করুন:

gcloud iam service-accounts keys create ~/key.json \
  --iam-account my-bigquery-sa@${PROJECT_ID}.iam.gserviceaccount.com

অবশেষে, GOOGLE_APPLICATION_CREDENTIALS এনভায়রনমেন্ট ভেরিয়েবলটি সেট করুন, যা আপনার ক্রেডেনশিয়াল খুঁজে পেতে BigQuery পাইথন ক্লায়েন্ট লাইব্রেরি ব্যবহার করে (যা পরবর্তী ধাপে আলোচনা করা হয়েছে)। এনভায়রনমেন্ট ভেরিয়েবলটি আপনার তৈরি করা ক্রেডেনশিয়াল JSON ফাইলের সম্পূর্ণ পাথে সেট করতে হবে, যা নিম্নোক্তভাবে ব্যবহার করা যাবে:

export GOOGLE_APPLICATION_CREDENTIALS=~/key.json

BigQuery API-এর প্রমাণীকরণ সম্পর্কে আপনি আরও পড়তে পারেন।

৫. প্রবেশাধিকার নিয়ন্ত্রণ ব্যবস্থা স্থাপন করুন।

BigQuery রিসোর্সগুলিতে অ্যাক্সেস পরিচালনা করতে আইডেন্টিটি অ্যান্ড অ্যাক্সেস ম্যানেজমেন্ট (IAM) ব্যবহার করে। BigQuery-তে বেশ কিছু পূর্বনির্ধারিত রোল (যেমন user, dataOwner, dataViewer ইত্যাদি) রয়েছে, যেগুলো আপনি পূর্ববর্তী ধাপে তৈরি করা আপনার সার্ভিস অ্যাকাউন্টে অ্যাসাইন করতে পারেন। আপনি BigQuery ডক্স-এ অ্যাক্সেস কন্ট্রোল সম্পর্কে আরও পড়তে পারেন।

পাবলিক ডেটাসেট কোয়েরি করার আগে, আপনাকে নিশ্চিত করতে হবে যে সার্ভিস অ্যাকাউন্টের অন্তত roles/bigquery.user রোলটি আছে। ক্লাউড শেলে, সার্ভিস অ্যাকাউন্টে ইউজার রোলটি অ্যাসাইন করার জন্য নিম্নলিখিত কমান্ডটি চালান:

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
  --member "serviceAccount:my-bigquery-sa@${PROJECT_ID}.iam.gserviceaccount.com" \
  --role "roles/bigquery.user"

সার্ভিস অ্যাকাউন্টটির ইউজার রোল আছে কিনা তা যাচাই করতে আপনি নিম্নলিখিত কমান্ডটি চালাতে পারেন:

gcloud projects get-iam-policy $PROJECT_ID

আপনার নিম্নলিখিত বিষয়গুলো দেখা উচিত:

bindings:
- members:
  - serviceAccount:my-bigquery-sa@<PROJECT_ID>.iam.gserviceaccount.com
  role: roles/bigquery.user
...

৬. ক্লায়েন্ট লাইব্রেরি ইনস্টল করুন

BigQuery পাইথন ক্লায়েন্ট লাইব্রেরি ইনস্টল করুন:

pip3 install --user --upgrade google-cloud-bigquery

আপনি এখন BigQuery API ব্যবহার করে কোড করার জন্য প্রস্তুত!

৭. শেক্সপিয়রের রচনাবলী সম্পর্কে অনুসন্ধান করুন।

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

পাবলিক ডেটাসেট ছাড়াও, BigQuery সীমিত সংখ্যক স্যাম্পল টেবিল সরবরাহ করে যা আপনি কোয়েরি করতে পারেন। এই টেবিলগুলো bigquery-public-data:samples ডেটাসেটে অন্তর্ভুক্ত। samples ডেটাসেটের shakespeare টেবিলটিতে শেক্সপিয়রের রচনার একটি শব্দ সূচক রয়েছে। এটি প্রতিটি কর্পাসে প্রতিটি শব্দ কতবার এসেছে তা দেখায়।

এই ধাপে, আপনি shakespeare টেবিলটি কোয়েরি করবেন।

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

mkdir bigquery-demo
cd bigquery-demo
touch app.py

ক্লাউড শেলের উপরের ডান দিক থেকে কোড এডিটরটি খুলুন:

b648141af44811a3.png

bigquery-demo ফোল্ডারের ভিতরে থাকা app.py ফাইলটিতে যান এবং কোডটি নিম্নলিখিত কোড দিয়ে প্রতিস্থাপন করুন।

from google.cloud import bigquery

client = bigquery.Client()

query = """
    SELECT corpus AS title, COUNT(word) AS unique_words
    FROM `bigquery-public-data.samples.shakespeare`
    GROUP BY title
    ORDER BY unique_words
    DESC LIMIT 10
"""
results = client.query(query)

for row in results:
    title = row['title']
    unique_words = row['unique_words']
    print(f'{title:<20} | {unique_words}')

এক বা দুই মিনিট সময় নিয়ে কোডটি দেখুন এবং খেয়াল করুন কীভাবে টেবিলটি কোয়েরি করা হচ্ছে।

ক্লাউড শেলে ফিরে এসে অ্যাপটি চালান:

python3 app.py

আপনি শব্দ এবং সেগুলোর ব্যবহারের একটি তালিকা দেখতে পাবেন:

hamlet               | 5318
kinghenryv           | 5104
cymbeline            | 4875
troilusandcressida   | 4795
kinglear             | 4784
kingrichardiii       | 4713
2kinghenryvi         | 4683
coriolanus           | 4653
2kinghenryiv         | 4605
antonyandcleopatra   | 4582

৮. গিটহাব ডেটাসেটটি কোয়েরি করুন।

BigQuery-এর সাথে আরও পরিচিত হওয়ার জন্য, আপনি এখন GitHub পাবলিক ডেটাসেটের বিরুদ্ধে একটি কোয়েরি চালাবেন। আপনি GitHub-এ সবচেয়ে সাধারণ কমিট মেসেজগুলো খুঁজে পাবেন। এছাড়াও, আপনি BigQuery-এর ওয়েব কনসোল ব্যবহার করে অ্যাড-হক কোয়েরিগুলোর প্রিভিউ দেখবেন এবং চালাবেন।

ডেটা দেখতে কেমন তা জানতে, BigQuery ওয়েব UI-তে GitHub ডেটাসেটটি খুলুন:

github_repos টেবিলটি খুলুন

ডেটা দেখতে কেমন তা জানতে প্রিভিউ বাটনে ক্লিক করুন:

d3f0dc7400fbe678.png

bigquery_demo ফোল্ডারের ভিতরে থাকা app.py ফাইলটিতে যান এবং কোডটি নিম্নলিখিত কোড দিয়ে প্রতিস্থাপন করুন।

from google.cloud import bigquery

client = bigquery.Client()

query = """
    SELECT subject AS subject, COUNT(*) AS num_duplicates
    FROM bigquery-public-data.github_repos.commits
    GROUP BY subject
    ORDER BY num_duplicates
    DESC LIMIT 10
"""
results = client.query(query)

for row in results:
    subject = row['subject']
    num_duplicates = row['num_duplicates']
    print(f'{subject:<20} | {num_duplicates:>9,}')

এক বা দুই মিনিট সময় নিয়ে কোডটি দেখুন এবং খেয়াল করুন কীভাবে সবচেয়ে সাধারণ কমিট মেসেজগুলোর জন্য টেবিলটি কোয়েরি করা হচ্ছে।

ক্লাউড শেলে ফিরে এসে অ্যাপটি চালান:

python3 app.py

আপনি কমিট বার্তা এবং সেগুলোর উপস্থিতির একটি তালিকা দেখতে পাবেন:

Update README.md     | 1,685,515
Initial commit       | 1,577,543
update               |   211,017
                     |   155,280
Create README.md     |   153,711
Add files via upload |   152,354
initial commit       |   145,224
first commit         |   110,314
Update index.html    |    91,893
Update README        |    88,862

৯. ক্যাশিং এবং পরিসংখ্যান

BigQuery কোয়েরির ফলাফল ক্যাশ করে রাখে। ফলে, পরবর্তী কোয়েরিগুলো সম্পন্ন হতে কম সময় লাগে। কোয়েরি অপশন ব্যবহার করে ক্যাশিং নিষ্ক্রিয় করা সম্ভব। BigQuery এছাড়াও কোয়েরি সম্পর্কিত পরিসংখ্যান, যেমন তৈরির সময়, শেষের সময়, এবং মোট প্রক্রিয়াকৃত বাইটের হিসাব রাখে।

এই ধাপে, আপনি ক্যাশিং নিষ্ক্রিয় করবেন এবং কোয়েরিগুলো সম্পর্কিত পরিসংখ্যানও প্রদর্শন করবেন।

bigquery_demo ফোল্ডারের ভিতরে থাকা app.py ফাইলটিতে যান এবং কোডটি নিম্নলিখিত কোড দিয়ে প্রতিস্থাপন করুন।

from google.cloud import bigquery

client = bigquery.Client()

query = """
    SELECT subject AS subject, COUNT(*) AS num_duplicates
    FROM bigquery-public-data.github_repos.commits
    GROUP BY subject
    ORDER BY num_duplicates
    DESC LIMIT 10
"""
job_config = bigquery.job.QueryJobConfig(use_query_cache=False)
results = client.query(query, job_config=job_config)

for row in results:
    subject = row['subject']
    num_duplicates = row['num_duplicates']
    print(f'{subject:<20} | {num_duplicates:>9,}')

print('-'*60)
print(f'Created: {results.created}')
print(f'Ended:   {results.ended}')
print(f'Bytes:   {results.total_bytes_processed:,}')

কোডটি সম্পর্কে কয়েকটি বিষয় লক্ষণীয়। প্রথমত, QueryJobConfig যুক্ত করে এবং use_query_cache false সেট করার মাধ্যমে ক্যাশিং নিষ্ক্রিয় করা হয়েছে। দ্বিতীয়ত, আপনি জব অবজেক্ট থেকে কোয়েরিটির পরিসংখ্যান অ্যাক্সেস করেছেন।

ক্লাউড শেলে ফিরে এসে অ্যাপটি চালান:

python3 app.py

আগের মতোই, আপনি কমিট মেসেজগুলোর একটি তালিকা এবং সেগুলোর উপস্থিতি দেখতে পাবেন। এছাড়াও, সবশেষে আপনি কোয়েরিটি সম্পর্কে কিছু পরিসংখ্যানও দেখতে পাবেন:

Update README.md     | 1,685,515
Initial commit       | 1,577,543
update               |   211,017
                     |   155,280
Create README.md     |   153,711
Add files via upload |   152,354
initial commit       |   145,224
first commit         |   110,314
Update index.html    |    91,893
Update README        |    88,862
------------------------------------------------------------
Created: 2020-04-03 13:30:08.801000+00:00
Ended:   2020-04-03 13:30:15.334000+00:00
Bytes:   2,868,251,894

১০. BigQuery-তে ডেটা লোড করা

আপনি যদি আপনার নিজের ডেটা কোয়েরি করতে চান, তাহলে আপনাকে BigQuery-তে আপনার ডেটা লোড করতে হবে। BigQuery ক্লাউড স্টোরেজ, অন্যান্য গুগল পরিষেবা এবং অন্যান্য পাঠযোগ্য উৎস সহ অনেক উৎস থেকে ডেটা লোড করা সমর্থন করে। এমনকি আপনি স্ট্রিমিং ইনসার্ট ব্যবহার করে আপনার ডেটা স্ট্রিমও করতে পারেন। আরও তথ্যের জন্য "BigQuery-তে ডেটা লোড করা" পৃষ্ঠাটি দেখুন।

এই ধাপে, আপনি ক্লাউড স্টোরেজে সংরক্ষিত একটি JSON ফাইল BigQuery টেবিলে লোড করবেন। JSON ফাইলটি gs://cloud-samples-data/bigquery/us-states/us-states.json এই ঠিকানায় অবস্থিত।

আপনি যদি JSON ফাইলের বিষয়বস্তু সম্পর্কে জানতে আগ্রহী হন, তাহলে gsutil কমান্ড লাইন টুল ব্যবহার করে ক্লাউড শেলে এটি ডাউনলোড করতে পারেন:

gsutil cp gs://cloud-samples-data/bigquery/us-states/us-states.json .

আপনি দেখতে পাচ্ছেন যে এতে মার্কিন যুক্তরাষ্ট্রের রাজ্যগুলির তালিকা রয়েছে এবং প্রতিটি রাজ্য একটি আলাদা লাইনে একটি JSON ডকুমেন্ট হিসাবে আছে:

head us-states.json
{"name": "Alabama", "post_abbr": "AL"}
{"name": "Alaska", "post_abbr":  "AK"}
...

এই JSON ফাইলটি BigQuery-তে লোড করতে, bigquery_demo ফোল্ডারের ভিতরে থাকা app.py ফাইলে যান এবং কোডটি নিম্নলিখিত কোড দিয়ে প্রতিস্থাপন করুন।

from google.cloud import bigquery

client = bigquery.Client()

gcs_uri = 'gs://cloud-samples-data/bigquery/us-states/us-states.json'

dataset = client.create_dataset('us_states_dataset')
table = dataset.table('us_states_table')

job_config = bigquery.job.LoadJobConfig()
job_config.schema = [
    bigquery.SchemaField('name', 'STRING'),
    bigquery.SchemaField('post_abbr', 'STRING'),
]
job_config.source_format = bigquery.SourceFormat.NEWLINE_DELIMITED_JSON

load_job = client.load_table_from_uri(gcs_uri, table, job_config=job_config)

print('JSON file loaded to BigQuery')

কোডটি কীভাবে JSON ফাইল লোড করে এবং একটি ডেটাসেটের অধীনে স্কিমাসহ একটি টেবিল তৈরি করে, তা মনোযোগ দিয়ে দেখতে এক বা দুই মিনিট সময় নিন।

ক্লাউড শেলে ফিরে এসে অ্যাপটি চালান:

python3 app.py

BigQuery-তে একটি ডেটাসেট এবং একটি টেবিল তৈরি করা হয়।

ডেটা সেট তৈরি হয়েছে কিনা তা যাচাই করতে, BigQuery কনসোলে যান। আপনি একটি নতুন ডেটা সেট এবং টেবিল দেখতে পাবেন। আপনার ডেটা দেখতে টেবিলের প্রিভিউ ট্যাবে যান:

8c7d2621820a5ac4.png

১১. অভিনন্দন!

আপনি পাইথনের সাথে BigQuery ব্যবহার করতে শিখেছেন!

পরিষ্কার করা

এই টিউটোরিয়ালে ব্যবহৃত রিসোর্সগুলির জন্য আপনার গুগল ক্লাউড অ্যাকাউন্টে চার্জ হওয়া এড়াতে:

  • ক্লাউড কনসোলে, রিসোর্স পরিচালনা (Manage resources) পৃষ্ঠায় যান।
  • প্রজেক্ট তালিকা থেকে আপনার প্রজেক্টটি নির্বাচন করুন, তারপর ডিলিট-এ ক্লিক করুন।
  • ডায়ালগ বক্সে প্রজেক্ট আইডি টাইপ করুন এবং তারপর প্রজেক্টটি মুছে ফেলার জন্য 'শাট ডাউন'-এ ক্লিক করুন।

আরও জানুন

লাইসেন্স

এই কাজটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন ২.০ জেনেরিক লাইসেন্সের অধীনে রয়েছে।