Node.js এর সাথে BigQuery ব্যবহার করা

1. ওভারভিউ

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

এই কোডল্যাবে, আপনি Node.js-এর সাথে BigQuery পাবলিক ডেটাসেটগুলি অনুসন্ধান করতে Google ক্লাউড BigQuery ক্লায়েন্ট লাইব্রেরি ব্যবহার করবেন৷

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

  • ক্লাউড শেল কিভাবে ব্যবহার করবেন
  • BigQuery API কীভাবে সক্ষম করবেন
  • কীভাবে API অনুরোধগুলি প্রমাণীকরণ করবেন
  • Node.js-এর জন্য BigQuery ক্লায়েন্ট লাইব্রেরি কীভাবে ইনস্টল করবেন
  • শেক্সপিয়ারের কাজগুলি কীভাবে জিজ্ঞাসা করবেন
  • কিভাবে GitHub ডেটাসেট জিজ্ঞাসা করতে হয়
  • কিভাবে ক্যাশিং সামঞ্জস্য এবং পরিসংখ্যান প্রদর্শন

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

  • একটি Google ক্লাউড প্ল্যাটফর্ম প্রকল্প
  • একটি ব্রাউজার, যেমন ক্রোম বা ফায়ারফক্স
  • Node.js ব্যবহার করে পরিচিতি

সমীক্ষা

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

শুধুমাত্র মাধ্যমে এটি পড়ুন এটি পড়ুন এবং ব্যায়াম সম্পূর্ণ করুন

আপনি Node.js এর সাথে আপনার অভিজ্ঞতাকে কিভাবে মূল্যায়ন করবেন?

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

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

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

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

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

  1. ক্লাউড কনসোলে সাইন ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ (যদি আপনার ইতিমধ্যেই একটি Gmail বা G Suite অ্যাকাউন্ট না থাকে তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।)

H_hgylo4zxOllHaAbPKJ7VyqCKPDUnDhkr-BsBIFBsrB6TYSisg6LX-uqmMhh4sXUy_hoa2Qv87C2nFmkg-QAcCiZZp0qtpf6VPaNEEfBsrB6VPaNEEfBsrB6VPaNEEfBQDWQLDWQTG

dcCPqfBIwNO4R-0fNQLUC4aYXOOZhKhjUnakFLZJGeziw2ikOxGjGkCHDwN5x5kCbPFB8fiOzZnX-GfuzQ8Ox-UU15BwHirkVPR_0RJwl0uZuZvZQH5-5

jgLzVCxk93d6E2bbonzATKA4jFZReoQ-fORxZZLEi5C3D-ubnv6nL-eP-iyh7qAsWyq_nyzzuEoPFD1wFOFZOe4FWhPBJjUDncnTxTImT3p3f3C519P3C3TX gQ

প্রজেক্ট আইডিটি মনে রাখবেন, সমস্ত Google ক্লাউড প্রকল্প জুড়ে একটি অনন্য নাম (উপরের নামটি ইতিমধ্যে নেওয়া হয়েছে এবং আপনার জন্য কাজ করবে না, দুঃখিত!)। এটি পরে এই কোডল্যাবে PROJECT_ID হিসাবে উল্লেখ করা হবে।

  1. এর পরে, Google ক্লাউড সংস্থানগুলি ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে৷

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

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

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

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

  1. ক্লাউড কনসোল থেকে, ক্লাউড শেল সক্রিয় করুন ক্লিক করুন dnDTxS9j60RcXdTjea12HLB9paS9Gzf7PfFLE9RW8g0Qx1bz7nmCzyCu4rjluX3bOEw avOpDwioXEkzOf6xtZp6-ZbJa08jwJqtZp6-ZbJa08jwJqtZf3qwDf3Qw8 9Ljw .

yzBQBp2RC1EFvSSLYVkMA2m6LHqGsp22O81rUS5tGb9Y1FqlVhoRj_ka8V_uEjtpcirZRULMy1IjNr848uYvb9mC9RcGGqeayaLcXFfRwZUGXHQHQUGTXWCHXWC8

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

VgsaqGbKPRiqK24CqAKjSXjepuJT96PmiDqQMcySmWKx8QyW5F3G2D8JH2d08ek-YM77wWKxPvggpOFER8Hbq3aaZipTDU2o0il7A0kS3FXY_Nzudqmgtqdqmgtqmg

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

7RuYr-LCKzdiE1veTFmL_lYrVxsMZ6-xDoxAnfwPPc5uFA0utmFGejvu81jGmTdbqnqxrytW3KcHT6xrMIRc3bskctnDZC5nJdpqw-LRxtnDZC5nJdpqw-LRxAnfwPPc5uFA0utmFGejvu81 8আরজি

এই ভার্চুয়াল মেশিনটি আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুল দিয়ে লোড করা হয়েছে। এটি একটি ক্রমাগত 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`
gcloud config list project

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

[core]
project = <PROJECT_ID>

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

gcloud config set project <PROJECT_ID>

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

Updated property [core/project].

3. BigQuery API সক্ষম করুন৷

BigQuery API সমস্ত Google ক্লাউড প্রকল্পে ডিফল্টরূপে সক্রিয় করা উচিত। আপনি ক্লাউড শেলের নিম্নলিখিত কমান্ডের মাধ্যমে এটি সত্য কিনা তা পরীক্ষা করতে পারেন:

gcloud services list

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

NAME                              TITLE
bigquery-json.googleapis.com      BigQuery API
...

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

gcloud services enable bigquery-json.googleapis.com

4. API অনুরোধগুলি প্রমাণীকরণ করুন৷

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

প্রথমে, আপনার PROJECT_ID এর সাথে একটি পরিবেশ পরিবর্তনশীল সেট করুন যা আপনি এই কোডল্যাব জুড়ে ব্যবহার করবেন:

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

এর পরে, ব্যবহার করে BigQuery API অ্যাক্সেস করতে একটি নতুন পরিষেবা অ্যাকাউন্ট তৈরি করুন:

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

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

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

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

export GOOGLE_APPLICATION_CREDENTIALS="/home/${USER}/key.json"

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

5. সেটআপ অ্যাক্সেস কন্ট্রোল

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

আপনি সর্বজনীন ডেটাসেটগুলি অনুসন্ধান করার আগে, আপনাকে নিশ্চিত করতে হবে পরিষেবা অ্যাকাউন্টে অন্তত bigquery.user ভূমিকা আছে৷ ক্লাউড শেলে, পরিষেবা অ্যাকাউন্টে bigquery.user ভূমিকা বরাদ্দ করতে নিম্নলিখিত কমান্ডটি চালান:

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

পরিষেবা অ্যাকাউন্ট ব্যবহারকারীর ভূমিকা বরাদ্দ করা হয়েছে তা যাচাই করতে আপনি নিম্নলিখিত কমান্ডটি চালাতে পারেন:

gcloud projects get-iam-policy $GOOGLE_CLOUD_PROJECT

6. Node.js-এর জন্য BigQuery ক্লায়েন্ট লাইব্রেরি ইনস্টল করুন

প্রথমে, একটি BigQueryDemo ফোল্ডার তৈরি করুন এবং এটিতে নেভিগেট করুন:

mkdir BigQueryDemo
cd BigQueryDemo

এরপরে, একটি Node.js প্রজেক্ট তৈরি করুন যা আপনি BigQuery ক্লায়েন্ট লাইব্রেরি নমুনা চালানোর জন্য ব্যবহার করবেন:

npm init -y

আপনি তৈরি করা Node.js প্রকল্প দেখতে হবে:

{
  "name": "BigQueryDemo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

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

 npm install --save @google-cloud/bigquery
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN BigQueryDemo@1.0.0 No description
npm WARN BigQueryDemo@1.0.0 No repository field.
+ @google-cloud/bigquery@2.1.0
added 69 packages from 105 contributors and audited 147 packages in 4.679s
found 0 vulnerabilities

এখন, আপনি BigQuery Node.js ক্লায়েন্ট লাইব্রেরি ব্যবহার করার জন্য প্রস্তুত!

7. শেক্সপিয়ারের কাজগুলি অনুসন্ধান করুন

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

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

এই ধাপে, আপনি শেক্সপিয়র টেবিলটি জিজ্ঞাসা করবেন।

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

9b8f365ab5ec7f71.png

BigQueryDemo ফোল্ডারের ভিতরে একটি queryShakespeare.js ফাইল তৈরি করুন:

 touch queryShakespeare.js

queryShakespeare.js ফাইলে নেভিগেট করুন এবং নিম্নলিখিত কোডটি সন্নিবেশ করুন:

'use strict';

function main() {

    // Import the Google Cloud client library
    const {BigQuery} = require('@google-cloud/bigquery');

    async function queryShakespeare() {
    // Queries a public Shakespeare dataset.

        // Create a client
        const bigqueryClient = new BigQuery();

        // The SQL query to run
        const sqlQuery = `SELECT word, word_count
            FROM \`bigquery-public-data.samples.shakespeare\`
            WHERE corpus = @corpus
            AND word_count >= @min_word_count
            ORDER BY word_count DESC`;

        const options = {
        query: sqlQuery,
        // Location must match that of the dataset(s) referenced in the query.
        location: 'US',
        params: {corpus: 'romeoandjuliet', min_word_count: 250},
        };

        // Run the query
        const [rows] = await bigqueryClient.query(options);

        console.log('Rows:');
        rows.forEach(row => console.log(row));
    }

    queryShakespeare();
  }

main();

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

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

node queryShakespeare.js

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

Rows:
{ word: 'the', word_count: 614 }
{ word: 'I', word_count: 577 }
{ word: 'and', word_count: 490 }
{ word: 'to', word_count: 486 }
{ word: 'a', word_count: 407 }
{ word: 'of', word_count: 367 }
{ word: 'my', word_count: 314 }
{ word: 'is', word_count: 307 }
...

8. GitHub ডেটাসেট জিজ্ঞাসা করুন

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

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

https://console.cloud.google.com/bigquery?p=bigquery-public-data&d=github_repos&t=commits&page=table

ডেটা কীভাবে দেখায় তার একটি দ্রুত পূর্বরূপ পেতে, পূর্বরূপ ট্যাবে ক্লিক করুন:

d3f0dc7400fbe678.png

BigQueryDemo ফোল্ডারের ভিতরে queryGitHub.js ফাইল তৈরি করুন:

 touch queryGitHub.js

queryGitHub.js ফাইলে নেভিগেট করুন এবং নিম্নলিখিত কোডটি সন্নিবেশ করুন:

'use strict';

function main() {

    // Import the Google Cloud client library
    const {BigQuery} = require('@google-cloud/bigquery');


    async function queryGitHub() {
        // Queries a public GitHub dataset.

        // Create a client
        const bigqueryClient = new BigQuery();

        // The SQL query to run
        const sqlQuery = `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`;

        const options = {
        query: sqlQuery,
        // Location must match that of the dataset(s) referenced in the query.
        location: 'US',
        };

        // Run the query
        const [rows] = await bigqueryClient.query(options);

        console.log('Rows:');
        rows.forEach(row => console.log(`${row.subject}: ${row.num_duplicates}`));
    }
    
    queryGitHub();
}

main();

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

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

node queryGitHub.js

আপনার কমিট বার্তা এবং তাদের ঘটনাগুলির একটি তালিকা দেখতে হবে:

Rows:
Update README.md: 2572220
: 1985733
Initial commit: 1940228
Mirroring from Micro.blog.: 646772
update: 592520
Update data.json: 548730
Update data.js: 548354
...

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

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

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

BigQueryDemo ফোল্ডারের ভিতরে queryShakespeare.js ফাইলে নেভিগেট করুন এবং নিম্নলিখিত কোডটি প্রতিস্থাপন করুন:

'use strict';

function main() {

    // Import the Google Cloud client library
    const {BigQuery} = require('@google-cloud/bigquery');

    async function queryShakespeareDisableCache() {
        // Queries the Shakespeare dataset with the cache disabled.

        // Create a client
        const bigqueryClient = new BigQuery();

        const sqlQuery = `SELECT word, word_count
            FROM \`bigquery-public-data.samples.shakespeare\`
            WHERE corpus = @corpus
            AND word_count >= @min_word_count
            ORDER BY word_count DESC`;

        const options = {
            query: sqlQuery,
            // Location must match that of the dataset(s) referenced in the query.
            location: 'US',
            params: {corpus: 'romeoandjuliet', min_word_count: 250},
            useQueryCache: false,
        };

        // Run the query as a job
        const [job] = await bigqueryClient.createQueryJob(options);
        console.log(`Job ${job.id} started.`);

        // Wait for the query to finish
        const [rows] = await job.getQueryResults();

        // Print the results
        console.log('Rows:');
        rows.forEach(row => console.log(row));

        // Print job statistics
        console.log('JOB STATISTICS:')
        console.log(`Status: ${job.metadata.status.state}`);
        console.log(`Creation time: ${job.metadata.statistics.creationTime}`);
        console.log(`Start time: ${job.metadata.statistics.startTime}`);
        console.log(`Statement type: ${job.metadata.statistics.query.statementType}`);
    }
    queryShakespeareDisableCache();
}

main();

কোড সম্পর্কে নোট করার জন্য কিছু জিনিস। প্রথমত, options অবজেক্টের ভিতরে UseQueryCache false সেট করে ক্যাশিং অক্ষম করা হয়। দ্বিতীয়ত, আপনি কাজের অবজেক্ট থেকে প্রশ্ন সম্পর্কে পরিসংখ্যান অ্যাক্সেস করেছেন।

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

node queryShakespeare.js

আপনার কমিট বার্তা এবং তাদের ঘটনাগুলির একটি তালিকা দেখতে হবে। উপরন্তু, আপনি ক্যোয়ারী সম্পর্কে কিছু পরিসংখ্যান দেখতে হবে:

Rows:
{ word: 'the', word_count: 614 }
{ word: 'I', word_count: 577 }
{ word: 'and', word_count: 490 }
{ word: 'to', word_count: 486 }
{ word: 'a', word_count: 407 }
{ word: 'of', word_count: 367 }
{ word: 'my', word_count: 314 }
{ word: 'is', word_count: 307 }
{ word: 'in', word_count: 291 }
{ word: 'you', word_count: 271 }
{ word: 'that', word_count: 270 }
{ word: 'me', word_count: 263 }
JOB STATISTICS:
Status: RUNNING
Creation time: 1554309220660
Start time: 1554309220793
Statement type: SELECT

10. BigQuery-এ ডেটা লোড হচ্ছে৷

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

এই ধাপে, আপনি Google ক্লাউড স্টোরেজে সঞ্চিত একটি 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 .
Copying gs://cloud-samples-data/bigquery/us-states/us-states.json...
/ [1 files][  2.0 KiB/  2.0 KiB]                                                
Operation completed over 1 objects/2.0 KiB.

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

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

এই JSON ফাইলটিকে BigQuery-এ লোড করতে, BigQueryDemo ফোল্ডারের মধ্যে createDataset.js ফাইল এবং একটি loadBigQueryJSON.js ফাইল তৈরি করুন:

touch createDataset.js 
touch loadBigQueryJSON.js

Google Cloud Storage Node.js ক্লায়েন্ট লাইব্রেরি ইনস্টল করুন:

 npm install --save @google-cloud/storage

createDataset.js ফাইলে নেভিগেট করুন এবং নিম্নলিখিত কোডটি সন্নিবেশ করুন:

'use strict';

function main() {
    // Import the Google Cloud client libraries
    const {BigQuery} = require('@google-cloud/bigquery');

    async function createDataset() {
        const datasetId = "my_states_dataset3";

        const bigqueryClient = new BigQuery();

        // Specify the geographic location where the dataset should reside
        const options = {
        location: 'US',
        };

        // Create a new dataset
        const [dataset] = await bigqueryClient.createDataset(datasetId, options);
        console.log(`Dataset ${dataset.id} created.`);
    }

    createDataset();
}

main();

তারপর, loadBigQueryJSON.js ফাইলে নেভিগেট করুন এবং নিম্নলিখিত কোডটি সন্নিবেশ করুন:

'use strict';

function main() {
    // Import the Google Cloud client libraries
    const {BigQuery} = require('@google-cloud/bigquery');
    const {Storage} = require('@google-cloud/storage');

    const datasetId = "my_states_dataset3";
    const tableId = "my_states_table";


    async function createTable(datasetId, tableId) {
        // Creates a new table

        // Create a client
        const bigqueryClient = new BigQuery();

        const options = {
            location: 'US',
            };

        // Create a new table in the dataset
        const [table] = await bigqueryClient
        .dataset(datasetId)
        .createTable(tableId, options);

        console.log(`Table ${table.id} created.`);
    }

    async function loadJSONFromGCS(datasetId, tableId) {
        // Import a GCS file into a table with manually defined schema.

        // Instantiate clients
        const bigqueryClient = new BigQuery();
        const storageClient = new Storage();

        const bucketName = 'cloud-samples-data';
        const filename = 'bigquery/us-states/us-states.json';

        // Configure the load job.
        const metadata = {
        sourceFormat: 'NEWLINE_DELIMITED_JSON',
        schema: {
            fields: [
            {name: 'name', type: 'STRING'},
            {name: 'post_abbr', type: 'STRING'},
            ],
        },
        location: 'US',
        };

        // Load data from a Google Cloud Storage file into the table
        const [job] = await bigqueryClient
        .dataset(datasetId)
        .table(tableId)
        .load(storageClient.bucket(bucketName).file(filename), metadata);

        // load() waits for the job to finish
        console.log(`Job ${job.id} completed.`);

        // Check the job's status for errors
        const errors = job.status.errors;
        if (errors && errors.length > 0) {
        throw errors;
        }
    }

    // createDataset(datasetId);
    createTable(datasetId, tableId);
    loadJSONFromGCS(datasetId, tableId);
}

main();

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

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

node createDataset.js
node loadBigQueryJSON.js

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

Table my_states_table created.
Job [JOB ID] completed.

ডেটাসেট তৈরি হয়েছে কিনা তা যাচাই করতে, আপনি BigQuery ওয়েব UI-তে যেতে পারেন। আপনি একটি নতুন ডেটাসেট এবং একটি টেবিল দেখতে হবে. আপনি যদি টেবিলের পূর্বরূপ ট্যাবে স্যুইচ করেন, আপনি প্রকৃত তথ্য দেখতে পাবেন:

4fb7296ae901e8fd.png

11. অভিনন্দন!

আপনি Node.js ব্যবহার করে BigQuery ব্যবহার করতে শিখেছেন!

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

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

  • ক্লাউড প্ল্যাটফর্ম কনসোলে যান।
  • আপনি যে প্রকল্পটি বন্ধ করতে চান সেটি নির্বাচন করুন, তারপরে শীর্ষে 'মুছুন' এ ক্লিক করুন: এটি মুছে ফেলার জন্য প্রকল্পের সময়সূচী করে।

আরও জানুন

লাইসেন্স

এই কাজটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন 2.0 জেনেরিক লাইসেন্সের অধীনে লাইসেন্সপ্রাপ্ত।