استخدام BigQuery مع Node.js

1. نظرة عامة

BigQuery هو مستودع بيانات إحصائية منخفض التكلفة من Google مُدار بالكامل على نطاق بيتابايت. BigQuery هو NoOps - لا توجد بنية أساسية لإدارتها ولا تحتاج إلى مشرف قاعدة بيانات - لذلك يمكنك التركيز على تحليل البيانات للعثور على إحصاءات ذات مغزى، واستخدام SQL المألوف، والاستفادة من نموذج الدفع حسب الاستخدام.

في هذا الدرس التطبيقي حول الترميز، ستستخدم مكتبة عميل Google Cloud BigQuery لطلب البحث عن مجموعات البيانات العامة في BigQuery باستخدام Node.js.

المعلومات التي ستطّلع عليها

  • كيفية استخدام Cloud Shell
  • كيفية تفعيل BigQuery API
  • طريقة مصادقة طلبات البيانات من واجهة برمجة التطبيقات
  • كيفية تثبيت مكتبة برامج BigQuery لنظام Node.js
  • طريقة الاستعلام عن أعمال شكسبير
  • كيفية الاستعلام عن مجموعة بيانات 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. بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام موارد Google Cloud.

إنّ تنفيذ هذا الدرس التطبيقي حول الترميز لن يكون مكلفًا أو مكلفًا على الإطلاق. احرص على اتّباع أي تعليمات في قسم "الحذف سريعًا". الذي يقدم لك نصائح حول كيفية إيقاف تشغيل الموارد حتى لا تتكبّد أي فواتير خارج نطاق هذا البرنامج التعليمي. يكون مستخدمو Google Cloud الجدد مؤهَّلون للانضمام إلى برنامج الفترة التجريبية المجانية التي تبلغ قيمتها 300 دولار أمريكي.

بدء Cloud Shell

على الرغم من أنّه يمكن تشغيل أداة سطر أوامر Cloud SDK عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدرس التطبيقي Google Cloud Shell، وهي بيئة سطر أوامر يتم تشغيلها في السحابة الإلكترونية.

تفعيل Cloud Shell

  1. من Cloud Console، انقر على تفعيل Cloud Shell لا.

yzBQBp2RC1EFvSSLYVkMA2m6LHqGsp22O81rUS5tGb9Y1FqlVhoRj_ka8V_uEjtpcirZRULMy1IjNr848uYvb9mC9RcGGqeayaLcXFfRwUGeXWChZPtWkHzUshTcqx_wJHis0X8viA

إذا لم يسبق لك بدء تشغيل Cloud Shell، ستظهر لك شاشة وسيطة (الجزء السفلي غير المرئي من الصفحة) تصف ماهيتها. إذا كان الأمر كذلك، فانقر على متابعة (ولن تراه مرة أخرى مطلقًا). إليك ما تبدو عليه هذه الشاشة التي تُستخدم لمرة واحدة:

VgsaqGbKPRiqK24CqAKjSXjepuJT96PmiDqQMcySmWKx8QyW5F3G2D8JH2d08ek-YM77wWKxPvggpOFER8Hbq3aaZipTDU2o0iljA0qS3FXYDKzuk

من المفترَض أن تستغرق عملية إدارة الحسابات والاتصال بخدمة Cloud Shell بضع دقائق فقط.

7RuYr-LCKzdiE1veTFmL_lYrVxsMZ6-xDoxAnfwPPc5uFA0utmFGejvu81jGmTdbqnqxrytW3KcHT6xrMIRc3bskctnDZC5nJdpqw-LRxu3r35hL4A0BSBTtbtirfh3PKv-eOKt8Rg

يتم تحميل هذا الجهاز الافتراضي مع جميع أدوات التطوير التي تحتاجها. وتوفّر هذه الشبكة دليلاً رئيسيًا دائمًا بسعة 5 غيغابايت ويتم تشغيله في 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

يجب تفعيل BigQuery API تلقائيًا في جميع مشاريع Google Cloud. يمكنك التحقّق مما إذا كان ذلك صحيحًا باستخدام الأمر التالي في 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. مثل أي حساب مستخدم آخر، يتم تمثيل حساب الخدمة بعنوان بريد إلكتروني. في هذا القسم، ستستخدم حزمة تطوير البرامج (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 على الأقل. في 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- تثبيت مكتبة برامج BigQuery لنظام Node.js

أولاً، أنشئ مجلد "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. ويحتوي على فهرس كلمات لأعمال شكسبير، مع تحديد عدد مرات ظهور كل كلمة في كل مجموعة.

في هذه الخطوة، ستقوم بالاستعلام عن جدول شيكسبير.

أولاً، افتح محرِّر الرموز من أعلى يسار Cloud Shell:

9b8f365ab5ec7f71.png

أنشئ ملف queryShakespeare.js داخل المجلد BigQueryDemo :

 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 لمعاينة وتشغيل طلبات البحث المخصصة.

لعرض البيانات، افتح مجموعة بيانات GitHub في واجهة مستخدم الويب في BigQuery:

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

للحصول على معاينة سريعة لشكل البيانات، انقر فوق علامة التبويب معاينة:

d3f0dc7400fbe678.png

أنشئ ملف queryGitHub.js داخل المجلد BigQueryDemo:

 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 أيضًا بعض الإحصائيات حول الاستعلامات مثل وقت الإنشاء ووقت الانتهاء وإجمالي وحدات البايت التي تمت معالجتها.

في هذه الخطوة، ستقوم بتعطيل التخزين المؤقت وعرض بعض الإحصائيات حول الاستعلامات.

انتقِل إلى ملف queryShakespeare.js داخل مجلد "BigQueryDemo" واستبدِل الرمز بما يلي:

'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();

بعض الأمور التي يجب ملاحظتها حول التعليمة البرمجية. أولاً، يتم إيقاف التخزين المؤقت من خلال ضبط UseQueryCache على false داخل الكائن options. ثانيًا، قمت بالوصول إلى الإحصائيات حول الاستعلام من كائن الوظيفة.

مرة أخرى في 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.

في هذه الخطوة، سيتم تحميل ملف JSON مُخزَّن في Google Cloud Storage إلى جدول في 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، أنشئ ملف createDataset.js وملف loadBigQueryJSON.js في المجلد BigQueryDemo:

touch createDataset.js 
touch loadBigQueryJSON.js

ثبِّت مكتبة برامج Node.js في Google Cloud Storage:

 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. تهانينا!

لقد تعلمت كيفية استخدام BigQuery باستخدام Node.js!

تَنظيم

لتجنُّب تحمُّل الرسوم المفروضة على حسابك على Google Cloud Platform مقابل الموارد المستخدَمة في عملية البدء السريع هذه:

  • انتقِل إلى وحدة تحكُّم Cloud Platform.
  • اختَر المشروع الذي تريد إيقافه، ثم انقر على "حذف". في الجزء العلوي: يؤدي هذا إلى تحديد موعد المشروع للحذف.

مزيد من المعلومات

الترخيص

هذا العمل مرخّص بموجب رخصة المشاع الإبداعي 2.0 مع نسب العمل إلى مؤلف عام.