สวัสดีตัวเองและชาวโลกอีกครั้งคร้าบบบบ

ซีรี่ส์ใหม่นี้ ผมขอนำเสนอเกี่ยวกับการจัดการข้อมูลนะฮะ

เนื่องจากงานหลักของกระผมที่เป็น data engineer คือการจัดการ เตรียมการข้อมูลให้พร้อมก่อนจะส่งให้ทีมอื่นเค้าใช้งานฮะ การจะเตรียมข้อมูลอย่างง่ายที่สุดคือ ทำให้ข้อมูลที่ต้องการเนี่ย อยู่ในที่และสภาพที่พร้อมใช้งานฮะ ตัวอย่างเช่น ถ้าปกติแล้ว ฝ่ายการตลาดจะต้องเข้ามาดูรายงานการสั่งสินค้าของลูกค้าทุกวัน แปลว่า เราก็จะต้องเตรียมข้อมูลก้อนนั้นทุกวัน เพื่อให้โปรแกรมมันหยิบไปทำรายงานได้นะฮะ

โดยทั่วไปเลยเนี่ย เราจะสนใจประเด็นพวกนี้ฮะ

  1. ข้อมูลต้นทางมาจากไหน
    เช่น มาจากไฟล์ Excel, CSV, มาจาก API ของเว็บนั่นนี่ หรือมาจากระบบฐานข้อมูลฮะ
  2. ข้อมูลปลายทางจะอยู่ที่ไหน
    เช่น มาจากไฟล์ Excel แล้วเอาไปเก็บในฐานข้อมูลอีกที่นึงขององค์กรเรา
  3. เปลี่ยนแปลงข้อมูลยังไงบ้าง
    ส่วนใหญ่เราจะต้องปรับตัวข้อมูลก่อนใส่ลงที่ปลายทาง เช่น ต้นทางมีชื่อ สกุล อายุ แต่ปลายทางเก็บแค่ชื่อ สกุล ก็ต้องกำหนดว่าเปลี่ยนแปลงอะไรยังบ้างฮะ
  4. ทำตอนไหน กี่โมง ถี่แค่ไหน
  5. จัดการกับไฟล์ต้นทางและปลายทางหลังจากกระบวนการนี้เสร็จแล้วยังไงบ้าง เช่น ถ้าขั้นตอนย้ายข้อมูลเสร็จแล้ว ลบไฟล์ต้นทางเลย หรือ ย้ายไปอีกแฟ้มนึง หรือไม่ต้องทำอะไรเพิ่มฮะ

มีศัพท์นึงที่ใช้กันจนเป็นศัพท์ประจำวันของงานสายนี้ นั่นคือ

ETL (Extract-Transform-Load)

แปลตรงไปตรงมาว่า สกัดข้อมูลออกมา (จากต้นทาง) แล้วแปลงข้อมูล เสร็จแล้วค่อยเอาไปใส่ไว้ที่ปลายทางฮะ คำนี้เป็นพื้นฐานของ Data integration ของเรานี้เลยนะฮะ แต่ว่าผมมักจะทำอีกแบบนึงที่เรียกว่า

ELT (Extract-Load-Transform)

นั่นคือ สกัดข้อมูลมาก่อนแล้วใส่ไว้ที่ปลายทาง เสร็จแล้วค่อยแปลง มันต่างกันยังไง มันต่างกันตรงที่ถ้าเราแปลงมาก่อน บางครั้งเราอาจจะไม่ได้เก็บข้อมูลบางจุดที่ส่งผลกับการใช้งานขั้นต่อไปฮะ เช่น ปลายทางเก็บแค่ชื่อ สกุลเท่านั้น เพราะฐานข้อมูลออกแบบมาให้เก็บแค่สองค่า แต่ถ้าอนาคตจะต้องคำนวณโดยใช้ข้อมูลอายุขึ้นมาล่ะ ก็ต้องแก้ระบบนี้ด้วย ทีนี้ผมเลยให้มันเก็บทั้งหมดไปก่อนที่ปลายทาง ถ้าจะใช้ก็ค่อยแปลงออกมา แบบนี้จะได้ไม่เสียเวลาแก้ระบบฮะ แต่ก็ต้องแลกด้วยพื้นที่เก็บข้อมูลเพิ่มขึ้นฮะ

ใช้เครื่องมืออะไรออกแบบระบบนี้ดี

ส่วนตัวผมใช้อยู่สองตัว นั่นคือ Talend กับ Apache Airflow แต่ซีรี่ส์นี้ ผมขอนำเสนอเป็น Talend ฮะ

source: https://commons.wikimedia.org/wiki/File:Talend_logo.svg

เกริ่นนำเกี่ยวกับ 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 มาตัวนึงจะต้องทำอะไรบ้าง

ส่วนผมก็ขอลาไปก่อนนะฮะ ชะแว๊บ