Data Engineer มือใหม่ เริ่มจัดการข้อมูลกว่าล้านแถวกันยังไง ?

Ampere
Road to Data Engineer Student Blogs
6 min readOct 17, 2021

ใครที่กำลังสงสัยว่า Data Engineer (DE) ต้องทำงานอะไรบ้าง ? วันนี้เราจะพามาลองเป็น DE ผ่านตัวอย่าง Workshop แบบ End-to-end เริ่มตั้งแแต่รวบรวมข้อมูลจากแหล่งต่าง ๆ เตรียมข้อมูลให้พร้อมจนนำข้อมูลมาสร้างเป็น Dashboard ได้ โดยใช้ Service ของ Google Cloud Platform กัน

หลังจากได้เรียนคอร์ส Road To Data Engineer 2.0 สอนโดย แอดเพิร์ธ Perth Ngarmtrakulchol — Senior Data Engineer ทำงานที่ประเทศออสเตรเลีย เจ้าของเพจ Data TH.com — Data Science ชิลชิล และแอดฝน Kamolphan Lewprasert — Senior Machine Learning Engineer และ Certified Google Cloud Professional Data Engineer ถึงเวลาที่จะมาแชร์ความรู้ที่ได้จากคลาสนี้แล้วค่า

⚠️ Note: ลิงค์ของ Table of Contents สามารถใช้ได้บนเว็ปเท่านั้น (หากกดใน
แอปอาจทำให้ค้างได้)

Table of Contents

Data Engineer คือใคร
ELT และ Data Pipeline
Data Exploratory
การสมัครสมาชิก GCP
01 สร้าง Google Cloud Composer
02 ติดตั้ง Python Package
03 สร้าง MySQL Connection
04 สร้าง Dataset ใน Google BigQuery
05 อัปโหลดไฟล์ DAG
06 ใช้ Cloud Shell Editor แก้ไขไฟล์
07 ตรวจสอบสถานะ Pipeline ใน Airflow
08 สร้าง Dashboard ใน Google Data Studio
Summary

Data Engineer คือใคร

Data Engineer หรือ วิศวกรข้อมูล เป็นผู้พัฒนาระบบ Big Data จัดการข้อมูลขนาดใหญ่ และเตรียมข้อมูลให้ Data Analyst (DA) และ Data Scientist (DS) นำไปใช้ต่อได้อย่างมีประสิทธิภาพมากขึ้น

ลองคิดดูว่า ถ้าเพื่อน ๆ ต้องทำงานกับข้อมูลจากหลาย ๆ ไฟล์ แต่ละไฟล์มีข้อมูลมากกว่า 1 ล้านแถว จะต้องใช้เวลาเยอะแค่ไหนในการเช็ค แก้ไข นำข้อมูลมารวมกัน แล้วถ้าข้อมูลเหล่านี้มีปริมาณมากขึ้นเป็นหลักสิบล้าน และมาจากแหล่งอื่น ๆ ที่ไม่ใช่ไฟล์ Excel จะจัดการกับข้อมูลเหล่านี้อย่างไรให้พร้อมใช้งาน ?

หลักการของ DE จะเข้ามาช่วยเตรียมข้อมูลเหล่านี้พร้อมให้ DA และ DS สามารถเข้าถึงได้ง่ายและนำข้อมูลไปวิเคราะห์ได้ดียิ่งขึ้น

อยากรู้จัก Data Engineer แบบละเอียดอ่านต่อได้ที่นี่

เริ่มทำ Data Engineer Workshop กันเลย

ใน Workshop นี้เรากำลังทำงานอยู่ในบริษัทที่ขาย Audio Book มีการเก็บข้อมูลของสินค้า และการขายสินค้ามาตลอด 3 เดือน (May-July 2021) ตอนนี้บริษัทต้องการขยายตลาดมาที่ประเทศไทยจึงมี Requirement มาให้ทีม DE

รับ Requirement จาก ทีม Business

การวางแผน Data Pipeline และหลักการ ETL

เมื่อเข้าใจ Requirement ทาง Tech แล้ว ทีม DE จะมาวางแผน Data Pipeline และ เลือก Service ที่เหมาะสมกับงานนั้น ๆ

Data Pipeline คือการลำเลียงข้อมูลจากแหล่งข้อมูล (Data Source) ไปจุดหมาย (Destination)

เราสร้าง Data Pipeline เพื่อที่จะรวมข้อมูลจากหลาย Data Sources ให้อยู่ในที่เดียวกัน และเก็บไว้ที่ Destination ที่ต้องการได้

ตัวอย่าง Data Pipeline

จากการสำรวจเบื้องต้น เรามีแหล่งข้อมูลจาก 2 ที่

  1. Database
  2. Currency Conversion API

ตอนนี้เราสามารถวาง Data Pipeline พร้อมเลือก Service ที่จะใช้ได้แล้ว

ออกแบบ Data Pipeline ของโปรเจ็คนี้

ใน Workshop นี้เราจะใช้หลักการ ETL ซึ่งคือการ “Extract” ดึงข้อมูลจากแหล่งต่าง ๆ (Database และ API) มารวมไว้ที่ Data Lake จากนั้นทำการ “Transform” เปลี่ยนแปลงข้อมูลให้เป็นไปตามที่ DA ต้องการ และ “Load” นำข้อมูลไปที่ปลายทาง เช่น Data Warehouse เพื่อให้ DA สามารถนำข้อมูลไปวิเคราะห์ได้สะดวกมากยิ่งขึ้น

ใครยังสงสัยว่าการเก็บข้อมูลแต่ละที่แตกต่างกันยังไง ลองไปอ่านบทความนี้เลย
Big Data เก็บที่ไหน? Data Lake vs Data Warehouse vs Database (datath.com)

Data Exploratory

เรามาสำรวจหน้าตาข้อมูลที่อยู่ในแต่ละ Data sources และวางแผนขั้นต่อไป

  1. Database ซึ่งมี 2 ตาราง ได้แก่ audible_data และ audible_transaction
    (ใน Workshop นี้ไม่มี Access เข้า Database ให้นะคะ สามารถหาข้อมูลมาลองเล่นดูจาก Kaggle ได้ค่ะ)
  2. Currency Conversion API
ตัวอย่าง audible_data
ตัวอย่าง audible_transaction

เพื่อเตรียมข้อมูลให้ DA สามารถนำไปใช้งานต่อได้ เราต้องการรวมข้อมูลให้อยู่ในตารางเดียว และแปลงราคาสินค้าจาก USD เป็นค่าเงินบาท THB นี่เป็นหนึ่งในวิธีการที่จะช่วยให้เราได้สิ่งที่ต้องการ

การทำ Data Modeling ช่วยให้เราเข้าใจความสัมพันธ์ระหว่างข้อมูลและช่วยให้เราวางแผนได้ง่ายขึ้น

ทำความเข้าใจข้อมูลที่มีอยู่ และวางแผนขั้นตอนการทำงาน (โหลด PDF)

ต่อมาเราต้องลองคิดด้วยว่า จะเขียนโปรแกรมยังไงให้คอมพิวเตอร์เข้าใจแต่ละ Step

ใน Workshop นี้เราจะจัดการ Data Pipeline ด้วย Google Cloud Composer เป็นบริการจัดการ Workflow ของ Data Pipeline ที่สร้างขึ้นมาจาก Apache Airflow ซึ่งจะเขียน Workflow แบบเป็นกราฟ DAG (Directed Acyclic Graph = กราฟที่มีทิศทางเดียวและไม่วนกลับมาเป็นลูป) อ่านเพิ่มเติม

ตัวอย่าง DAG ของการทำ ELT ใน Airflow

Workflow ในที่นี้คือ
Extract — การดึงข้อมูลจาก MySQL, API (Data Source) เข้าใน Data Lake (Storage)
Transform — นำข้อมูลมารวมกันและปรับเปลี่ยน Format ข้อมูล
Load — โหลดเข้า Data Warehouse (BigQuery)

แบ่ง Task สำหรับการเขียนโปรแกรมตาม Data Pipeline (โหลด PDF)

เมื่อเรามีแผนคร่าว ๆ (แผนอาจมีการเปลี่ยนแปลงระหว่างทำงานได้) และเลือก Service ที่จะใช้ได้แล้ว เราสามารถเริ่มสร้าง Service ต่าง ๆ ใน Google Cloud ได้เลย

สมัครสมาชิก GCP และเตรียม Service ต่าง ๆ

🚨 หมายเหตุ: ตัวอย่าง Workshopในบทความนี้ไม่มี Access เข้า Databaseให้
เพื่อน ๆ สามารถอ่านบทความนี้เพื่อทำความรู้จักกับตัวอย่างงานที่ Data Engineer ต้องทำและลองหาข้อมูลที่อยากลองมาก่อน แล้วค่อยตัดสินใจสมัคร Free Trial นี้

การสมัคร Free Trial ของสมาชิก Google Cloud (GCP) เพื่อรับฟรีเครดิต $300 อายุ 90 วัน (2021)

เงื่อนไขการสมัคร

  1. มีบัญชี Google Account หรือ Gmail ที่ยังไม่เคยใช้ Free Trial หรือขอ free credit มาก่อน
  2. มีบัตรเครดิต เพื่อยืนยันตัวตนและผูกไว้กับบัญชี ในตอนเริ่มต้นอาจจะมีการตัดเงิน 1 USD สำหรับการยืนยันบัตร

01 สร้าง Google Cloud Composer (15–20 นาที)

เราเลือก Composer 1 ซึ่งเป็นเวอร์ชั่นที่เสถียรกว่า แต่ยังไม่รองรับการทำ Autoscaling จากนั้นตั้งค่า Node การทำงานของ Composer ตาม Workload ของ Data Pipeline ที่ออกแบบ

Google Cloud Composer จะสร้าง Google Cloud Storage ใหม่ ที่ Sync ข้อมูลระหว่าง 2 โฟลเดอร์นี้โดยอัตโนมัติ

สร้าง Environments ของ Composer
ตั้งค่าการทำงานของ Composer
สร้าง Composer เสร็จแล้ว

02 ติดตั้ง Python Package บน Airflow

ใน Workshop นี้เราจะใช้ 3 Packages

  1. pymysql — ใช้ในการต่อกับ Database
  2. requests — ใช้เพื่อดึงข้อมูลจาก API
  3. pandas — ใช้ในการ Transform ข้อมูล
ติดตั้ง Python Package

03 สร้าง MySQL Connection

หนึ่งใน Data Source ของเราเก็บอยู่ใน MySQL Database เราต้องสร้าง Connection นี้เพื่อที่จะดึงข้อมูลจาก Database ได้

ใส่ Database Credential (Username, Password)

04 สร้าง Dataset ใน Google BigQuery

สร้าง Dataset ใน BigQuery

Data Location ต้องอยู่ Region เดียวกับ Cloud Composer (ใน Workshop นี้เราเลือกเป็น asia-east2)

05 อัปโหลดไฟล์ Airflow DAG definition ในโฟลเดอร์ DAGs

Airflow DAG definition จะเป็นไฟล์ที่กำหนดละดับการทำงานของ Task ใน Data Pipeline ซึ่งจะสามารถเขียนด้วย Python (เดี๋ยวมาอัปโหลดให้นะ)

เข้าโฟลเดอร์ DAGs จาก Google Cloud Composer
อัพโหลดไฟล์ในโฟลเดอร์ DAGs

06 เปิด Cloud Shell Editor เพื่อแก้ไขไฟล์

แก้ไขไฟล์ใน Cloud Shell Editor

Copy ไฟล์จาก Cloud Shell เข้า Google Cloud Storage ที่เชื่อมกับ Airflow ของ Google Cloud Composer

โฟลเดอร์บน Google Cloud Storage และ Google Cloud Composer ที่ Sync กัน
gsutil cp <file_name>.py gs://<dags-path>/dags

Airflow จะทำงานตาม Schedule ที่เรากำหนดไว้ หรือ เราสามารถ Trigger DAG เองได้

07 ตรวจสอบสถานะของ Pipeline และข้อมูลใน BigQuery

ลิสต์ทั้งหมดของ DAGs
Graph View ของ Data Pipeline
audible_data (transformed แล้ว) ถูกโหลดเข้าใน Google BigQuery แล้ว

08 สร้าง Dashboard ใน Data Studio

ก่อนการสร้าง Dashabord Business Analyst (BA) จะไปคุยกับผู้ใช้ (ทีม Product และ Marketing) ว่ามีความต้องการอะไรบ้าง จากนั้นจะนำมาวาด Wireframe ก่อนเพื่อเช็คว่า Dashboard ที่กำลังจะสร้างนั้นตรงกับความต้องการของผู้ใช้หรือไม่ เพราะการแก้ไขใน Wireframe ย่อมง่ายกว่า

Wireframe

DE จะสร้าง View เพื่อเลือกข้อมูลแค่เท่าที่จำเป็นไปสำหรับใช้ทำ Dashboard

CREATE VIEW r2de-326308.<dataset>.<view_name>
AS
SELECT timestamp, user_id, country, Book_ID, Book_Title, Categories, THBPrice
FROM r2de-326308.workshop5.audible_data

ใน Google Data Studio สามารถเลือก Connector เป็น BigQuery เลือก View ที่สร้างเป็น Data Source และเริ่มสร้าง Dashboard ได้เลย

เลือก View ที่สร้างเป็น Data Source
ตัวอย่าง Dashboard

ตอนนี้เราสามารถตอบคำถามทีม Marketing, Product ได้แล้วว่า ในประเทศไทยเรื่อง Ready Player One — Ernest Cline ได้รับความนิยมเป็นอย่างมาก สามารถทำเงินได้สูงถึงแสนกว่าบาท ดังนั้นแนวทางการโปรโมทในอนาคตควรเป็นหนังสือประเภทเดียวกัน หรือ หนังสือที่มาจากผู้เขียนคนนี้

Summary

จบไปแล้วกับ Data Engineer Workshop หวังว่าเพื่อน ๆ จะเข้าใจภาพรวมการทำงานของ Data Engineer ตั้งแต่ต้นจนสามารถเตรียมข้อมูลให้พร้อมมากยิ่งขึ้นนะคะ

วันนี้เราได้เรียนรู้การทำ ETL (Extract-Transform-Load) การสร้างและจัดการ (Orchestrate) Data Pipeline โดยใช้ Google Cloud Composer (Apache Airflow) เพื่อช่วยการเตรียมข้อมูลเป็นไปอย่างอัตโนมัติ (Automate) สามารถจัดการข้อมูลปริมาณมากได้ในเวลาที่น้อยลง และช่วยลดความผิดพลาดจาก Human error

อ่านแล้วมี Feedback ยังไงสามารถ อยากให้ปรับเปลี่ยนตรงไหน DM มาพูดคุยกันได้ที่ Facebook เลยนะคะ 😊

Coming Up

  • Data Cleansing โดยใช้ Spark ทำยังไง Data Anomaly มีแบบไหนบ้างและจัดการยังไง
  • เตรียม DE LinkedIn Profile ยังไงให้ Recruiter สนใจ

ช่องทางการติดตาม

สำหรับเพื่อน ๆ ที่สนใจศึกษาด้าน Data Engineer สามารถติดตามข่าวสารและบทความต่าง ๆ ได้ตามช่องทางนี้เลย

--

--