สร้าง Data Pipeline ด้วย Google Cloud

Mile Warissara
Google Cloud Thailand
3 min readFeb 14, 2023

มาเรียนรู้เรื่องราวเกี่ยวกับ data pipeline ผ่านGCP กัน! ^_^

Data Lifecycle

GCP Data Lifecycle

อย่างแรกที่ต้องรู้จักคือ Data Lifecycle หรือวงจรชีวิตของข้อมูล มีทั้งหมด 4 ขั้นตอน Ingest, Store, Process และ Visualize โดยทั่วไปเราจะเริ่มต้นจากการ Ingest หรือการนำข้อมูลจากต้นทางเช่น เว็บไซต์ หรือแอปพลิเคชั่น มาเก็บไว้ในที่ๆหนึ่งซึ่งอาจจะเป็น Data Lake หรือ Data Warehouse เพื่อนำมาเข้ากระบวนการที่ 3 คือการวิเคราะห์เพื่อใช้ในทางธุรกิจหรือวางแผนการทำงานต่างๆเช่น Machine Learning, AI การสร้าง Report หรือทำ BI ในขั้นตอนสุดท้ายคือการทำให้เป็นภาพที่เรามองเห็นได้ เช่นการสร้างกราฟ Chart ต่างๆ

Data Pipeline Architecture

โดยปกติแล้วเราจะสร้าง Data Pipeline เมื่อเราต้องการนำข้อมูลไปใช้เพื่อทำอะไรบางอย่างในระหว่าง Data Lifecycle เราสามารถเริ่มต้น Pipeline จากการนำข้อมูลบน Application เข้ามาเก็บไว้ในรูปแบบไหนก็ได้ และสิ้นสุด Pipeline ได้หลากหลายรูปแบบแล้วแต่จุดประสงค์ของแต่ละกรณี เช่น เราอาจจะนำมาทำ Data Analytics, ทำ Dashboard หรือสร้างโมเดล AI ก็ได้

ขั้นตอนการสร้าง Data Pipeline

หลังจากที่เราพอจะเข้าใจ overview ของการสร้าง Data Pipeline แล้วเรามาดูกันว่าขั้นตอนการสร้างมีอะไรบ้าง เราจะต้องคำนึงถึงอะไรบ้างในการทำ

  1. เลือก Format ของ Data Source : เราสามารถนำข้อมูลเข้ามาใน Pipeline ได้หลายแบบด้วยกันเช่น
  • Batch Data : การนำข้อมูลเข้ามาเป็นชุด ในนามสกุล CSV, JSON, AVRO เป็นต้น ซึ่งอยู่ในรูปแบบ Tabular เป็นวิธีการประมวลผลที่ทำการเก็บข้อมูลในแต่ละช่วงเวลาไว้ จนครบตามเวลาที่ตั้งไว้ จึงทำการประมวลผลพร้อมกันทีเดียวไม่ว่าจะมีจำนวนเท่าไหร่ก็ตาม เช่น การเก็บข้อมูลผู้เข้าใช้เว็บไซต์ใน 7 วัน และนำมาประมวลผลอาทิตย์ละ 1 ครั้งเท่านั้น
  • Stream Data : ข้อมูลที่ถูกรับ/ส่งผ่านทาง Google Pub/Sub ดังนั้นข้อมูลประเภทนี้จะสามารถเชื่อมต่อได้ว่าต้องการข้อมูลไหน รับส่งข้อมูลตลอดเวลา เหมาะกับApplicationที่อาศัยการส่งข้อมูลแบบ Real time
  • Transactions Data : ข้อมูลในรูปแบบของ RDBMS หรือ Relational Database, NoSQL หรือ Big Data เช่นข้อมูลที่ถูกเก็บในเครื่อง POS ของร้านค้าบน Database หนึ่งเป็นต้น
  • Non Tabular Format : เช่น PDF, txt, text or document based data, network or graph data เป็นต้น

2. เลือกอุปกรณ์ที่จะช่วย Transform Data

3. เลือก Pattern ของการ Process

  • Extract Transform Load (ETL)
  • Extract Load Transform (ELT)
  • Extract Transform Load Transform (ETLT)

Extract Transform Load (ETL)

image from GCP

สำหรับกระบวนการทำ Data Process มักจะใช้กระบวนการแยก(Extract) แปลง(Transform) และโหลด(Load) หรือเทคโนโลยี ETL ทำงานนอกData Warehouse ซึ่งหมายความว่าข้อมูลภายใน Data Warehouse สามารถใช้ Query ได้พร้อมกัน ข้อเสีย อย่างหนึ่งของการ Transform นอกคลังข้อมูลหรือการแปลงก่อนโหลด คือคุณต้องเรียนรู้เครื่องมือและภาษาเพิ่มเติม (นอกเหนือจาก SQL) เพื่อทำ Data Transformation

Pipeline ข้อมูล ETL โดยทั่วไปจะดึงข้อมูลจากระบบต้นทางตั้งแต่หนึ่งระบบขึ้นไป (ควรให้น้อยที่สุดเท่าที่จะเป็นไปได้เพื่อหลีกเลี่ยงปัญหา เช่น ระบบไม่พร้อมใช้งาน) จากนั้น ETL Pipeline จะดำเนินการ Transform ชุดข้อมูลต่างๆ รวมถึงการล้างข้อมูล การใส่ Condition, Rule ต่างๆ การตรวจสอบความสมบูรณ์ของข้อมูล และการรวมข้อมูลหรือการแยกส่วน

เป็นเรื่องปกติที่จะมี Data Pipeline หลายอัน Pipeline แรกอาจจะโฟกัสไปที่การคัดลอกข้อมูลจากระบบต้นทางไปยังคลังข้อมูล Pipeline ที่ตามมาใช้ใส่ Business Rule หรือข้อกำหนดต่างๆ และ Transform ข้อมูลเพื่อใช้ต่อไป

Extract Load Transform (ELT)

ELT เป็นทางเลือกแทน ETL Data Pipeline จะแบ่งออกเป็น 2 ส่วน

  1. ELT จะแยกข้อมูลจากระบบต้นทางและโหลดลงในData Warehouse
  2. ใช้การเขียนสคริปต์ภาษา SQL บน Data Warehouse(BigQuery) เพื่อทำการ Transform ข้อมูล

ข้อดี ของวิธีนี้คือคุณสามารถใช้ SQL เพื่อTransform และสามารถนำ Data มาโหลดรอไว้ก่อนได้ เมื่อมี Requirement ใหม่เข้ามาค่อยเริ่ม Transform ข้อเสีย คือ บางครั้งเราอาจจะต้องใช้resource ใน Data Warehouse เพื่อ Query พร้อมกันดังนั้นการทำ ELT มักจะทำงานในช่วงกลางคืน (หรือนอกช่วงพีค)

image from GCP

ตัวอย่าง GCP ETL Pipeline Architecture

ETL Pipeline เป็นกระบวนการหนึ่งที่ใช้เพื่อดึงข้อมูลจากแหล่งต้นทาง(Source) ปรับเปลี่ยนรูปแบบข้อมูลเพื่อมาใช้ประโยชน์ต่อใน Data Warehouse(ในภาพด้านล่างเทียบเท่ากับ BigQuery) ถ้าเปรียบเทียบกับ Data Lifecycle ที่เราได้เรียนรู้กันไป ETL Pipeline คือการเดินทางของข้อมูลตั้งแต่ขั้นตอนที่ 1 Ingest ไปจนถึงขั้นตอนที่ 2 Store หรือเก็บข้อมูลในรูปแบบที่พร้อมจะเริ่มขั้นตอนที่ 3 คือ การวิเคราะห์ข้อมูลด้วยวิธีต่างๆนั่นเอง :)

ETL Pipeline Architecture

โดยในตัวอย่างArchitecture ด้านบนที่เรานำมาจะประกอบด้วย

  1. การใช้ Cloud Storage เพื่อจัดเก็บข้อมูลเป็น Data Lake
  2. Cloud Dataflow เพื่อโหลดข้อมูลเข้า BigQuery สามารถรองรับข้อมูลขนาดใหญ่ได้ทั้งข้อมูลแบบ Batch และ Stream
  3. BigQuery ทำหน้าที่เป็น Data Warehouse และสามารถทำ Analytics ได้
  4. Cloud Composer ใช้สำหรับควบคุมการทำงานของ Workflow ทั้งหมด ซึ่งสามารถใช้ร่วมกับ BigQuery, Cloud Storage, และ Dataflow โดยสร้างมาจาก Open Source ที่ชื่อว่า Apache Airflow
Image from Blog

Data Analytics Pipeline เป็นกระบวนการที่ซับซ้อน ซึ่งมีทั้งPipelineการนำเข้าข้อมูลแบบBatch และแบบ Stream ผ่าน Google Cloud Pub/Sub ต้องใช้เครื่องมือหลายอย่างเพื่อแปลงข้อมูลก่อนนำเข้า BigQuery เช่น Dataflow, Data Fusion, Data Prep หรือ Data Proc และสามารถสร้าง AL/ML สำหรับการประมวลผลอื่นๆผ่านทาง Vertex AI Pipeline

ทีนี้เราได้รู้จักการเดินทางของข้อมูลตั้งแต่การได้ข้อมูลมาไปจนถึงการนำไปใช้โดยภาพรวมแล้ว ดูไม่ได้ยากเกินไปใช่ไหมคะ ฝากติดตามบทความต่อๆไปที่มายจะนำมาแชร์กันผ่าน Google Thailand Community กันด้วยนะคะ ^_^

สามารถดูวิดิโอนี้เพื่อเพิ่มความเข้าใจได้เลยค่ะ 👇👇👇

--

--