ESP32 telemetry to Google Cloud
สารบัญ
- เกริ่น…
- ภาพรวม
- สิ่งที่ต้องมีในการทำโปรเจคนี้
- สมัครสมาชิกและสร้างโปรเจคใหม่
- Pub/Sub
- IoT Core
- สร้าง Private และ Public key
- สร้าง Device
- Clone Arduino Project
- ใส่ private key และ root cert ลงใน code ฝั่ง Arduino
- ตั้งค่าต่างๆในไฟล์ “ciotc_config.h”
- ทดลองส่งค่าจาก device
- BigQuery
- Dataflow
- ตรวจสอบข้อมูลใน Bigquery
- DataStudio
- สรุปสักหน่อย
เกริ่น…
การเพิ่มขึ้นของอุปกรณ์จำนวนมากที่สามารถเชื่อมต่อกับ internet ส่งผลให้มีข้อมูลจำนวนมหาศาลของสิ่งแวดล้อมรอบอุปกรณ์เหล่านั้น เป็นที่มาของแนวคิดเรื่อง Internet of Things และ Big Data ในปัจจุบัน ข้อมูลจำนวนมากสามารถนำมาทำให้เป็นประโยชน์ได้โดยการหารูปแบบที่สามารถบ่งบอกพฤติกรรม หรือทำนายแนวโน้มที่จะเกิดขึ้นในอนาคตอันใกล้ได้
ข้อมูลที่ส่งมาจากอุปกรณ์เหล่านี้จะต้องถูกส่งมาเก็บและประมวลผลที่ server ซึ่งการจะสร้าง server ของตัวเองหรือที่เราเรียกว่า On-premise จะต้องเสียเวลาในการติดตั้ง บำรุงรักษา hardware และยังต้องมีค่าใช้จ่ายในการจ้างคนมาดูแลอีกด้วย ในปัจจุบันจึงมี Cloud Provider หลายที่ให้บริการในการเช่า server ผู้ใช้มีหน้าที่เพียงแค่เข้าไปใช้ และจ่ายเงินเท่าจำนวนที่ใช้ไปเท่านั้น และหากธุรกิจมีการเติบโตขึ้น ผู้ใช้ก็สามารถเพิ่ม resource ได้ทันที การใช้งานดังกล่าวจึงเป็นที่มาของคำว่า “Serverless” ซึ่งเปรียบเหมือนไม่มี server นั่นเอง
Google Cloud Platform เป็นบริการ Cloud Provider ที่ให้บริการในหลายรูปแบบ ตั้งแต่การรับค่าจาก device การสร้าง pipeline การเก็บข้อมูลขนาดใหญ่ไปจนถึงการทำ Machine learning บน cloud ด้วยบริการมากมายทำให้เราเลือก Google มาใช้ในการทดลองนี้ครับ
การใช้บริการ Cloud Provider ยังมีประโยชน์ในการ prototype product เพราะผู้ใช้ไม่ต้องลงรายละเอียดกับส่วนที่เป็น backend มากนักก็สามารถทำให้เห็นภาพรวมของ product ตั้งแต่ต้นจนจบกระบวนการได้ แล้วนำเวลาที่เหลือไปใช้ในการแก้ไขปัญหาด้านธุรกิจแทน
ในบทความนี้เราจะทดลองใช้ $300 ที่ได้จากการสมัคร Google Cloud Platform account มาทดลองส่งข้อมูลจาก device ขึ้น Cloud แล้วแสดงผลข้อมูลเหล่านั้นออกมาเป็น dashboard
ถ้าพร้อมแล้วเรามาเริ่มต้นกันเลย!
ภาพรวม
เราใช้ ESP32 เป็น device ในการส่งค่าอุณหภูมิที่ได้จากการสุ่มตัวเลข ค่าจะถูกส่งขึ้น Google Cloud Platform โดยใช้ API บน cloud ดังต่อไปนี้ Pub/Sub, IoT Core, Dataflow และ BigQuery จากนั้นข้อมูลจะถูกดึงไปแสดงผลเป็น dashboard บน DataStudio
สิ่งที่ต้องมีในการทำโปรเจคนี้
- บอร์ด ESP32
- โปรแกรม Arduino IDE ถ้าไม่มีสามารถdownload ได้จาก link
- สาย USB สำหรับการต่อ ESP32 เข้ากับคอมเพื่อ upload โปรแกรม
- Google Cloud Platform account
สมัครสมาชิกและสร้างโปรเจคใหม่
เริ่มต้นให้สมัครการใช้งาน Google Cloud Platform ก่อน สำหรับผู้ใช้ใหม่จะได้รับ credit จำนวน $300 สามารถใช้ได้ภายในเวลา 1 ปี หลังจากนั้นจะต้องจ่ายเงินผ่านบัตรเครดิตที่ผูกไว้
เมื่อเรามี account แล้วให้เราสร้างโปรเจค โดยคลิกที่ปุ่มที่อยู่หลังคำว่า Google Cloud Platform
จะมีหน้าต่างใหม่ปรากฎขึ้นมาให้กดปุ่ม “NEW PROJECT” ทางด้นขวาบนของหน้าต่าง ใส่ชื่อ Project แล้วกดปุ่ม “CREATE”
Pub/Sub
Cloud Pub/Sub จะทำหน้าที่รับ message ที่ถูก device ส่งขึ้นมาบน cloud (Publisher) เพื่อรอการดึง message เหล่านั้นไปใช้ต่อไป (Subscriber) ทั้งสองส่วนนี้จะทำงานแยกจากกันจึงทำให่มีความปลอดภัย และพร้อมใช้งานเสมอ
เราสามารถหา Pub/Sub ได้ง่ายๆจากแถบ search ด้านบน เมื่อเราเข้าไปที่ Pub/Sub แล้วให้ทำการสร้าง Topic และ Subscription ดังนี้
- ทำการสร้าง Topic ก่อน โดยไปที่ Pub/Sub แล้วเลือก “CREATE TOPIC”
- จากนั้นให้เพิ่ม “+ New subscription” ดังรูป
3. ใส่ Subscription name
4. กดปุ่ม CREATE
Topic จะทำหน้าที่เป็นเหมือนถังข้อมูลที่ IOT device จะส่งค่าขึ้นมาเก็บไว้ เพื่อรอให้มี Subscriber ดึงข้อมูลออกจากถังไปใช้นั่นเอง
IoT Core
ต่อมาให้เข้ามาที่ Cloud IoT Core (สามารถ search หาได้จากแถบค้นหาด้านบนเช่นเคย) ให้ทำการสร้าง registry ซึ่งจะเป็นตัวบ่งบอกว่า device จะส่งค่าขึ้นมาใน Topic ไหน
ขั้นตอนการสร้าง registry มีดังต่อไปนี้
- ไปที่ IoT Core เลือก “CREATE REGISTRY”
- ใส่ Registry ID
- เลือก Default telemetry topic และ Device state topic เป็น Topic ที่เราสร้างไว้ในขั้นตอน Pub/Sub
- กดปุ่ม CREATE
กลับไปที่หน้า IoT Core เราจะเห็น registry ID ที่พึ่งสร้างขึ้นมา ในแต่ละ registry จะสามารถเพิ่มอุปกรณ์ (Device) ที่ใช้ส่งข้อมูลได้ การที่เราเพิ่ม device ใน registry ก็คือการ link ให้ device นั้นส่งข้อมูลเข้า Topic ที่กำหนดไว้ใน registry นั่นเอง
แต่ตอนนี้ให้เราข้ามขั้นตอนการสร้าง Device ไปก่อนเนื่องจากเรายังไม่ได้สร้าง private/public key
สร้าง Private และ Public key
ในขั้นตอนการสร้าง device นั้นจำเป็นต้องระบุ private key, public key ด้วย เพื่อความปลอดภัยในการส่งข้อมูล เราสามารถสร้าง key ได้โดยพิมพ์คำสั่งดังนี้ลงใน terminal ของ Google Cloud
- สร้างไฟล์ iot-sample-device-ec_private.pem
openssl ecparam -genkey -name prime256v1 -noout -out iot-sample-device-ec_private.pem
2. สร้างไฟล์ iot-sample-device-ec_public.pem โดยให้สัมพันธ์กับ private key ที่สร้างไว้
openssl ec -in iot-sample-device-ec_private.pem -pubout -out iot-sample-device-ec_public.pem
ตอนนี้ directory บน cloud จะมี file iot-sample-device-ec_private.pem และ iot-sample-device-ec_public.pem เพิ่มขึ้นมา
สร้าง Device
- เข้าไปที่ IOT Core
- ตรงแท็บซ้ายมือ เลือก Devices
- จะมีปุ่ม + CREATE A DEVICE ให้กดปุ่มนี้
- ตรง public key format เลือก ES256
- ด้านล่างจะมี text box ให้ใส่ public key ที่ได้จากขั้นตอนที่แล้วลงไป ให้เข้าไปเอา public key มาก่อนด้วยการกลับไปที่ cloud terminal แล้วพิมพ์คำสั่ง
cat device0002-ec_public.pem
จะได้ public key ออกมาดังรูปด้านบน ให้ copy ตั้งแต่ — — -BEGIN CERTIFICATE — — — จนถึง — — -END CERTIFICATE — — — มาใส่ใน text box ดังรูป
6. กดปุ่ม Create ที่ด้านล่างสุดของหน้าจอ
Clone Arduino Project
เข้าไปที่ link ด้านล่างแล้วทำการ clone โปรเจคลงมาบนเครื่องของเรา
โปรเจคนี้เป็นตัวอย่างการใช้บอร์ด เช่น ESP8266, ESP32 ในการเชื่อมต่อกับ Google cloud IoT ของ Google ในเวอร์ชันนี้ผมได้แก้ไขให้มีการส่งค่า timestamp เข้าไปด้วย เพื่อให้สามารถเช็คเวลาที่ข้อมูลเข้ามาใน Pub/Sub ได้ง่ายขึ้น นอกจากนี้ยังเปลี่ยนให้โปรแกรมทำการสุ่มค่า temperature แทนการต่อกับเซนเซอร์จริงๆ เพื่อความสะดวกในการทดลองแสดงผลบน dashboard
เมื่อ download เสร็จจะพบไฟล์ทั้งหมด 3 ไฟล์ คือ ciotc_config.h, esp32-mqtt.h และ googleIOT.ino
ใส่ private key และ root cert ลงใน code ฝั่ง Arduino
ในโค้ดฝั่ง Aduino เราต้องระบุ Private key กับ Root cert ซึ่งมีวิธีการสร้างทั้ง 2 ตัวนี้จาก terminal บน Google Cloud ดังต่อไปนี้
Private key
- เข้ามาที่ terminal บน Cloud พิมพ์คำสั่งด้านล่างเพื่อให้แสดง private key ที่สร้างไว้แล้วออกมา (อันนี้ผมเข้าใจว่าคำสั่งจะแปลง key เป็นเลขฐาน 16 ให้ เพราะใช้ cat จะได้ key ออกมาเป็นตัวอักษรครับ)
openssl ec -in iot-sample-device-ec_private.pem -noout -text
2. ให้ copy private key ที่อยู่ตรง <priv key> (หรือดูในรูปด้านล่าง ให้ copy ที่อยู่ในกรอบสีแดงครับ)
read EC key
Private-Key: (256 bit)
priv:
<priv key>
pub:
<pub key>
ASN1 OID: prime256v1
NIST CURVE: P-256
3. เปิด Arduino IDE เปิดไฟล์ googleIOT แล้วเลือกไปที่แท็บ “ciotc_config.h”
4. paste private key ลงในตัวแปรตามรูปด้านล่าง
Root cert
ขอ root_cert โดยพิมพ์คำสั่งนี้ลงใน terminal ของ Google Cloud
openssl s_client -showcerts -connect mqtt.googleapis.com:8883
ให้ copy ข้อความตั้งแต่ — — -BEGIN CERTIFICATE — — — จนถึง — — -END CERTIFICATE — — -มาไว้ใน text editor ก่อน
จากนั้นให้เพิ่มเครื่องหมาย “ ในตอนต้นของแต่ละบรรทัด และเพิ่ม \n“ ตอนจบบรรทัด จะได้ข้อความประมาณนี้
“ — — -BEGIN CERTIFICATE — — -\n”
“MIIEXDCCA0SgAwIBAgINAeOpMBz8cgY4P5pTHTANBgkqhkiG9w0BAQsFADBMMSAw\n”
“HgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFs\n”
“7a8IVk6wuy6pm+T7HT4LY8ibS5FEZlfAFLSW8NwsVz9SBK2Vqn1N0PIMn5xA6NZV\n”
“c7o835DLAFshEWfC7TIe3g==\n”
“ — — -END CERTIFICATE — — -\n”;
เมื่อแก้ไขเสร็จแล้วให้ copy มา paste ไว้ใน Arduino IDE ในไฟล์ “ciotc_config.h” ตรงตัวแปรดังรูป
***ในกรณีที่เป็นการสร้าง device เพิ่ม ให้ทำการสร้าง private และ public key ใหม่และนำไปใส่ใน code และ text box ตามลำดับ จากนั้นให้แก้ชื่อ device ในไฟล์ “ciotc_config.h” เป็นชื่อใหม่ด้วย เช่น
const char *device_id = “device0002”;
ตั้งค่าต่างๆในไฟล์ “ciotc_config.h”
ไฟล์ “ciotc_config.h” เป็นไฟล์ header สำหรับตั้งค่าต่างๆที่จำเป็นในการส่งค่าขึ้น Google Cloud วิธีการตั้งค่ามีขั้นตอนดังต่อไปนี้
1. เปิดไฟล์ googleIOT.ino บน Arduino IDE โปรแกรมจะเปิดแท็บขึ้นมา 3 แท็บ ให้ไปที่ “ ciotc_config.h”
2. ในไฟล์ header นี้ เราจะต้องเซ็ตค่าต่างๆให้กับอุปกรณ์ของเรา โดยเริ่มต้นจาก
2.1 รายละเอียดของ WiFi ที่เราต้องการให้อุปกรณ์ของเราเชื่อมต่อ ตรงนี้ให้ใส่ SSID (ชื่อ WiFi) และ password ลงไป
// Wifi newtork details.const char *ssid = “SSID”;const char *password = “PASSWORD”;
2.2 ส่วนนี้จะเป็นค่าที่ใช้ติดต่อกับ Google Cloud
// Cloud iot details.const char *project_id = “*****”;const char *location = “*****”;const char *registry_id = “*****”;const char *device_id = “*****”;
ให้เราดูค่าเหล่านี้จาก Google Cloud โดยเริ่มต้นจาก project-id ดูได้จากหน้า home ของ Google Cloud
จากนั้นไปที่ IOT Core ในหน้าต่างด้านซ้ายมือเลือกแท็บ Registry details จะ
ปรากฎหน้าต่างดังรูปด้านล่าง ในกรอบสีแดงคือ location
ไปที่ IoT Core จะเห็น Registry ID ในกรอบสีแดงตามรูปด้านล่าง
ไปที่แท็บ Devices จะเห็นหน้าต่างด้านล่าง ให้นำ Device ID ในกรอบสีแดงไปใส่ในตัวแปร device_id บน Arduino IDE
ทดลองส่งค่าจาก device
ให้ Upload โค้ดลงบอร์ด ESP32 จากนั้นให้เปิด Serial monitor เพื่อดูว่ามีการส่งค่าเกิดขึ้นหรือไม่
ค่าที่ส่งจะอยู่ในรูปแบบของ JSON คือ มี name และ value ดังนี้
device_id มีค่าเป็น STRING
temperature มีค่าเป็น FLOAT
timestamp มีค่าเป็น STRING
minutes มีค่าเป็น INTEGER
Serial monitor จะ print ค่าเหล่านี้ออกมา (ค่าจะถูกส่งทุกๆนาที ถ้าเปิดมาแล้วไม่เห็นให้รอสักพักนะครับ)
เมื่อเราเห็น JSON แสดงบน Serial Monitor แล้วแสดงว่าการส่งจาก microcontroller ประสบความสำเร็จ ต่อไปให้กลับไปดูที่ Google Cloud Platform ว่ารับค่าที่เราส่งไปหรือไม่ ดังนี้
- เปิด terminal ใน Google Cloud
- พิมพ์คำสั่งนี้เพื่อดึงค่าออกจาก subscription โดยแทน [subscription name] ด้วยชื่อ subscription ที่ตั้งไว้
gcloud pubsub subscriptions pull [subscription name]— auto-ack — limit=10
3. ถ้าสำเร็จ เราจะเห็นตารางดังรูปด้านล่าง
**บางครั้งมีค่าที่เคยส่งไว้ค้างอยู่ใน Topic ซึ่งยังไม่ได้ถูก pull ออกมา เราสามารถล้างข้อมูลที่ค้างอยู่ได้ด้วยคำสั่ง
gcloud alpha pubsub subscriptions seek iot-sample-sub — time=YYYY–MM–DDT
โดยให้ใส่ ปี/เดือน/วัน ที่ข้อมูลถูกเก็บไว้บน Topic ตรง YYYY-MM-DD เช่น 2019–06–12 ก็จะล้างข้อมูลตั้งแต่ก่อนจนถึงวันที่ 12 มิถุนายน 2019 ออกไป ตัวอย่างการใช้คำสั่งนี้ เช่น
gcloud alpha pubsub subscriptions seek iot-sample-sub — time=2019–06–12T
BigQuery
เป้าหมายของเราคือการนำ message ที่ถูกส่งมาจาก device มาเก็บไว้ในรูปแบบของตาราง พร้อมที่จะนำไปวิเคราะห์หรือแสดงผลเป็น Dashboard ต่อไป เราเริ่มจากสร้างตารางใน BigQuery เพื่อเตรียมรับข้อมูลตามขั้นตอนต่อไปนี้
1. สร้าง Dataset ใน project ของเรา
- ไปที่ BigQuery
- ในหน้าต่างด้านซ้ายมือใต้แท็บ Resources เลือก project id
- กดปุ่มรูปแฟ้มที่เขียนว่า “CREATE DATASET” ทางด้านขวาล่างของจอ
- ใส่ Dataset ID แล้วกดปุ่ม Create Dataset
2. สร้าง table ใน Dataset
- ในหน้าต่างด้านซ้ายมือใต้แท็บ Resources ใน project id กดที่ชื่อ Dataset ที่พึ่งสร้าง
- กดปุ่ม “+ CREATE TABLE” ทางด้านขวาล่างของจอ
- ใส่ Table name
- เพิ่ม Schema โดยกดปุ่ม Add field ดังรูปด้านล่าง
5. คลิกปุ่ม Create table เราจะเห็น table ที่เราพึ่งสร้างใหม่อยู่ใน Dataset
ในขั้นตอนนำไปใช้เราจะต้องระบุ path ไปสู่ table เราสามารถทำได้โดยคลิกไปที่ชื่อ table จะมีรายละเอียดของ table ขึ้นมาในหน้าต่างด้านขวา เลือกแท็บ detail แล้ว copy “Table id” ซึ่งอยู่ในรูปแบบดังนี้เก็บไว้
<project>:<dataset>.<table_name>
ตัวอย่างดังรูปด้านล่าง
Dataflow
ขณะนี้เรามี message มากมายรออยู่ใน Topic และก็มีจุดหมายปลายทางคือ table ใน BigQuery แล้ว ขั้นต่อไปจึงเป็นการสร้าง pipeline ซึ่งเปรียบเสมือนท่อให้ข้อมูลไหลจากต้นทางไปปลายทางได้
Dataflow เป็นบริการหนึ่งของ Google Cloud ที่ทำหน้าที่สร้าง pipeline เพื่อตอบโจทย์งานดังกล่าว เราสามารถออกแบบ pipeline ได้เองตามที่ต้องการโดยใช้ Apache Beam หรือ จะใช้ template ที่มีอยู่แล้วก็ได้ ในที่นี้เราจะใช้ template เพื่อความสะดวกและรวดเร็ว ขั้นตอนมีดังต่อไปนี้ครับ
- ไปที่หน้า Pub/Sub
- เลือก Topic ที่เราต้องการจะนำข้อมูลมาใส่ pipeline
- ขณะนี้เราจะอยู่ที่หน้า Topic details ให้คลิกที่ปุ่ม “Export to”
- เลือก BigQuery
5. จะมีหน้าต่างใหม่ปรากฎขึ้นมา ให้เราใส่ค่าในส่วนของ Required Parameters ดังนี้
- Regional endpoint: ให้ใส่ region เดียวกับ register
- BigQuery output table: ให้ใส่ path ชี้ไปที่ table ใน BigQuery (อันที่ในขั้นตอน BigQuery ให้ copy ไว้) ซึ่งจะอยู่ในรูปแบบของ
<project>:<dataset>.<table_name> - Temporary location: gs://<bucket name>/tmp
*ถ้ายังไม่ได้สร้าง bucket ให้ไปที่ Storage แล้วเลือก “CREATE BUCKET” - เราสามารถกดที่ Optional parameters เพื่อขยายไปตั้งพารามิเตอร์ตัวอื่นๆ เช่น Machine type ที่เราสามารถใส่ “n1-standard-1” เพื่อประหยัด credit ของเรา เพราะ default ของ template จะเป็นแบบ 4 CPU
6. คลิก Run job จะมีหน้าต่างที่แสดง pipeline ขึ้นมาดังรูป
ข้อมูลจะถูก pull ออกจาก Pub/Sub และไหลไปตามบล็อคดังรูปด้านบน บล็อคไหนที่มีการประมวลผลในบล็อคนั้นจะแสดงค่า จำนวนข้อมูลต่อวินาที (element/s) และเวลา (s) เรามีวิธีสังเกตว่าข้อมูลถูกบันทึกลง BigQuery หรือยังตามขั้นตอนดังต่อไปนี้
- สังเกตที่บล็อค “WriteSuccessfulRecords” ถ้าสามารถบันทึกข้อมูลลงใน BigQuery ได้จะมีเวลาแสดงขึ้นมา (ในบล็อคขึ้นว่า 2 sec) หรือ เราจะกดที่บล็อคเข้าไปดูรายละเอียดตรง Element added ในหน้าต่างด้านขวาก็ได้ (จะเห็นว่ามี 8 element ถูกเพิ่มเข้ามา)
ถ้าไม่สามารถบันทึกข้อมูลลง BigQuery ได้ข้อมูลเหล่านั้นจะไหลไปรวมกันที่ “WriteFailedRecords” หรือ “WriteFailedRecords2” แทน ให้กลับไปที่ BigQuery เราจะเห็น table ใหม่ที่ pipeline สร้างให้ชื่อ
“<table name>_error_records”
ให้เข้าไปดูจะมีบอกรายละเอียดของ error โดยส่วนมากแล้วอาจเป็นที่เรากำหนดประเภทของข้อมูลใน Schema ผิด เช่นข้อมูลเป็น INTEGER แต่เรากำหนดเป็น STRING หรือ ข้อมูลที่ส่งมาไม่ได้อยู่ในรูป JSON เช่น ลืมปิดค่าด้วยเครื่องหมาย “
ตรวจสอบข้อมูลใน Bigquery
หลังจาก Run job ใน Dataflow ให้รอประมาณ 2 นาที แล้วไปที่ BigQuery แล้วไปที่ table ที่สร้างไว้บันทึกข้อมูล ข้อมูลที่ถูกส่งมาจะถูกเก็บไว้ใน Streaming buffer ก่อนซึ่งเราสามารถตรวจดูได้จาก Streaming buffer statistics ดังรูปด้านล่าง
เราจะเห็นว่ามีค่าถูกส่งมาใน BigQuery แล้ว 8 แถว หลังจากนั้นจะใช้เวลาอีกสักพักเพื่อบันทึกค่าเหล่านี้ลงใน table ให้เราลอง query ข้อมูลโดยกดที่ปุ่มรูปแว่นขยายที่เขียนว่า Query table ที่อยู่ด้านขวาล่างของจอ จากนั้นใส่ Query ที่ต้องการ จากนั้นกด Run จะได้ผลดังรูปด้านล่าง
DataStudio
ในขั้นตอนนี้เราจะนำข้อมูลจาก BigQuery มาแสดงเป็น dashboard ด้วย DataStudio ในตัวอย่างนี้ผมเปิด device ให้ส่งข้อมูลไม่ถึงชั่วโมง ดังนั้นผมจึงใช้แกน x เป็นนาทีแทนนะครับ ในงานจริงเราอาจเลือกเป็น timestamp ซึ่งอยู่ในรูปแบบของ YYYY-MM-DD แทนครับ
*DataStudio ของผมเป็นภาษาไทยนะครับ ผมเปลี่ยนภาษาไม่เป็น 555
ขั้นตอนการใช้ DataStudio มีดังต่อไปนี้
- เข้าไปที่ DataStudio (ไม่สามารถเข้าจาก Google Cloud ได้ เพราะเป็นโมดูลที่แยกออกมาต่างหากครับ)
- กดที่เครื่องหมาย + เพื่อเริ่มโปรเจคใหม่
- ที่มุมขวาล่างเลือก “สร้างแหล่งข้อมูลใหม่”
- เราจะเข้ามาอยู่ในหน้าต่างการเชื่อมต่อกับแหล่งข้อมูล ให้เลือก BigQuery
- เลือก โครงการ > ชุดข้อมูล > ตาราง ที่เราต้องการเชื่อมต่อ (ภาษาอังกฤษ คือ project > dataset > table นั่นแหละครับ)
- กด “เชื่อมต่อ” ที่มุมขวาบน
- เราจะเห็นหน้าสรุปดังนี้ครับ
8. ให้เราแก้ minutes จากตัวเลขเป็น “วันที่และเวลา” แล้วเลือก “นาที (นน)”
9. กด “เพิ่มในรายงาน”
10. ในเมนูบาร์ด้านบนเลือก “เพิ่มแผนภูมิ” และเลือก “อนุกรมเวลา”
11. ตั้งค่าดังนี้
12. จะได้กราฟดังรูป
ใน DataStudio มีกราฟหลากหลายแบบให้ลองเล่นกันดูครับ เราอาจจะเพิ่มตารางไว้ด้านข้างใช้ดูข้อมูลด้วยก็ได้ เช่น
สรุปสักหน่อย
การใช้บริการ Google Cloud Platform ทำให้สามารถลดงานที่ต้องทำในฝั่ง server ไปได้เยอะทีเดียว เหมาะสำหรับผู้ใช้ที่ต้องการสร้าง prototype ของ product อย่างรวดเร็ว เพื่อนำไปทดสอบการใช้งาน จะได้ทุ่มเทเวลาไปกับการแก้ไขปัญหาในเชิงธุรกิจครับ ในส่วนของค่าใช้จ่าย หากผู้ใช้สามารถสรุปได้แล้วว่าระบบต้องใช้อะไรบ้าง ผู้ใช้สามารถกดเครื่องคิดเลขของ Google เพื่อประมาณค่าใช้จ่ายที่ต้องเสียได้เลย จะได้วางแผนโปรเจคนี้ได้อย่างรัดกุมมากขึ้นครับ ตามลิงก์นี้ครับ
จากที่เคยลองรันระบบดู ตัวที่คิดว่าทำให้เสียเงินมากที่สุด คือ ส่วนของ Dataflow ที่สร้าง pipeline เพราะมันจะสร้าง compute engine ขึ้นมา เราสามารถปรับขนาด CPU, ram และ storage ได้ตามต้องการ อีกทั้งยังสามารถตั้งให้ทำงานตามเวลาได้อีกด้วย (อันนี้ไม่เคยทำ แต่อ่านเจอมา) นั่นก็แสดงว่าการออกแบบระบบที่ดีจะช่วยให้สามารถประหยัดเงินได้อีกครับ
สุดท้ายนี้ถ้ามีอะไรผิดพลาดก็ขออภัยด้วยนะครับ ขอให้ทุกคนสนุกกับการทดลองนะครับ