1. บทนำ
ใน Codelab นี้ คุณจะได้เรียนรู้วิธีใช้ Spaneler Data Boost เพื่อค้นหาข้อมูล Spanner จาก BigQuery โดยใช้การค้นหาแบบรวมศูนย์ที่เป็น Zero-ETL และโดยไม่ส่งผลกระทบต่อฐานข้อมูล Spanner
Spanner Data Boost เป็นบริการแบบ Serverless ที่มีการจัดการครบวงจรสำหรับทรัพยากรการประมวลผลแบบอิสระสำหรับภาระงานของ Spanner ที่รองรับ Data Boost ช่วยให้คุณดำเนินการค้นหาข้อมูลวิเคราะห์และการส่งออกข้อมูลโดยมีผลกระทบเกือบ 0 ต่อภาระงานที่มีอยู่บนอินสแตนซ์ Spanner ที่จัดสรรไว้ โดยใช้โมเดลการใช้งานแบบออนดีมานด์แบบ Serverless
เมื่อจับคู่กับการเชื่อมต่อภายนอกของ BigQuery แล้ว Data Boost จะช่วยให้คุณค้นหาข้อมูลจาก Spanner ลงในแพลตฟอร์มการวิเคราะห์ข้อมูลได้อย่างง่ายดายโดยไม่ต้องเคลื่อนย้ายข้อมูล ETL ที่ซับซ้อน
ข้อกำหนดเบื้องต้น
- ความเข้าใจพื้นฐานเกี่ยวกับ Google Cloud, Console
- ทักษะพื้นฐานในอินเทอร์เฟซบรรทัดคำสั่งและ Google Shell
สิ่งที่คุณจะได้เรียนรู้
- วิธีทำให้อินสแตนซ์ Spanner ใช้งานได้
- วิธีโหลดข้อมูลเพื่อสร้างฐานข้อมูล Spanner
- วิธีเข้าถึงข้อมูล Spanner จาก BigQuery โดยไม่ใช้ Data Boost
- วิธีเข้าถึงข้อมูล Spanner จาก BigQuery ด้วย Data Boost
สิ่งที่ต้องมี
- บัญชี Google Cloud และโปรเจ็กต์ Google Cloud
- เว็บเบราว์เซอร์ เช่น Chrome
2. การตั้งค่าและข้อกำหนด
การตั้งค่าสภาพแวดล้อมตามเวลาที่สะดวก
- ลงชื่อเข้าใช้ Google Cloud Console และสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี
- ชื่อโครงการคือชื่อที่แสดงของผู้เข้าร่วมโปรเจ็กต์นี้ เป็นสตริงอักขระที่ Google APIs ไม่ได้ใช้ โดยคุณจะอัปเดตวิธีการชำระเงินได้ทุกเมื่อ
- รหัสโปรเจ็กต์จะไม่ซ้ำกันในทุกโปรเจ็กต์ของ Google Cloud และจะเปลี่ยนแปลงไม่ได้ (เปลี่ยนแปลงไม่ได้หลังจากตั้งค่าแล้ว) Cloud Console จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ปกติแล้วคุณไม่สนว่าอะไรเป็นอะไร ใน Codelab ส่วนใหญ่ คุณจะต้องอ้างอิงรหัสโปรเจ็กต์ (โดยปกติจะระบุเป็น
PROJECT_ID
) หากคุณไม่ชอบรหัสที่สร้างขึ้น คุณสามารถสร้างรหัสแบบสุ่มอื่นได้ หรือคุณจะลองดำเนินการเองแล้วดูว่าพร้อมให้ใช้งานหรือไม่ คุณจะเปลี่ยนแปลงหลังจากขั้นตอนนี้ไม่ได้และจะยังคงอยู่ตลอดระยะเวลาของโปรเจ็กต์ - สำหรับข้อมูลของคุณ ค่าที่ 3 คือหมายเลขโปรเจ็กต์ ซึ่ง API บางตัวใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าทั้ง 3 ค่าได้ในเอกสารประกอบ
- ถัดไป คุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร/API ของระบบคลาวด์ การใช้งาน Codelab นี้จะไม่มีค่าใช้จ่ายใดๆ หากมี หากต้องการปิดทรัพยากรเพื่อหลีกเลี่ยงการเรียกเก็บเงินที่นอกเหนือจากบทแนะนำนี้ คุณสามารถลบทรัพยากรที่คุณสร้างหรือลบโปรเจ็กต์ได้ ผู้ใช้ Google Cloud ใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรี$300 USD
เริ่มต้น Cloud Shell
แม้ว่าคุณจะดำเนินการ Google Cloud จากระยะไกลได้จากแล็ปท็อป แต่คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมแบบบรรทัดคำสั่งที่ทำงานในระบบคลาวด์ใน Codelab นี้
จากคอนโซล Google Cloud ให้คลิกไอคอน Cloud Shell ในแถบเครื่องมือด้านขวาบน ดังนี้
การจัดสรรและเชื่อมต่อกับสภาพแวดล้อมนี้ควรใช้เวลาเพียงครู่เดียว เมื่อเสร็จแล้ว คุณจะเห็นข้อมูลต่อไปนี้
เครื่องเสมือนนี้เต็มไปด้วยเครื่องมือการพัฒนาทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักขนาด 5 GB ที่ใช้งานได้ต่อเนื่องและทำงานบน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพของเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก งานทั้งหมดใน Codelab นี้ทำได้ในเบราว์เซอร์ คุณไม่จำเป็นต้องติดตั้งอะไรเลย
3. สร้างอินสแตนซ์และฐานข้อมูล Spanner
เปิดใช้ Spanner API
ตรวจสอบใน Cloud Shell ว่าได้ตั้งค่ารหัสโปรเจ็กต์แล้ว ดังนี้
gcloud config set project [YOUR-PROJECT-ID]
PROJECT_ID=$(gcloud config get-value project)
กำหนดค่าภูมิภาคเริ่มต้นเป็น us-central1
คุณสามารถเปลี่ยนเป็นภูมิภาคอื่นที่การกำหนดค่าระดับภูมิภาคของ Spanner รองรับ
gcloud config set compute/region us-central1
เปิดใช้ Spanner API:
gcloud services enable spanner.googleapis.com
สร้างอินสแตนซ์ Spanner
ในขั้นตอนนี้ เราจะตั้งค่าอินสแตนซ์ Spanner สำหรับ Codelab โดยเปิด Cloud Shell แล้วเรียกใช้คำสั่งนี้
export SPANNER_INSTANCE_ID=codelab-demo
export SPANNER_REGION=regional-us-central1
gcloud spanner instances create $SPANNER_INSTANCE_ID \
--config=$SPANNER_REGION \
--description="Spanner Codelab instance" \
--nodes=1
เอาต์พุตจากคำสั่ง:
$ gcloud spanner instances create $SPANNER_INSTANCE_ID \
--config=$SPANNER_REGION \
--description="Spanner Codelab instance" \
--nodes=1
Creating instance...done.
สร้างฐานข้อมูล
คุณสร้างฐานข้อมูลได้เมื่ออินสแตนซ์ทำงาน Spanner ช่วยให้สามารถใช้ฐานข้อมูลได้หลายฐานข้อมูลในอินสแตนซ์เดียว
ฐานข้อมูลคือที่ที่คุณกำหนดสคีมา อีกทั้งยังควบคุมผู้ที่มีสิทธิ์เข้าถึงฐานข้อมูล ตั้งค่าการเข้ารหัสที่กำหนดเอง กำหนดค่าเครื่องมือเพิ่มประสิทธิภาพ และตั้งค่าระยะเวลาเก็บรักษาได้ด้วย
หากต้องการสร้างฐานข้อมูล ให้ใช้เครื่องมือบรรทัดคำสั่ง gcloud อีกครั้งดังนี้
export SPANNER_DATABASE=codelab-db
gcloud spanner databases create $SPANNER_DATABASE \
--instance=$SPANNER_INSTANCE_ID
เอาต์พุตจากคำสั่ง:
$ gcloud spanner databases create $SPANNER_DATABASE \
--instance=$SPANNER_INSTANCE_ID
Creating database...done.
4. โหลดข้อมูล
คุณต้องมีข้อมูลบางส่วนในฐานข้อมูลก่อนจึงจะใช้ Data Boost ได้ ในการดำเนินการนี้ คุณจะต้องสร้างที่เก็บข้อมูล Cloud Storage, อัปโหลดการนำเข้า Avro ลงในที่เก็บข้อมูล แล้วเริ่มงานการนำเข้า Dataflow เพื่อโหลดข้อมูล Avro ลงใน Spanner
เปิดใช้ API
ซึ่งทำได้โดยเปิดข้อความแจ้งของ Cloud Shell หากรายการก่อนหน้าปิดอยู่
อย่าลืมเปิดใช้ API ของ Compute, Cloud Storage และ Dataflow
gcloud services enable compute.googleapis.com storage.googleapis.com dataflow.googleapis.com
เอาต์พุตคอนโซลที่คาดไว้:
$ gcloud services enable compute.googleapis.com storage.googleapis.com dataflow.googleapis.com
Operation "operations/acat.*snip*" finished successfully.
ไฟล์นำเข้าขั้นตอนบน Cloud Storage
จากนั้นสร้างที่เก็บข้อมูลเพื่อจัดเก็บไฟล์ Avro ด้วยคำสั่งต่อไปนี้
export GCS_BUCKET=spanner-codelab-import_$(date '+%Y-%m-%d_%H_%M_%S')
gcloud storage buckets create gs://$GCS_BUCKET
เอาต์พุตคอนโซลที่คาดไว้:
$ gcloud storage buckets create gs://$GCS_BUCKET
Creating gs://spanner-codelab-import/...
จากนั้นให้ดาวน์โหลดไฟล์ tar จาก github แล้วแตกข้อมูลออกมา
wget https://github.com/dtest/spanner-databoost-tutorial/releases/download/v0.1/spanner-chat-db.tar.gz
tar -xzvf spanner-chat-db.tar.gz
เอาต์พุตคอนโซลที่คาดไว้:
$ wget https://github.com/dtest/spanner-databoost-tutorial/releases/download/v0.1/spanner-chat-db.tar.gz
*snip*
*snip*(123 MB/s) - ‘spanner-chat-db.tar.gz' saved [46941709/46941709]
$
$ tar -xzvf spanner-chat-db.tar.gz
spanner-chat-db/
spanner-chat-db/users.avro-00000-of-00002
spanner-chat-db/user_notifications-manifest.json
spanner-chat-db/interests-manifest.json
spanner-chat-db/users-manifest.json
spanner-chat-db/users.avro-00001-of-00002
spanner-chat-db/topics-manifest.json
spanner-chat-db/topics.avro-00000-of-00002
spanner-chat-db/topics.avro-00001-of-00002
spanner-chat-db/user_interests-manifest.json
spanner-chat-db/spanner-export.json
spanner-chat-db/interests.avro-00000-of-00001
spanner-chat-db/user_notifications.avro-00000-of-00001
spanner-chat-db/user_interests.avro-00000-of-00001
จากนั้นอัปโหลดไฟล์ไปยังที่เก็บข้อมูลที่คุณสร้างไว้
gcloud storage cp spanner-chat-db gs://$GCS_BUCKET --recursive
เอาต์พุตคอนโซลที่คาดไว้:
$ gcloud storage cp spanner-chat-db gs://$GCS_BUCKET --recursive
Copying file://spanner-chat-db/users.avro-00000-of-00002 to gs://spanner-codelab-import/spanner-chat-db/users.avro-00000-of-00002
Copying file://spanner-chat-db/user_notifications-manifest.json to gs://spanner-codelab-import/spanner-chat-db/user_notifications-manifest.json
Copying file://spanner-chat-db/interests-manifest.json to gs://spanner-codelab-import/spanner-chat-db/interests-manifest.json
Copying file://spanner-chat-db/users-manifest.json to gs://spanner-codelab-import/spanner-chat-db/users-manifest.json
Copying file://spanner-chat-db/users.avro-00001-of-00002 to gs://spanner-codelab-import/spanner-chat-db/users.avro-00001-of-00002
Copying file://spanner-chat-db/topics-manifest.json to gs://spanner-codelab-import/spanner-chat-db/topics-manifest.json
Copying file://spanner-chat-db/topics.avro-00000-of-00002 to gs://spanner-codelab-import/spanner-chat-db/topics.avro-00000-of-00002
Copying file://spanner-chat-db/topics.avro-00001-of-00002 to gs://spanner-codelab-import/spanner-chat-db/topics.avro-00001-of-00002
Copying file://spanner-chat-db/user_interests-manifest.json to gs://spanner-codelab-import/spanner-chat-db/user_interests-manifest.json
Copying file://spanner-chat-db/spanner-export.json to gs://spanner-codelab-import/spanner-chat-db/spanner-export.json
Copying file://spanner-chat-db/interests.avro-00000-of-00001 to gs://spanner-codelab-import/spanner-chat-db/interests.avro-00000-of-00001
Copying file://spanner-chat-db/user_notifications.avro-00000-of-00001 to gs://spanner-codelab-import/spanner-chat-db/user_notifications.avro-00000-of-00001
Copying file://spanner-chat-db/user_interests.avro-00000-of-00001 to gs://spanner-codelab-import/spanner-chat-db/user_interests.avro-00000-of-00001
Completed files 13/13 | 54.6MiB/54.6MiB
Average throughput: 46.4MiB/s
นำเข้าข้อมูล
เมื่อใช้ไฟล์ใน Cloud Storage คุณสามารถเริ่มงานการนำเข้าโฟลว์ข้อมูลเพื่อโหลดข้อมูลลงใน Spanner
gcloud dataflow jobs run import_chatdb \
--gcs-location gs://dataflow-templates-us-central1/latest/GCS_Avro_to_Cloud_Spanner \
--region us-central1 \
--staging-location gs://$GCS_BUCKET/tmp \
--parameters \
instanceId=$SPANNER_INSTANCE_ID,\
databaseId=$SPANNER_DATABASE,\
inputDir=gs://$GCS_BUCKET/spanner-chat-db
เอาต์พุตคอนโซลที่คาดไว้:
$ gcloud dataflow jobs run import_chatdb \
> --gcs-location gs://dataflow-templates-us-central1/latest/GCS_Avro_to_Cloud_Spanner \
> --region us-central1 \
> --staging-location gs://$GCS_BUCKET/tmp \
> --parameters \
> instanceId=$SPANNER_INSTANCE_ID,\
> databaseId=$SPANNER_DATABASE,\
> inputDir=gs://$GCS_BUCKET/spanner-chat-db
createTime: '*snip*'
currentStateTime: '*snip*'
id: *snip*
location: us-central1
name: import_chatdb
projectId: *snip*
startTime: '*snip*'
type: JOB_TYPE_BATCH
คุณตรวจสอบสถานะของงานการนำเข้าได้ด้วยคำสั่งนี้
gcloud dataflow jobs list --filter="name=import_chatdb" --region us-central1
เอาต์พุตคอนโซลที่คาดไว้:
$ gcloud dataflow jobs list --filter="name=import_chatdb"
`--region` not set; getting jobs from all available regions. Some jobs may be missing in the event of an outage. https://cloud.google.com/dataflow/docs/concepts/regional-endpoints
JOB_ID NAME TYPE CREATION_TIME STATE REGION
*snip* import_chatdb Batch 2024-04-*snip* Done us-central1
ยืนยันข้อมูลใน Spanner
จากนั้นไปที่ Spaner Studio และตรวจสอบว่ามีข้อมูลอยู่ ก่อนอื่น ให้ขยายตารางหัวข้อเพื่อดูคอลัมน์ต่างๆ
จากนั้นเรียกใช้การค้นหาต่อไปนี้เพื่อให้แน่ใจว่าข้อมูลพร้อมใช้งาน
SELECT COUNT(*) FROM topics;
เอาต์พุตที่คาดไว้:
5. อ่านข้อมูลจาก BigQuery
เมื่อคุณมีข้อมูลใน Spanner แล้ว คุณสามารถเข้าไปดูได้จากใน BigQuery ในการดำเนินการนี้ คุณต้องตั้งค่าการเชื่อมต่อภายนอกไปยัง Spanner ใน BigQuery
หากคุณมีสิทธิ์ที่ถูกต้อง ให้สร้างการเชื่อมต่อภายนอกไปยัง Spanner ตามขั้นตอนต่อไปนี้
คลิกปุ่ม "เพิ่ม" ที่ด้านบนของคอนโซล BigQuery และเลือก "การเชื่อมต่อกับแหล่งข้อมูลถาวร" ตัวเลือก
ตอนนี้คุณเรียกใช้การค้นหาเพื่ออ่านข้อมูลจาก Spanner ได้แล้ว เรียกใช้การค้นหานี้ในคอนโซล BigQuery โดยแทนที่ค่าของ ${PROJECT_ID} ดังนี้
SELECT *
FROM (
SELECT * FROM EXTERNAL_QUERY("projects/${PROJECT_ID}/locations/us-central1/connections/codelab-demo-chat_no-databoost", "SELECT users.userUUID, SHA256(users.email) as hashed_email, COUNT(*) num_topics, m.last_posted from users HASH JOIN (select MAX(t.created) last_posted, t.userUUID FROM topics t GROUP BY 2) m USING (userUUID)HASH JOIN topics USING (userUUID) GROUP BY users.userUUID, users.email, m.last_posted")
)
ORDER BY num_topics DESC;
ตัวอย่างเอาต์พุต:
คุณสามารถดูข้อมูลเกี่ยวกับงาน เช่น ระยะเวลาที่ใช้ในการทำงานและปริมาณข้อมูลที่ผ่านการประมวลผล ได้ใน "ข้อมูลงาน"
จากนั้น คุณจะเพิ่มการเชื่อมต่อ Data Boost ใน Spanner และเปรียบเทียบผลลัพธ์
6. อ่านข้อมูลโดยใช้ Data Boost
หากต้องการใช้ Spanner Data Boost คุณต้องสร้างการเชื่อมต่อภายนอกใหม่จาก BigQuery ไปยัง Spanner คลิก "เพิ่ม" ในคอนโซล BigQuery แล้วเลือก "Connections from external data sources
" อีกครั้ง
กรอกรายละเอียดด้วย URI การเชื่อมต่อเดียวกันกับ Spanner เปลี่ยน "รหัสการเชื่อมต่อ" แล้วทำเครื่องหมายที่ "ใช้การเพิ่มอินเทอร์เน็ต"
เมื่อสร้างการเชื่อมต่อ Data Boost คุณจะสามารถเรียกใช้การค้นหาเดียวกัน แต่จะใช้ชื่อการเชื่อมต่อใหม่ แล้วแทนที่ project_id ในการค้นหา
SELECT *
FROM (
SELECT * FROM EXTERNAL_QUERY("projects/${PROJECT_ID}/locations/us-central1/connections/codelab-demo-chat_use-databoost", "SELECT users.userUUID, SHA256(users.email) as hashed_email, COUNT(*) num_topics, m.last_posted from users HASH JOIN (select MAX(t.created) last_posted, t.userUUID FROM topics t GROUP BY 2) m USING (userUUID)HASH JOIN topics USING (userUUID) GROUP BY users.userUUID, users.email, m.last_posted")
)
ORDER BY num_topics DESC;
คุณควรได้รับชุดผลลัพธ์เหมือนเดิม เวลาเปลี่ยนแปลงไปไหม
7. ทำความเข้าใจการเพิ่มข้อมูล
Spanner Data Boost ช่วยให้คุณใช้ทรัพยากรที่ไม่เกี่ยวข้องกับทรัพยากรอินสแตนซ์ Spanner ได้ การดำเนินการนี้จะลดผลกระทบที่ภาระงานเชิงวิเคราะห์มีต่อภาระงานด้านการดำเนินการเป็นหลัก
คุณจะเห็นข้อมูลนี้หากเรียกใช้การค้นหาเพื่อไม่ให้ใช้การเพิ่มข้อมูล 2-3 ครั้งนานกว่า 2 หรือ 3 นาที อย่าลืมแทนที่ ${PROJECT_ID}
SELECT *
FROM (
SELECT * FROM EXTERNAL_QUERY("projects/${PROJECT_ID}/locations/us-central1/connections/codelab-demo-chat_no-databoost", "SELECT users.userUUID, SHA256(users.email) as hashed_email, COUNT(*) num_topics, m.last_posted from users HASH JOIN (select MAX(t.created) last_posted, t.userUUID FROM topics t GROUP BY 2) m USING (userUUID)HASH JOIN topics USING (userUUID) GROUP BY users.userUUID, users.email, m.last_posted")
)
ORDER BY num_topics DESC;
จากนั้นรออีก 2-3 นาที แล้วเรียกใช้การค้นหาเพื่อใช้ Data Boost อีกสัก 2-3 ครั้ง อย่าลืมแทนที่ ${PROJECT_ID}
SELECT *
FROM (
SELECT * FROM EXTERNAL_QUERY("projects/${PROJECT_ID}/locations/us-central1/connections/codelab-demo-chat_use-databoost", "SELECT users.userUUID, SHA256(users.email) as hashed_email, COUNT(*) num_topics, m.last_posted from users HASH JOIN (select MAX(t.created) last_posted, t.userUUID FROM topics t GROUP BY 2) m USING (userUUID)HASH JOIN topics USING (userUUID) GROUP BY users.userUUID, users.email, m.last_posted")
)
ORDER BY num_topics DESC;
กลับไปที่ Ssparker Studio ใน Cloud Console แล้วไปที่ System Insights
คุณจะเห็นเมตริก CPU ที่นี่ การค้นหาที่ทำงานโดยไม่มีการเพิ่มข้อมูลกำลังใช้ CPU สำหรับ "exeเสร็จสิ้นsql_select_withpartitiontoken" การดำเนินงาน แม้ว่าการค้นหาจะเหมือนกัน แต่การเรียกใช้ Data Boost จะไม่แสดงในการใช้งาน CPU ของอินสแตนซ์
ในหลายๆ กรณี ประสิทธิภาพของการค้นหาเพื่อการวิเคราะห์จะดีขึ้นเมื่อใช้ Data Boost ชุดข้อมูลในบทแนะนำนี้มีขนาดเล็กและไม่มีภาระงานอื่นๆ แข่งขันกันเพื่อชิงทรัพยากร ดังนั้น บทแนะนำนี้จึงไม่คิดว่าจะแสดงการปรับปรุงประสิทธิภาพ
ลองใช้คำค้นหาและภาระงาน แล้วดูวิธีการทํางานของ Data Boost ได้ทุกเมื่อ เมื่อเสร็จแล้วให้ดำเนินการต่อในส่วนถัดไปเพื่อทำความสะอาดสภาพแวดล้อม
8. ล้างสภาพแวดล้อม
หากคุณสร้างโปรเจ็กต์สำหรับ Codelab นี้โดยเฉพาะ คุณก็เพียงลบโปรเจ็กต์เพื่อล้างโปรเจ็กต์ได้ หากต้องการเก็บโปรเจ็กต์ไว้และล้างคอมโพเนนต์แต่ละรายการ แล้วทำตามขั้นตอนต่อไปนี้
นำการเชื่อมต่อ BigQuery ออก
หากต้องการนำการเชื่อมต่อทั้งสองออก ให้คลิกที่จุด 3 จุดถัดจากชื่อการเชื่อมต่อ เลือก "ลบ" จากนั้นทำตามวิธีการเพื่อลบการเชื่อมต่อ
ลบที่เก็บข้อมูล Cloud Storage
gcloud storage rm --recursive gs://$GCS_BUCKET
ลบอินสแตนซ์ Spanner
หากต้องการล้างข้อมูล เพียงไปที่ส่วน Cloud Spanner ของ Cloud Console แล้วลบ "codelab-demo
" ที่เราสร้างไว้ใน Codelab
9. ขอแสดงความยินดี
ขอแสดงความยินดีที่เรียน Codelab จนจบ
สรุปประเด็นที่ได้พูดถึง
- วิธีทำให้อินสแตนซ์ Spanner ใช้งานได้
- วิธีโหลดข้อมูลลงใน Spanner โดยใช้ Dataflow
- วิธีเข้าถึงข้อมูล Spanner จาก BigQuery
- วิธีใช้ Spanner Data Boost เพื่อหลีกเลี่ยงไม่ให้เกิดผลกระทบต่ออินสแตนซ์ Spanner สำหรับการค้นหาเชิงวิเคราะห์จาก BigQuery
10. แบบสำรวจ
เอาต์พุต: