back to top
Saturday, May 17, 2025

Bigquery workflow ไม่ต้องไปทำ data pipeline บน service อื่นอีกต่อไป

Share

ไม่ต้องไปทำ data pipeline บน service อื่นอีกต่อไปในเมื่อ Bigquery มีให้พร้อมแล้วbigquery workflow

เมื่อ Bigquery ได้เพิ่ม feature อย่าง workflow เข้ามาทำให้เราสามารถสร้าง data pipeline ได้แล้วบน Bigquery

ซึ่ง workflows นี้ได้ถูกพัฒนาโดยมีพื้นฐานจาก Dataform เป็น service หนึ่งที่ได้เปิดให้ใช้งานกันตั้งแต่ปี 2023 และ workflows นี้สามารถใช้งานได้ทั้ง Python notebook และ SQL รวมไปถึงเราสามารถตั้งเวลาในการทำงานของ workflows นี้ได้ด้วย

มาดู Key feature หลักๆกันว่ามีอะไรน่าสนใจบ้าง

  • Visual interface มีภาพแสดงให้เห็นถึงไหลของข้อมูล
  • Built-in Schedule สามารถตั้งเวลาการทำงานได้
  • Centralize monitoring รวบรวมหน้า log ต่างๆของแต่ละขั้นตอนมาอยู่ในที่เดียวกัน
  • Flexibility สามารถใช้ได้ทั้ง Python notebook หรือจะเป็น SQL
  • Codst-Effective ตัว workflows นั้นคิดราคาเท่ากับการ query ปรกติไม่ได้มีการคิดเงินเพิ่มแต่อย่างไร

Simplified Orchestration

Bigquery ได้พัฒนา service นี้มาเพื่อจะได้ตัดปัญหาเรื่องการตั้ง schedule ต่างๆทั้ง Query schedule หรือ notebook schedule และรวมให้มาอยู่ใน feature เดียวกัน

สำหรับงานที่ต้องมีการใช้งาน Orchestration ในงาน data เราอาจจะนึกถึง Tool อย่างเช่น Airflow, Dagster etc.. แต่ถ้าเรามีการใช้งานที่เกี่ยวข้องกับ Bigquery ตัว Bigquery workflow ก็เหมาะสมเลย เราสามารถใช้ได้ทั้ง Python notebook และ SQL พอเราสามารถ Python notebook ได้ก็เท่ากับว่าเราสามารถเขียน script ในการ Ingest ข้อมูลได้มากขึ้นไม่ว่าจะมาจาก Database ไหน หรือจะเป็น API ก็ตาม

มาทดลองใช้ Bigquery workflow กันในหัวข้อถัดไป

Bigquery workflow example usecase

มาลองใช้งานดูว่าการทำงาน Bigquery workflow เป็นยังไงบ้างโดยมาเริ่มจากการวางแผนว่าเราอยากจะทำอะไร เขียนเป็น Diagram ขึ้นมา

สิ่งที่เราจะทำคือการใช้ Python ไปอ่านไฟล์ csv ที่ Google cloud storage และเก็บไว้ที่ staging ก่อน หลังจากนั้นค่อยทำการ clean หรือ transform ข้อมูลที่อยู่ใน staging เพื่อนำไปเก็บที่ Curated table สุดท้าายจบด้วยการลบข้อมูลที่ staging ออกทั้งเพื่อความประหยัดเนื้อที่และรอการของข้อมูลในรอบ schedule ถัดไป

มาเริ่มเขียนทีละตัวกัน หลังจากเข้าไปที่หน้า Bigquery studio จะเห็นหน้า Home(🏠) ตรง create new จะมีปุ่มตัวเลือกให้เราเลือก workflow ให้กดเข้าไปได้เลย

เราก็จะได้หน้า canvas เปล่าและสิ่งที่ workflow จะถามอันดับแรกคือ service account เพื่อที่จะเป็นตัวที่ไว้ใช้ในการทำงานนี้จึงทำให้เราต้องมอบสิทธิ์ต่างๆที่เป็นให้เรียบร้อยก่อนด้วย เช่น สิทธิ์การเข้าถึง Google storage หรือ Service อื่นๆอีกด้วย

เราก็จะมา Add task แรกกัน จะเป็นการใช้งาน Python notebook bigquery workflow

ถ้าได้เคยใช้ Google colab มาบ้างแล้วน่าจะคุ้นเคยกัน ผมก็มาเขียน Python code โดยเป็นการไปอ่านข้อมูลจาก Google cloud storage แล้วก็จะนำมาเก็บที่ Bigquery เป็น staging table

ข้อมูลที่เห็นเป็นข้อมูลปลอมจาก mockdata

ต่อมาเราก็จะทำการเพิ่ม task SQL กันเพื่อดำเนินการ สร้าง table และย้ายข้อมูลไปที่ curated table เป็น table ที่เราจะนำไปใช้งาน และสุดท้ายจะเป็น task ที่จะลบข้อมูลที่ staging ทั้งหมดจะได้หมดปัญหาเรื่องค่าจัดเก็บข้อมูลด้วย

พอเราได้ทำการสร้าง task SQL แล้วต่อมาเราก็จะเริ่มทำการบอก task ว่า dependency คือ task ไหนเพื่อที่จะให้ task นั้นๆรู้ว่าควรทำงานหลังจาก task ไหนเสร็จแล้วบ้าง โดยไปที่หน้า canvas เวลาที่เราคลิกไปที่ task ใด task หนึ่ง ในฝั่งด้านขวามือเราจะช่องให้เลือก Run after อยู่ซึ่งก็หมายถึงว่า task ที่เลือกควรทำงานหลัง task ไหน

หลังจากเราก็ทำการเพิ่ม task ต่างๆเข้าไปให้ครบตามที่ต้องการ

ก็จะได้ประมาณนี้เมื่อเราได้ทำการทดสอบแล้วว่าสามารถทำงานได้โดย กดไปที่ RUN เพื่อให้ pipeline ได้ทำงาน 

อีกทั้งเราสามารถตั้งค่า schedule ได้เพื่อตั้งเวลาการทำงาน อาจจะเป็นแบบ ให้ทำงานทุกวันเวลาเที่ยงคืนก็ทำได้

เป็นอันเรียบร้อยทีนี้เราก็จะได้ pipeline ในการควบคุมการทำงาน task ต่างๆใน Bigqueryแล้ว ไม่ต้องไปเขียนโค้ดที่อื่นอีกเลย

Key takeaway

บทสรุปการใช้งาน Bigquery workflow

  • ทำให้การสร้าง pipeline เป็นเรื่องง่ายขึ้นไม่ต้องไปเขียนอยู่ที่อื่นโดยเฉพาะถ้า pipeline ไม่ได้มีความซับซ้อนมาก worklow ค่อนข้างตอบโจทย์ตรงนี้
  • Feature ใหม่แต่ราคาไม่เพิ่ม ราคายังเท่าเดิมคือใช้ Query process byte ไปเท่าไหร่ก็จ่ายเท่านั้น
  • แต่มีข้อสังเกตอยู่หนึ่งอย่างคือตอนนี้ยังใช้งานได้แค่บน Bigqeury เท่านั้นยังไม่มี api ให้ใช้เผื่อว่ามีเคสที่จำเป็นต้องมีตัว trigger เพื่อสั่งให้ pipeline ทำงาน
  • Workflow ไม่รองรับการเอา script ที่เคยทำไว้แล้ว ไม่สามารถ import เข้าไปที่ workflow ได้ต้องทำใหม่ทั้งหมด (แต่ก็ copy โค้ดกันได้อยู่แล้วละ)
Kriangsak Sumthong
Kriangsak Sumthong
Data Engineer ที่เปลี่ยนสายงานจากไม่มีพื้นฐาน จนปัจจุบัน มีความเชี่ยวชาญ ในการจัดการ โครงการด้านข้อมูลขนาดใหญ่ที่มีความซับซ้อน สนใจการทำงานเทคโนโลยี AI และ Data ปัจจุบัน

Read more

คุณน่าจะชอบบทความนี้