1. ภาพรวม
BigQuery คือคลังเก็บข้อมูลการวิเคราะห์ต้นทุนต่ำที่มีความจุระดับเพทาไบต์ที่ Google จัดการอย่างเต็มรูปแบบ BigQuery คือ NoOps ไม่มีโครงสร้างพื้นฐานให้จัดการและคุณไม่จำเป็นต้องมีผู้ดูแลระบบฐานข้อมูล คุณจึงสามารถมุ่งเน้นไปที่การวิเคราะห์ข้อมูลเพื่อค้นหาข้อมูลเชิงลึกที่มีความหมาย ใช้ SQL ที่คุ้นเคย และใช้ประโยชน์จากโมเดลแบบจ่ายเมื่อใช้
ใน Codelab นี้ คุณจะใช้ไลบรารีของไคลเอ็นต์ Google Cloud BigQuery เพื่อค้นหาชุดข้อมูลสาธารณะของ BigQuery ด้วย Node.js
สิ่งที่คุณจะได้เรียนรู้
- วิธีใช้ Cloud Shell
- วิธีเปิดใช้ BigQuery API
- วิธีตรวจสอบสิทธิ์คำขอ API
- วิธีติดตั้งไลบรารีของไคลเอ็นต์ BigQuery สำหรับ Node.js
- วิธีค้นหาผลงานของเชกสเปียร์
- วิธีค้นหาชุดข้อมูล GitHub
- วิธีปรับการแคชและการแสดงสถิติ
สิ่งที่คุณต้องมี
แบบสำรวจ
คุณจะใช้บทแนะนำนี้อย่างไร
คุณจะให้คะแนนประสบการณ์การใช้งาน Node.js มากน้อยเพียงใด
คุณจะให้คะแนนความพึงพอใจสำหรับประสบการณ์การใช้บริการ Google Cloud Platform อย่างไร
2. การตั้งค่าและข้อกำหนด
การตั้งค่าสภาพแวดล้อมตามเวลาที่สะดวก
- ลงชื่อเข้าใช้ Cloud Console และสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ (หากยังไม่มีบัญชี Gmail หรือ G Suite คุณต้องสร้างบัญชี)
โปรดจดจำรหัสโปรเจ็กต์ ซึ่งเป็นชื่อที่ไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมด (ชื่อด้านบนมีคนใช้แล้ว และจะใช้ไม่ได้ ขออภัย) และจะมีการอ้างอิงใน Codelab ว่า PROJECT_ID
ในภายหลัง
- ถัดไป คุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร Google Cloud
การใช้งาน Codelab นี้น่าจะไม่มีค่าใช้จ่ายใดๆ หากมี ตรวจสอบว่าคุณได้ทำตามวิธีการใน "การล้างข้อมูล" ซึ่งจะแนะนำคุณเกี่ยวกับวิธีปิดทรัพยากรเพื่อไม่ให้มีการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ ผู้ใช้ใหม่ของ Google Cloud จะมีสิทธิ์เข้าร่วมโปรแกรมทดลองใช้ฟรี$300 USD
เริ่มต้น Cloud Shell
แม้ว่าเครื่องมือบรรทัดคำสั่ง Cloud SDK จะทำงานจากระยะไกลได้จากแล็ปท็อป แต่ใน Codelab นี้ คุณจะต้องใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมแบบบรรทัดคำสั่งที่ทำงานในระบบคลาวด์
เปิดใช้งาน Cloud Shell
- คลิกเปิดใช้งาน Cloud Shell จาก Cloud Console
หากคุณไม่เคยเริ่มต้นใช้งาน Cloud Shell มาก่อน คุณจะเห็นหน้าจอตรงกลาง (ครึ่งหน้าล่าง) ซึ่งอธิบายว่านี่คืออะไร หากเป็นเช่นนั้น ให้คลิกดำเนินการต่อ (คุณจะไม่เห็นการดำเนินการนี้อีก) หน้าจอแบบครั้งเดียวมีลักษณะดังนี้
การจัดสรรและเชื่อมต่อกับ Cloud Shell ใช้เวลาเพียงไม่กี่นาที
เครื่องเสมือนนี้เต็มไปด้วยเครื่องมือการพัฒนาทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักขนาด 5 GB ที่ทำงานอย่างต่อเนื่องใน Google Cloud ซึ่งจะช่วยเพิ่มประสิทธิภาพของเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก งานส่วนใหญ่ใน Codelab นี้สามารถทำได้โดยใช้เบราว์เซอร์หรือ Chromebook เท่านั้น
เมื่อเชื่อมต่อกับ Cloud Shell คุณควรเห็นว่าได้รับการตรวจสอบสิทธิ์แล้ว และโปรเจ็กต์ได้รับการตั้งค่าเป็นรหัสโปรเจ็กต์แล้ว
- เรียกใช้คำสั่งต่อไปนี้ใน 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. ตรวจสอบสิทธิ์คำขอ API
คุณต้องใช้บัญชีบริการเพื่อส่งคำขอไปยัง BigQuery API บัญชีบริการเป็นของโปรเจ็กต์และไลบรารีไคลเอ็นต์ Google BigQuery Node.js จะใช้บัญชีนี้เพื่อสร้างคำขอ API ของ BigQuery บัญชีบริการจะแสดงด้วยอีเมลเช่นเดียวกับบัญชีผู้ใช้อื่นๆ ในส่วนนี้ คุณจะใช้ Cloud SDK เพื่อสร้างบัญชีบริการ จากนั้นจึงสร้างข้อมูลเข้าสู่ระบบที่จะใช้ตรวจสอบสิทธิ์ว่าเป็นบัญชีบริการ
ก่อนอื่น ให้ตั้งค่าตัวแปรสภาพแวดล้อมด้วย PROJECT_ID ซึ่งคุณจะใช้ตลอด Codelab นี้
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 ใช้ Identity and Access Management (IAM) เพื่อจัดการการเข้าถึงทรัพยากร BigQuery มีบทบาทที่กำหนดไว้ล่วงหน้าจำนวนหนึ่ง (ผู้ใช้, dataOwner, 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. ติดตั้งไลบรารีไคลเอ็นต์ 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:
สร้างไฟล์ 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
คุณจะต้องทำการค้นหาในชุดข้อมูลสาธารณะของ GitHub เพื่อให้คุ้นเคยกับ BigQuery มากขึ้น คุณจะพบข้อความคอมมิตที่พบบ่อยที่สุดใน GitHub นอกจากนี้คุณยังใช้ UI เว็บของ BigQuery เพื่อดูตัวอย่างและเรียกใช้คำค้นหาเฉพาะกิจได้อีกด้วย
หากต้องการดูข้อมูล ให้เปิดชุดข้อมูล GitHub ใน UI ทางเว็บของ BigQuery โดยทำดังนี้
หากต้องการดูตัวอย่างอย่างรวดเร็วของข้อมูล ให้คลิกแท็บ "ดูตัวอย่าง":
สร้างไฟล์ 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
ติดตั้งไลบรารีไคลเอ็นต์ 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.
หากต้องการยืนยันว่าสร้างชุดข้อมูลแล้ว ให้ไปที่ UI ทางเว็บของ BigQuery คุณจะเห็นชุดข้อมูลใหม่และตาราง หากสลับไปที่แท็บแสดงตัวอย่างของตาราง คุณจะเห็นข้อมูลจริงดังนี้
11. ยินดีด้วย
คุณได้เรียนรู้วิธีใช้ BigQuery ด้วย Node.js แล้ว
ล้างข้อมูล
เพื่อเลี่ยงไม่ให้เกิดการเรียกเก็บเงินกับบัญชี Google Cloud Platform สำหรับทรัพยากรที่ใช้ในการเริ่มต้นอย่างรวดเร็วนี้ ควรทำดังนี้
- ไปที่คอนโซล Cloud Platform
- เลือกโครงการที่คุณต้องการปิดการทำงาน แล้วคลิก "ลบ" ที่ด้านบน: การดำเนินการนี้จะกำหนดเวลาการลบโปรเจ็กต์
ดูข้อมูลเพิ่มเติม
- Google BigQuery: https://cloud.google.com/bigquery/docs/
- Node.js บน Google Cloud Platform: https://cloud.google.com/nodejs/
- ไลบรารีไคลเอ็นต์ Google BigQuery Node.js: https://github.com/googleapis/nodejs-bigquery
ใบอนุญาต
ผลงานนี้ได้รับอนุญาตภายใต้ใบอนุญาตทั่วไปครีเอทีฟคอมมอนส์แบบระบุแหล่งที่มา 2.0