Data Integration (EP 1) - ข้อมูลเธอนั้น ขอฉันเถอะนะ
สวัสดีตัวเองและชาวโลกอีกครั้งคร้าบบบบ
ซีรี่ส์ใหม่นี้ ผมขอนำเสนอเกี่ยวกับการจัดการข้อมูลนะฮะ
เนื่องจากงานหลักของกระผมที่เป็น data engineer คือการจัดการ เตรียมการข้อมูลให้พร้อมก่อนจะส่งให้ทีมอื่นเค้าใช้งานฮะ การจะเตรียมข้อมูลอย่างง่ายที่สุดคือ ทำให้ข้อมูลที่ต้องการเนี่ย อยู่ในที่และสภาพที่พร้อมใช้งานฮะ ตัวอย่างเช่น ถ้าปกติแล้ว ฝ่ายการตลาดจะต้องเข้ามาดูรายงานการสั่งสินค้าของลูกค้าทุกวัน แปลว่า เราก็จะต้องเตรียมข้อมูลก้อนนั้นทุกวัน เพื่อให้โปรแกรมมันหยิบไปทำรายงานได้นะฮะ
โดยทั่วไปเลยเนี่ย เราจะสนใจประเด็นพวกนี้ฮะ
- ข้อมูลต้นทางมาจากไหน
เช่น มาจากไฟล์ Excel, CSV, มาจาก API ของเว็บนั่นนี่ หรือมาจากระบบฐานข้อมูลฮะ - ข้อมูลปลายทางจะอยู่ที่ไหน
เช่น มาจากไฟล์ Excel แล้วเอาไปเก็บในฐานข้อมูลอีกที่นึงขององค์กรเรา - เปลี่ยนแปลงข้อมูลยังไงบ้าง
ส่วนใหญ่เราจะต้องปรับตัวข้อมูลก่อนใส่ลงที่ปลายทาง เช่น ต้นทางมีชื่อ สกุล อายุ แต่ปลายทางเก็บแค่ชื่อ สกุล ก็ต้องกำหนดว่าเปลี่ยนแปลงอะไรยังบ้างฮะ - ทำตอนไหน กี่โมง ถี่แค่ไหน
- จัดการกับไฟล์ต้นทางและปลายทางหลังจากกระบวนการนี้เสร็จแล้วยังไงบ้าง เช่น ถ้าขั้นตอนย้ายข้อมูลเสร็จแล้ว ลบไฟล์ต้นทางเลย หรือ ย้ายไปอีกแฟ้มนึง หรือไม่ต้องทำอะไรเพิ่มฮะ
มีศัพท์นึงที่ใช้กันจนเป็นศัพท์ประจำวันของงานสายนี้ นั่นคือ
ETL (Extract-Transform-Load)แปลตรงไปตรงมาว่า สกัดข้อมูลออกมา (จากต้นทาง) แล้วแปลงข้อมูล เสร็จแล้วค่อยเอาไปใส่ไว้ที่ปลายทางฮะ คำนี้เป็นพื้นฐานของ Data integration ของเรานี้เลยนะฮะ แต่ว่าผมมักจะทำอีกแบบนึงที่เรียกว่า
ELT (Extract-Load-Transform)นั่นคือ สกัดข้อมูลมาก่อนแล้วใส่ไว้ที่ปลายทาง เสร็จแล้วค่อยแปลง มันต่างกันยังไง มันต่างกันตรงที่ถ้าเราแปลงมาก่อน บางครั้งเราอาจจะไม่ได้เก็บข้อมูลบางจุดที่ส่งผลกับการใช้งานขั้นต่อไปฮะ เช่น ปลายทางเก็บแค่ชื่อ สกุลเท่านั้น เพราะฐานข้อมูลออกแบบมาให้เก็บแค่สองค่า แต่ถ้าอนาคตจะต้องคำนวณโดยใช้ข้อมูลอายุขึ้นมาล่ะ ก็ต้องแก้ระบบนี้ด้วย ทีนี้ผมเลยให้มันเก็บทั้งหมดไปก่อนที่ปลายทาง ถ้าจะใช้ก็ค่อยแปลงออกมา แบบนี้จะได้ไม่เสียเวลาแก้ระบบฮะ แต่ก็ต้องแลกด้วยพื้นที่เก็บข้อมูลเพิ่มขึ้นฮะ
ใช้เครื่องมืออะไรออกแบบระบบนี้ดี
ส่วนตัวผมใช้อยู่สองตัว นั่นคือ Talend กับ Apache Airflow แต่ซีรี่ส์นี้ ผมขอนำเสนอเป็น Talend ฮะ
เกริ่นนำเกี่ยวกับ Talend นิดนึง
Talend เป็นชื่อบริษัทนึงที่ทำโปรแกรมหลายๆอย่างสำหรับการจัดการข้อมูลฮะ ทีนี้ที่เราสนใจจะเป็น Talend Open Studio เอาไว้ออกแบบระบบ integrate ข้อมูลของเราฮะ โดยโหลดได้จากลิงก์นี้ฮะ https://www.talend.com/products/data-integration/data-integration-open-studio/
ด้วยชื่อของมัน open studio นั่นคือมันฟรีนั่นเองฮะ แล้วก็มี community ของมันเอง เราสงสัยอะไรยังไงก็สามารถไปหาอ่านหรือโพสต์ถามในฟอรัมได้เลยฮะ มีคนคอยตอบคำถามเยอะแยะในนั้น แล้วตัวโปรแกรมเองก็ใช้งานง่าย ลากวางๆ ตั้งค่าก็เสร็จฮะ
แต่ข้อเสียคือ ตัวนี้รันบน JAVA และกินแรมเยอะฮะ แนะนำสำหรับแรมตั้งแต่ 8GB ขึ้นไปนะฮะ
เริ่มต้นใช้งานยังไงดี
เมื่อเราโหลดมาแล้วนะฮะ ให้เปิดโปรแกรมมา ก่อนอื่นเลยมันจะให้เราสร้างหรือเลือกโปรเจคท์ก่อน อันนี้ทำหน้าที่เหมือนแฟ้มงานน่ะฮะ

ติ๊ต่างว่าเราเลือกโปรเจคท์ที่ชื่อ Local_Project แล้วนะฮะ ขั้นต่อมาคือ รอเปิดโปรแกรมจนเสร็จ ใช้เวลาไม่เกินสามนาทีมาม่าสุกฮะ หน้าจอหลักก็เผยโฉมขึ้น

เนื่องจากเปิดโปรแกรมมาใหม่ สดๆซิงๆ ยังไม่ได้สร้างอะไรเลย เริ่มต้นเราจึงสร้าง Job ขึ้นมาก่อนฮะ

ใส่ชื่อ Job เสร็จ สมมติว่าชื่อ sample_job01 มันก็จะถามว่า สนใจจะลง Package เพิ่มเติมมั้ย มันคือตัว library ข้างนอกที่เกี่ยวข้องกับวัตถุ หรือ components ในโปรแกรมนี้ฮะ เราจะข้ามมันไปก่อนฮะ
แล้วทีนี้ เราก็จะได้เจอกับหน้าจอทำงานจริงจังแล้วละฮะ

EP ต่อไปจะสาธิตแล้วล่ะฮะ ว่าถ้าเราจะสร้าง Job มาตัวนึงจะต้องทำอะไรบ้าง
ส่วนผมก็ขอลาไปก่อนนะฮะ ชะแว๊บ