BigQuery के लिए bq कमांड-लाइन टूल की मदद से, डेटा लोड करें और उसके बारे में क्वेरी करें

1. परिचय

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

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

  • BigQuery के लिए bq कमांड-लाइन टूल इस्तेमाल करने का तरीका
  • BigQuery टेबल में स्थानीय डेटा फ़ाइलों को लोड करने का तरीका

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

  • Google Cloud प्रोजेक्ट
  • ब्राउज़र, जैसे कि Google Chrome

2. सेट अप करें

BigQuery चालू करना

अगर आपके पास पहले से कोई Google खाता नहीं है, तो आपको एक खाता बनाना होगा.

  1. Google Cloud Console में साइन इन करें और BigQuery पर जाएं. आपके पास सीधे अपने ब्राउज़र में यह यूआरएल डालकर भी BigQuery वेब यूज़र इंटरफ़ेस (यूआई) खोलने का विकल्प है.
https://console.cloud.google.com/bigquery
  1. सेवा की शर्तें स्वीकार करें.
  2. BigQuery का इस्तेमाल करने से पहले, आपको एक प्रोजेक्ट बनाना होगा. अपना नया प्रोजेक्ट बनाने के लिए निर्देशों का पालन करें.

प्रोजेक्ट का कोई नाम चुनें और प्रोजेक्ट आईडी नोट कर लें. 1884405a64ce5765.png अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

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

यह कोडलैब, BigQuery सैंडबॉक्स की सीमाओं के साथ BigQuery के संसाधनों का इस्तेमाल करता है. बिलिंग खाता होना ज़रूरी नहीं है. अगर आपको बाद में सैंडबॉक्स की सीमाओं को हटाना हो, तो Google Cloud के मुफ़्त ट्रायल के लिए साइन अप करके बिलिंग खाता जोड़ा जा सकता है.

क्लाउड शेल

आपको Cloud Shell का इस्तेमाल करना होगा. यह Google Cloud में चल रहा एक कमांड-लाइन एनवायरमेंट है.

Cloud Shell चालू करें

  1. Cloud Console में, Cloud Shell चालू करें 4292cbf4971c9786.png पर क्लिक करें.

bce75f34b2c53987.png

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

70f315d7b402b476.png

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

fbe3a0674c982259.png

इस वर्चुअल मशीन में ऐसे सभी डेवलपमेंट टूल मौजूद हैं जिनकी आपको ज़रूरत है. यह पांच जीबी की स्थायी होम डायरेक्ट्री उपलब्ध कराता है और 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`
  1. Cloud Shell में यह कमांड चलाएं, ताकि यह पुष्टि की जा सके कि gcloud के लिए कमांड को आपके प्रोजेक्ट के बारे में जानकारी है:
gcloud config list project

कमांड आउटपुट

[core]
project = <PROJECT_ID>

अगर ऐसा नहीं है, तो आप इसे इस निर्देश की मदद से सेट कर सकते हैं:

gcloud config set project <PROJECT_ID>

कमांड आउटपुट

Updated property [core/project].

3. डेटासेट बनाना

अपनी टेबल शामिल करने के लिए डेटासेट बनाएं.

डेटासेट क्या होता है?

BigQuery डेटासेट, कई टेबल का कलेक्शन होता है. किसी डेटासेट में सभी टेबल एक ही डेटा लोकेशन में सेव की जाती हैं. डेटासेट और उसकी टेबल के ऐक्सेस को सीमित करने के लिए, कस्टम ऐक्सेस कंट्रोल भी अटैच किए जा सकते हैं.

डेटासेट बनाना

Cloud Shell में, "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, कई डेटा फ़ॉर्मैट से डेटा लोड कर सकता है. इनमें, newline-limit JSON, Avro, और CSV शामिल हैं. आसानी के लिए, आपको CSV फ़ाइल इस्तेमाल करनी होगी.

CSV फ़ाइल बनाना

Cloud Shell में, एक खाली CSV फ़ाइल बनाएं.

touch customer_transactions.csv

Cloud Shell में एडिट करने वाले निर्देश का इस्तेमाल करके, कोड एडिटर में CSV फ़ाइल खोलें. इससे एक नई ब्राउज़र विंडो खुलेगी, जिसमें कोड एडिटर और Cloud Shell पैनल होगा.

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

फ़ाइल > बदलाव करें.

5. डेटा लोड करें

अपनी CSV फ़ाइल को BigQuery टेबल में लोड करने के लिए, bq लोड कमांड का इस्तेमाल करें.

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 की मदद से Cloud Storage से फ़ाइलों को लोड कर सकता है.
  • स्कीमा, जिसे 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

6. डेटा के लिए क्वेरी करें

डेटा लोड होने के बाद, BigQuery वेब यूज़र इंटरफ़ेस (यूआई), bq निर्देश या एपीआई का इस्तेमाल करके क्वेरी की जा सकती है. आपकी क्वेरी किसी भी डेटासेट (या डेटासेट) के लिए आपके डेटा को जोड़ सकती हैं, बशर्ते वे उसी जगह में हों जिसे पढ़ने की आपको अनुमति है.

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

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

उस डेटासेट को मिटाएं जिसे आपने bq rm कमांड से बनाया है. इसमें मौजूद किसी भी टेबल को हटाने के लिए, -r फ़्लैग का इस्तेमाल करें.

bq rm -r bq_load_codelab

8. बधाई हो!

आपने BigQuery में एक टेबल अपलोड करके उसके बारे में क्वेरी की है!

आपने क्या कवर किया

  • BigQuery के साथ इंटरैक्ट करने के लिए, bq कमांड-लाइन टूल का इस्तेमाल करना.
  • BigQuery क्वेरी के साथ अपने डेटा और सार्वजनिक डेटासेट को जोड़ना.

आगे क्या करना है

इन विषयों के बारे में ज़्यादा जानें: