โพสนี้เป็นภาคต่อสั้น ๆ ของบทความ ทำไมโลกนี้ไม่ได้ต้องการ Data Scientist แต่ต้องการ Data Engineer
เนื่องมาจากว่าแอดเพิ่งจบโปรเจค Consult กับลูกค้า 6 เดือน ตอนนี้กลับมาที่บริษัทเพื่อเทรนนิ่ง + เตรียมสอบ Google Cloud Professional Data Engineer Certificate ก็เลยมีโอกาสได้มานั่งเรียน Full-day Workshop สอนใช้เครื่องมือทำ ETL ชื่อ Talend
งาน ETL เป็นงานที่สำคัญอย่างมากในบริษัททุกแห่ง เลยอยากเอามาบอกต่อกันเผื่อใครสนใจหันมาทำงานสายนี้ครับ เงินดี งานท่วมแน่นอน
ETL คืออะไร? ทำไมต้องมี?
ETL ย่อมาจาก Extract-Transform-Load เป็นการนำข้อมูล (Extract) จากหลากหลายแหล่งข้อมูล เช่น จากฝ่าย Marketing, จากฝ่าย Sale, จากฝ่าย Customer Service ฯลฯ มาแปลงรูปแบบให้เหมาะสม (Transform) แล้วเก็บ (Load) เข้าไปใน Data Warehouse หรือ Data Lake
ในบริษัททั่วไป เป็นปกติที่แต่ละ Business Unit ก็จะมีข้อมูลที่เก็บแยกออกจากกัน โดยเราจะเรียกการทำงานแบบนี้ว่าเป็นการทำงานเป็น Silo ครับ โดยการทำ ETL ก็คือ:
- เราจะทำการรวบรวมข้อมูลที่แยกจากกันนี้ (Extract)
- มาปรับแต่งให้หน้าตามันเหมือนกัน (Transform)
- แล้วเอาไปเก็บไว้ในสถานที่ที่เตรียมไว้ (Load)
ซึ่งจะทำให้ข้อมูลจากทุก BU มารวมกันในแหล่งเดียว เอาไปใช้งานต่อได้ง่าย หรือเอามาวิเคราะห์รวมกันก็มีประโยชน์ครับ
ประโยชน์ของการทำ ETL
การทำ ETL มีประโยชน์มาก เช่น เราสามารถเอาข้อมูลชุดไฟนอลนี้ไปให้ทีม Analytics ประมวลผลต่อ หรือเอาไปทำ Dashboard สรุปให้ผู้บริหาร หรือแม้แต่จะเอาข้อมูลระบบเก่า (Legacy System) มารวมกับระบบใหม่ก็ยังได้
การทำ ETL มีปัญหาอะไร
พื้นฐานงานของ ETL สามารถอธิบายได้ว่าเป็นการ “ดึงข้อมูลมาเก็บ” แค่นั้นเองครับ ฟังดูง่าย ๆ
แต่… ปัญหาที่แท้จริงก็จะตามมาหลังจากเราพบว่า:
- ข้อมูลใหญ่มาก เก็บไว้ไหนดี (Cloud หรือ On-Premise Data Lake) ใช้อะไรประมวลผลดี (Data Warehouse หรือ Spark)
- ข้อมูลมาจากหลายต้นทาง (Data Sources) หน้าตาข้อมูลก็จะแตกต่างกัน เราจะทำความสะอาดข้อมูลยังไง รวมข้อมูลยังไง (Data Integration) และจะทำยังไงเพื่อให้เราเช็คได้ว่าข้อมูลมีการประมวลผลอะไรไปบ้าง (Data Lineage)
- ข้อมูลมาด้วยความเร็วไม่เท่ากัน (Batch หรือ Streaming Data) เราจะรู้ได้ยังไงว่าอันไหนประมวลผลไปแล้ว
- บริษัทบางที่มีกฏว่าข้อมูลลูกค้าต้องถูกเข้ารหัสก่อนเก็บ (PII – Personally Identifiable Information) เราจะทำอย่างไรเพื่อให้เข้ารหัสแล้วเอาออกมาถอดรหัสต่อได้สะดวก (Key Management)
ฯลฯ และยังมีปัญหาอื่น ๆ อีกมากมาย ขึ้นอยู่กับแต่ละองค์กรเลยครับ
ทำไมต้องให้ Data Engineer ทำ ETL แทนที่จะให้ Data Scientist ทำ
การทำ ETL ไม่ใช่เรื่องเล่น ๆ ครับ จำเป็นต้องใช้คนที่มีความรู้ และประสบการณ์ (โดยเฉพาะด้านระบบ Big Data ต่าง ๆ เช่น Hadoop, Airflow ฯลฯ)
ถามว่าจ้าง Data Scientist มาแล้วให้ทำ ETL ได้มั้ย? ได้ครับ คือมันเป็นงานที่เรียนรู้ได้ แต่เค้าอาจจะไม่ถนัด ทำให้ต้องใช้เวลาขุดความรู้เยอะ ความสามารถของ Data Scientist จะเน้นการวิเคราะห์ข้อมูล การสร้างโมเดล มากกว่าให้มาเขียนโค้ด ETL
อีกเหตุผลหนึ่งก็คือ การทำ ETL ไม่ใช่งานที่ทำครั้งเดียวจบ จะต้องทำแล้วมีคนคอยตรวจเช็คผล หรือหลาย ๆ ครั้งเราต้องทำ ETL แบบต่อเนื่อง เช่น เดือนละครั้ง อาทิตย์ละครั้ง วันละครั้ง เพราะฉะนั้นเราจำเป็นต้องมีคนที่ดูแลด้านนี้โดยเฉพาะครับ
เพราะฉะนั้น งานด้าน ETL จึงควรไว้วางใจให้ Software Engineer / Data Engineer ที่มีความรู้ความสามารถทำ จะทำให้งานมีประสิทธิภาพ เสร็จเร็ว ประหยัด Manhour ขององค์กรได้มากกว่านั่นเองครับ
ถ้าใครสนใจอยากมาทำงานสาย Data แล้วมีสกิลเขียนโปรแกรม (ยิ่งจบ Com Eng หรือ Com Sci ยิ่งดี) ลองไปหัดพวก Big Data Technologies (NoSQL, Hadoop) หรือ Cloud แล้วหันมาสาย Data Engineer ก็น่าสนใจไม่น้อยเลยครับ
บทความแนะนำเรื่อง ETL:
ป.ล. Data Engineer เผลอ ๆ เริ่มต้นเงินเดือนสูงกว่า Data Analyst / Scientist อีกครับ
ป.ล.2 ใครสนใจด้าน Data Engineer แนะนำให้ลองอ่านบทความ คู่มือเปลี่ยนอาชีพ Data Engineer ดูนะครับ
แอดเพิร์ธ