Node.js के साथ BigQuery का इस्तेमाल करना

1. खास जानकारी

BigQuery, Google का पूरी तरह से मैनेज किया गया डेटा वेयरहाउस है. इसमें, कम कीमत में कई पेटाबाइट डेटा के विश्लेषण की सुविधा मिलती है. BigQuery NoOps है—इसे मैनेज करने के लिए कोई इन्फ़्रास्ट्रक्चर नहीं है और आपको डेटाबेस एडमिन की भी ज़रूरत नहीं है. इसलिए, डेटा के विश्लेषण पर फ़ोकस करके काम की इनसाइट पाएं, जाने-पहचाने एसक्यूएल का इस्तेमाल करें, और इस्तेमाल के हिसाब से पैसे चुकाने वाले मॉडल का फ़ायदा पाएं.

इस कोडलैब में, Node.js की मदद से BigQuery के सार्वजनिक डेटासेट की क्वेरी करने के लिए, Google Cloud BigQuery क्लाइंट लाइब्रेरी का इस्तेमाल किया जाएगा.

आपको इनके बारे में जानकारी मिलेगी

  • Cloud Shell का इस्तेमाल कैसे करें
  • BigQuery API चालू करने का तरीका
  • एपीआई अनुरोधों की पुष्टि करने का तरीका
  • Node.js के लिए BigQuery क्लाइंट लाइब्रेरी इंस्टॉल करने का तरीका
  • शेक्सपियर के काम के बारे में क्वेरी करने का तरीका
  • GitHub के डेटासेट से जुड़ी क्वेरी करने का तरीका
  • कैश मेमोरी और डिसप्ले आंकड़ों में बदलाव करने का तरीका

आपको इन चीज़ों की ज़रूरत होगी

  • Google Cloud Platform प्रोजेक्ट
  • ब्राउज़र, जैसे कि Chrome या Firefox
  • Node.js का इस्तेमाल करना

सर्वे

इस ट्यूटोरियल का इस्तेमाल कैसे किया जाएगा?

इसे सिर्फ़ पढ़ें इसे पढ़ें और कसरतों को पूरा करें

आप Node.js के साथ अपने अनुभव को क्या रेटिंग देंगे/देंगी?

शुरुआती इंटरमीडिएट कुशल

Google Cloud Platform की सेवाएं इस्तेमाल करने का आपका अनुभव कैसा रहा?

शुरुआती इंटरमीडिएट कुशल

2. सेटअप और ज़रूरी शर्तें

अपने हिसाब से एनवायरमेंट सेटअप करना

  1. Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. (अगर आपके पास पहले से Gmail या G Suite खाता नहीं है, तो आपको एक खाता बनाना होगा.)

H_hgylo4zxOllHaAbPKJ7VyqCKPDUnDhkr-BsBIFBsrB6TYSisg6LX-uqmMhh4sXUy_hoa2Qv87C2nFmkg-QAcCiZZp0qtpf6VPaNEEfP_iqt29KVLD-gklBWugQVeOWsFnJmNjHDw

dcCPqfBIwNO4R-0fNQLUC4aYXOOZhKhjUnakFLZJGeziw2ikOxGjGkCHDwN5x5kCbPFB8fiOzZnX-GfuzQ8Ox-UU15BwHirkVPR_0RJwl0oXrhqZmMIvZMa_uwHugBJIdx5-bZ6Z8Q

jgLzVCxk93d6E2bbonzATKA4jFZReoQ-fORxZZLEi5C3D-ubnv6nL-eP-iyh7qAsWyq_nyzzuEoPFD1wFOFZOe4FWhPBJjUDncnTxTImT3Ts9TM54f4nPpsAp52O0y3Cb19IceAEgQ

प्रोजेक्ट आईडी याद रखें. यह Google Cloud के सभी प्रोजेक्ट के लिए एक खास नाम होता है (ऊपर दिया गया नाम पहले ही ले लिया गया है और यह आपके लिए काम नहीं करेगा!). बाद में, इस कोडलैब को इस कोडलैब में PROJECT_ID के तौर पर दिखाया जाएगा.

  1. इसके बाद, आपको Google Cloud के संसाधनों का इस्तेमाल करने के लिए, Cloud Console में बिलिंग की सुविधा चालू करनी होगी.

इस कोडलैब का इस्तेमाल करने पर, आपको ज़्यादा पैसे नहीं चुकाने होंगे. "साफ़ करना" सेक्शन में दिए गए निर्देशों का पालन करना न भूलें सेक्शन में, संसाधनों को बंद करने का तरीका बताया गया है. इससे इस ट्यूटोरियल के अलावा बिलिंग की सुविधा नहीं मिलेगी. Google Cloud के नए उपयोगकर्ता, 300USD डॉलर के मुफ़्त में आज़माने वाले प्रोग्राम में हिस्सा ले सकते हैं.

Cloud Shell शुरू करना

क्लाउड SDK टूल कमांड-लाइन टूल को लैपटॉप से कहीं से भी ऑपरेट किया जा सकता है. हालांकि, इस कोडलैब में आपको Google Cloud Shell का इस्तेमाल करना होगा. यह कमांड लाइन एनवायरमेंट है, जो क्लाउड पर काम करता है.

Cloud Shell चालू करें

  1. Cloud Console में, Cloud Shell चालू करें dnDTxS9j60RcXdTjea12HLB9paS9Gzf7PfFLE9RW8g0Qx1bz7nmCzyCu4rjluX3bOEwavOpDwioXEkzOf6xtZp6-ZbJa08jwJqwfFEWfiW2x पर क्लिक करें.

yzBQBp2RC1EFvSSLYVkMA2m6LHqGsp22O81rUS5tGb9Y1FqlVhoRj_ka8V_uEjtpcirZRULMy1IjNr848uYvb9mC9RcGGqeayaLcXFfRwUGeXWChZPtWkHzUshTcqx_wJHis0X8viA

अगर आपने Cloud Shell का इस्तेमाल पहले कभी नहीं किया है, तो आपको इसके बारे में जानकारी देने वाली एक इंटरमीडिएट स्क्रीन (पेज के फ़ोल्ड के नीचे) दिखेगी. अगर ऐसा है, तो जारी रखें पर क्लिक करें (यह आपको फिर कभी नहीं दिखेगा). एक बार इस्तेमाल होने वाली स्क्रीन कुछ इस तरह दिखती है:

VgsaqGbKPRiqK24CqAKjSXjepuJT96PmiDqQMcySmWKx8QyW5F3G2D8JH2d08ek-YM77wWKxPvggpOFER8Hbq3aaZipTDU2o0il7A0kSGMTQNFXY_N

प्रावधान करने और Cloud Shell से कनेक्ट होने में कुछ ही समय लगेगा.

7RuYr-LCKzdiE1veTFmL_lYrVxsMZ6-xDoxAnfwPPc5uFA0utmFGejvu81jGmTdbqnqxrytW3KcHT6xrMIRc3bskctnDZC5nJdpqw-LRxu3r35hL4A0BSBTtbtirfh3PKv-eOKt8Rg

इस वर्चुअल मशीन में ऐसे सभी डेवलपमेंट टूल मौजूद हैं जिनकी आपको ज़रूरत है. यह पांच जीबी की स्थायी होम डायरेक्ट्री उपलब्ध कराता है और Google Cloud में चलता है. यह नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रोसेस को बेहतर बनाता है. अगर सभी नहीं, तो इस कोडलैब में आपका बहुत सारा काम बस किसी ब्राउज़र या आपके Chromebook से किया जा सकता है.

Cloud Shell से कनेक्ट करने के बाद, आपको दिखेगा कि आपकी पुष्टि पहले ही हो चुकी है. साथ ही, यह प्रोजेक्ट पहले से ही आपके प्रोजेक्ट आईडी पर सेट है.

  1. यह पुष्टि करने के लिए Cloud Shell में नीचे दिया गया कमांड चलाएं कि आपकी पुष्टि हो गई है:
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 चालू करना

Google Cloud के सभी प्रोजेक्ट में BigQuery API, डिफ़ॉल्ट रूप से चालू होना चाहिए. Cloud Shell में नीचे दिए गए निर्देश की मदद से, यह देखा जा सकता है कि यह बात सही है या नहीं:

gcloud services list

आपको सूची में BigQuery दिखेगा:

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

अगर BigQuery API चालू नहीं है, तो इसे चालू करने के लिए Cloud Shell में इस कमांड का इस्तेमाल किया जा सकता है:

gcloud services enable bigquery-json.googleapis.com

4. एपीआई अनुरोधों की पुष्टि करें

BigQuery API को अनुरोध करने के लिए, आपको सेवा खाते का इस्तेमाल करना होगा. सेवा खाता आपके प्रोजेक्ट से जुड़ा होता है. Google BigQuery Node.js क्लाइंट लाइब्रेरी, इसका इस्तेमाल BigQuery API अनुरोध करने के लिए करती है. किसी भी दूसरे उपयोगकर्ता खाते की तरह, सेवा खाते को ईमेल पते के तौर पर दिखाया जाता है. इस सेक्शन में, आपको सेवा खाता बनाने के लिए Cloud 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, संसाधनों का ऐक्सेस मैनेज करने के लिए पहचान और ऐक्सेस मैनेजमेंट (आईएएम) का इस्तेमाल करता है. BigQuery में पहले से तय कई भूमिकाएं होती हैं. जैसे, उपयोगकर्ता, dataमालिक, dataViewer वगैरह. ये भूमिकाएं, पिछले चरण में बनाए गए अपने सेवा खाते को असाइन की जा सकती हैं. BigQuery दस्तावेज़ में, ऐक्सेस कंट्रोल के बारे में ज़्यादा जानकारी हासिल की जा सकती है.

सार्वजनिक डेटासेट के लिए क्वेरी करने से पहले, आपको यह पक्का करना होगा कि सेवा खाते में कम से कम bigquery.user की भूमिका हो. Cloud Shell में, सेवा खाते को 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();

कुछ समय निकालकर कोड को पढ़ें और देखें कि टेबल से क्वेरी कैसे की गई.

Cloud Shell पर वापस जाकर, इस ऐप्लिकेशन को चलाएं:

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 के वेब यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल किया जा सकता है.

डेटा देखने के लिए, BigQuery वेब यूज़र इंटरफ़ेस (यूआई) में GitHub डेटासेट खोलें:

https://console.cloud.google.com/bigquery?p=bigquery-public-data&amp;d=github_repos&amp;t=commits&amp;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();

कुछ समय निकालकर कोड को अच्छी तरह से समझ लें और देखें कि आम तौर पर सबसे ज़्यादा बताए गए मैसेज के लिए टेबल से किस तरह क्वेरी की गई है.

Cloud Shell पर वापस जाकर, इस ऐप्लिकेशन को चलाएं:

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 पर सेट करके, कैश मेमोरी में डेटा सेव करने की सुविधा बंद कर दी जाती है. इसके बाद, आपने जॉब ऑब्जेक्ट से क्वेरी के आंकड़े को ऐक्सेस किया.

Cloud Shell पर वापस जाकर, इस ऐप्लिकेशन को चलाएं:

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 Cloud Storage, Google की अन्य सेवाएं या किसी स्थानीय और आसानी से पढ़े जा सकने वाले सोर्स से डेटा लोड करना. यहां तक कि आप अपना डेटा स्ट्रीम भी कर सकते हैं. BigQuery में डेटा लोड करना पेज के बारे में ज़्यादा जानकारी मिल सकती है.

इस चरण में, Google Cloud Storage में सेव की गई JSON फ़ाइल को, BigQuery टेबल में लोड किया जाएगा. JSON फ़ाइल यहां मौजूद है: gs://cloud-samples-data/bigquery/us-states/us-states.json

अगर आपको JSON फ़ाइल के कॉन्टेंट के बारे में जानना है, तो gsutil कमांड-लाइन टूल का इस्तेमाल करके, उसे Cloud Shell में डाउनलोड किया जा सकता है:

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 फ़ाइल को कैसे लोड करता है और डेटासेट में टेबल (स्कीमा के साथ) कैसे बनाता है.

Cloud Shell पर वापस जाकर, इस ऐप्लिकेशन को चलाएं:

node createDataset.js
node loadBigQueryJSON.js

BigQuery में डेटासेट और टेबल बनाई जाती हैं:

Table my_states_table created.
Job [JOB ID] completed.

डेटासेट बनाए जाने की पुष्टि करने के लिए, BigQuery वेब यूज़र इंटरफ़ेस (यूआई) पर जाएं. आपको एक नया डेटासेट और एक टेबल दिखेगी. टेबल के झलक टैब पर जाने पर, आपको असल डेटा दिखेगा:

4fb7296ae901e8fd.png

11. बधाई हो!

आपने Node.js की मदद से BigQuery को इस्तेमाल करने का तरीका सीखा है!

व्यवस्थित करें

इस क्विकस्टार्ट में इस्तेमाल किए गए संसाधनों के लिए, आपके Google Cloud Platform खाते पर लगने वाले शुल्क से बचने के लिए:

  • Cloud Platform कंसोल पर जाएं.
  • वह प्रोजेक्ट चुनें जिसे शट डाउन करना है. इसके बाद, ‘मिटाएं' पर क्लिक करें सबसे ऊपर: यह प्रोजेक्ट को मिटाने के लिए शेड्यूल करता है.

ज़्यादा जानें

लाइसेंस

इस काम को क्रिएटिव कॉमंस एट्रिब्यूशन 2.0 जेनरिक लाइसेंस के तहत लाइसेंस मिला है.