Data pipeline แท้จริงแล้วมันคืออะไร

Image placeholder
แวะมาทักทายกันได้

จากที่ได้เกริ่นเรื่องการดึงข้อมูลจากแหล่งข้อมูล (Data Collection) ไปในบท สรุปหน้าที่ของนักวิทยาศาสตร์ข้อมูลและกระบวนการทางวิทยาการข้อมูล นั้น จะมาลงรายละเอียดในเรื่องนี้กันให้ลึกขึ้นอีกสักนิด ว่าในขั้นตอนนี้ มีกระบวนการอะไรบ้างที่เกี่ยวข้อง

 

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

 

เมื่อบ่อน้ำมันมีหลายแห่ง มีความแตกต่างของสารน้ำมัน ดังนั้นก็จะมาเข้าสู่วิธีการที่จัดการน้ำมันด้วยวิธีการทำ Data Pipeline นั้นเอง (ให้แทนคำว่าน้ำมัน เป็น ข้อมูลด้วยนะ ยกตัวอย่างให้เห็นภาพง่ายเท่านั้นเอง)

 

Data pipeline แท้จริงแล้วมันคืออะไร

 

คำว่า pipeline ถูกนำไปใช้ในหลายๆงาน ซึ่งมีลักษณะเป็นระบบ (System) ที่มีขั้นตอน ซึ่งในการทำงานกับสิ่งที่เรียกว่าข้อมูล (Data) ข้อมูลบนคอมพิวเตอร์เป็นสิ่งที่สมมติขึ้นมาว่ามันคือเอกสารที่มีตัวหนังสือ หรือสิ่งที่ทำให้เกิดเสียง เกิดรูปภาพ วิดีโอ แท้จริงแล้วมันคือสิ่งที่ถูกกำหนดให้เป็นอยู่ในรูปเอกสารต่าง ๆ ซึ่งมันคือจำนวน binary อัดรวมกันจนเป็นสื่อเอกสารที่ ทำให้มนุษย์เข้าใจและเราสามารถรับรู้สิ่งนั้น ๆได้ แต่วิธีที่จะทำให้เข้าใจในเรื่องของ Data Pipeline ให้ลองจินตนาการขึ้นว่ามันเป็นเหมือนกับ น้ำในท่อที่รอการระบายหรือไหลไปในทิศทางที่เราต้องการ

 

เมื่อมีอะไรที่ถูกเปรียบเทียบกับ ท่อ หรือ ระบบ สิ่งนั้นมักจะตกเป็นหน้าที่ของผู้คนที่คลั่งไคล้การทำงานกับสิ่งที่ซับซ้อนหรือมีทักษะการทำระบบ ถูกนิยามว่าเป็น วิศวกรดังนั้น สิ่งที่เรากำลังพูดถึงกันอยู่มันเกี่ยวกับข้อมูล จึงถูกเรียกว่า วิศวกรข้อมูล (Data Engineer)

 

Data Engineer คือใคร มีหน้าที่อะไร

 

จะขอเกริ่นเพื่อให้เห็นภาพคร่าว ๆ ว่าคนที่มีหน้าที่ทำ Data Engineer คือ คนที่ช่วยสร้างระบบในการส่งข้อมูล (Data Pipeline) และจัดเก็บข้อมูลต่าง ๆ ซึ่งทักษะที่จำเป็นจะเน้นไปทางด้านการเขียนโปรแกรม วิศวกรรมซอฟต์แวร์ และ เครื่องมือในการจัดการกับข้อมูลต่าง ๆ

 

คราวนี้เมื่อเรารู้ว่า การทำ Data pipeline และ คนที่มีหน้าที่จัดการข้อมูลนั้นคือ Data Engineer คราวนี้เรามาเรียนรู้แนวคิดและวิธีจัดการกับข้อมูลกัน จากในหลายๆเรื่องจะมีส่วนที่คาบเกี่ยวกันทั้งสิ้น จะมากหรือน้อยขึ้นอยู่กับการนำไปใช้งาน จากที่เคยเล่าว่า ขั้นตอนของการทำ Data Science มันมีส่วนที่ต้องจัดการข้อมูล อยู่ในเรื่องของ Data pipeline จริง ๆแล้วก็เป็นส่วนหนึ่งของวิชา การออกแบบคลังข้อมูลหรือ Data Warehouse โดยในบทความนี้ จะนำหลักการและแนวคิด ในการทำระบบจากวิชานี้กัน ทั้งหมดนี้จะเป็นแนวคิดและเฟรมเวิร์คสำหรับการทำ ETL Engineer

 

หลักการทำงานของคลังข้อมูล หลักๆแล้วจะแบ่งออกเป็น 3 ส่วนใหญ่ๆ คือ

 

1.     การเก็บรวบรวมและได้มาซึ่งข้อมูล

2.     การจัดเก็บข้อมูล

3.     การเข้าถึงข้อมูลสารสนเทศแล้วส่งต่อไปยังผู้ใช้ข้อมูล

 

จากทั้ง 3 ส่วนนี้ คุ้นๆมั้ยว่า มันคล้ายๆกัน

 

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

 

ซึ่งในส่วนของข้อ 1 และ 2 นั้นเป็นเหมือนกับเบื้องหลังของการทำงาน โดยจะประกอบไปด้วยเทคนิคอีก 3 ฟังก์ชันด้วยกัน นั่นคือ อีทีแอล (ETL) เป็นตัวย่อมาจากคำว่า

 

Data Extraction - การสกัดข้อมูล

Transformation การเปลี่ยนแปลง/ เปลี่ยนรูปข้อมูล

Loading – การถ่ายโอนข้อมูล

 

โดยการทำงานของ 3 ฟังก์ชันนี้จะทำงานแบบเรียงต่อกันทีละฟังก์ชันเป็นลำดับ โดยเริ่มจาก การสกัดข้อมูล การค้นข้อมูล จากแหล่งข้อมูลต้นทาง (Data Extraction) จากนั้นก็ทำการเปลี่ยนรูปให้อยู่รูปแบบที่เหมาะสมหรือเป็นมาตรฐานตามที่กำหนดเอาไว้ สมมติว่ามีการนำข้อมูลมาจากหลายๆ แหล่งที่คิดว่าเป็นข้อมูลคล้ายๆกัน แต่ว่ามีการจัดเก็บที่ไม่เหมือนกันเลย ดังนั้นจะต้องนำมาจัดการให้มีความคล้ายกันเสียก่อน จึงจะนำไปใช้งานได้ (Transformation/Data Processing) สุดท้ายจึงจะนำข้อมูลไปจัดเก็บเอาไว้ที่ฐานข้อมูล เพื่อพักข้อมูลเอาไว้ (Staging) ก่อนหรือนำไปใช้งานเลยก็สุดแล้วแต่การออกแบบ

 

Data Extraction - การสกัดข้อมูล

 

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

 

-       แหล่งข้อมูลอาจจะมีข้อมูลจำนวนมาก ทำให้การลำเลียงข้อมูลนำมาในปริมาณทั้งหมดไม่ได้

-       การสกัดข้อมูลจะต้องทำให้เร็วที่สุด หมายความว่า บางครั้งข้อมูลมีการเปลี่ยนแปลงอยู่เสมอ

-       ไม่ควรทำการสกัดข้อมูลจากแหล่งข้อมูลบ่อยๆ เพราะจะเป็นการรบกวนระบบเครือข่ายของแหล่งข้อมูลต้นทาง

-       ควรทำการเปลี่ยนระบบให้น้อยที่สุด

 

 

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

 

วิธีในการถ่ายโอนข้อมูลในครั้งแรกจะเรียกว่า Full Load หรือ Initial Load หลังจากที่ระบบได้ดำเนินงานไปสักพักแล้วมีข้อมูลเพิ่มขึ้นหรือเปลี่ยนแปลง จะต้องทำการสกัดข้อมูลที่เพิ่มขึ้นหรือเปลี่ยนแปลงในครั้งถัดๆไปด้วย จะเรียกว่า Ongoing Incremental load โดยในขั้นตอนนี้จะมีเรื่องของการตั้งเวลา หรือกำหนดเวลาสำหรับการสกัดข้อมูลและทำการถ่ายโอนข้อมูล (Batch) เข้ามาเกี่ยวข้อง

 

จากการถ่ายโอนทั้ง 2 เหตุการณ์ ต่างเวลากันจึงจำเป็นต้องมีการพิจารณาถึงขั้นตอนการทำงานของวิธีการถ่ายโอนให้เหมาะสม โดยพิจารณาไปตามขั้นตอนดังนี้

 

Source Identificationระบุแหล่งข้อมูลและโครงสร้างของแหล่งข้อมูล เช่น Server อยู่ที่ไหน IP Address อะไร ฐานข้อมูลชื่ออะไร ตารางชื่ออะไร คอลัมน์มีอะไรบ้าง

 

Method for extractionการกำหนดวิธีในการสกัดข้อมูลสำหรับแต่ละแหล่งข้อมูล เพราะว่าในแต่ละแหล่งมีรูปแบบที่ไม่เหมือนกัน ความยากง่ายของระบบแตกต่างกัน จะเป็นการสร้างฟังก์ชันโปรแกรมเอง หรือ จะใช้เครื่องที่มีอยู่แล้วเพื่อความรวดเร็วในการทำงาน

 

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

 

Time windowการกำหนดช่วงเวลาที่เหมาะสม เช่นจะต้องทำการดึงข้อมูลหรือสกัดข้อมูลในช่วงกลางคืน อาจจะเป็นทุกเที่ยงคืน หรือ ตีหนึ่ง เพราะในช่วงกลางวัน มีการใช้งานจากผู้ใช้งาน โดยจะใช้การตั้งเวลาเป็นตัวจัดการ (Batch)

 

Job sequencing - การกำหนดลำดับการทำงาน จะต้องดูว่างานไหนควรทำในช่วงไหน ก่อน-หลัง เป็นขั้นตอน ซึ่งเป็นไปตามคิวหรือไม่ สามารถทำงานพร้อมกัน Asynchronous ได้หรือไม่ หรือต้องรอให้เสร็จเป็นลำดับ

 

Exception handingกำหนดวิธีการจัดการข้อมูลที่ไม่สามารถสกัดได้ อย่างเช่น Server Down หรือระบบเครือข่ายเกิดข้อผิดพลาด เป็นต้น ซึ่งจะทำให้ข้อมูลในช่วงเวลา นั้นหายไป

 

เทคนิคในการสกัดข้อมูลแบบต่างๆ

 

ก่อนที่จะทำการสกัดจำเป็นต้องทำความเข้าใจต่อโครงสร้างข้อมูลและการจัดเก็บข้อมูลในระบบเสียก่อน เพื่อประสิทธิภาพในการสกัด ซึ่งข้อมูลจะมีการเปลี่ยนแปลงอยู่เสมอ

 

โดยส่วนใหญ่แล้วข้อมูลที่ถูกเก็บในระบบที่กำลังใช้งานหรือดำเนินการอยู่ จะมีการเปลี่ยนแปลงอยู่เสมอ สามารถแบ่งออกได้เป็น 2 ประเภท คือ (1) ข้อมูลปัจจุบัน และ (2) ข้อมูลที่มีการเปลี่ยนแปลงไปตามกาลเวลา ดังนั้นเราจะต้องออกแบบและกำหนดเทคนิคที่ใช้ในการสกัดให้สอดคล้องกับชนิดของข้อมูลที่ถูกเก็บอยู่ในระบบ

 

สิ่งที่จะเป็นต้องคำนึงถึงของประเภทข้อมูล

 

(1)  ข้อมูลปัจจุบัน ส่วนใหญ่นั้นข้อมูลที่เป็นปัจจุบันที่แสดงถึงข้อมูล ณ เวลานั้นๆ เป็นข้อมูลแบบชั่วคราวสามารถเปลี่ยนแปลงได้ ไม่สามารถรู้ได้ว่าจะเปลี่ยนแปลงเมื่อไร ข้อมูลเหล่านี้จะยังคงไม่มีการเปลี่ยนแปลงไปจนกว่าจะเกิด Transaction หรือธุรกรรมทางธุรกิจ เช่น ชื่อ ที่อยู่ หรือยอดเงินในบัญชี เป็นต้น

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

 

เทคนิคการสกัดข้อมูลแบบทันที

 

การสกัดข้อมูลแบบทันที จะเกิดขึ้นเมื่อแหล่งข้อมูลมีการเพิ่มขึ้นหรือมีการเปลี่ยนแปลง โดยจะสกัดแบบทันทีมีวิธีการทำอยู่ 3 แบบได้แก่

 

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

2.     การสกัดข้อมูลโดยใช้ Database Triggers วิธีการนี้จะเป็นการสกัดจากระบบการดำเนินการจากฐานข้อมูลโดยใช้ Trigger หรือเขียนโปรแกรมขึ้นมา โดยโปรแกรม Trigger นั้นจะถูกเก็บอยู่ในฐานข้อมูลและถูกเรียกใช้งานก็ต่อเมื่อมีเหตุการณ์ที่เรากำหนดไว้ล่วงหน้า หรือเกิดเหตุการณ์ที่เกี่ยวข้องกับข้อมูลที่เราต้องการสกัด

3.     การสกัดข้อมูลโดยทำการสร้างแอปพลิเคชันไว้ที่แหล่งข้อมูล การสร้างโปรแกรมที่เกี่ยวข้อง การสกัดข้อมูลสำหรับเขียนข้อมูลลงไฟล์และฐานข้อมูล ในทุกๆครั้งที่มีการใช้งาน จะเพิ่ม ลบ แก้ไข ต่างๆขึ้นอยู่กับเงื่อนไขที่ต้องการเก็บข้อมูล โดยวิธีนี้แตกต่างจาก 2 วิธีแรก แต่ก็เป็นวิธีที่ใช้กันเยอะในหลายๆระบบ

 

เทคนิคการสกัดข้อมูลแบบรอเวลา

 

การสกัดในลักษณะนี้มักจะเรียกว่า Batch หรือ Scheduling จะเป็นการตั้งเวลาเอาไว้ เพื่อ เพิ่ม ลบ แก้ไขข้อมูล ซึ่งจะเกิดขึ้นตามเวลาที่ได้กำหนดเอาไว้ โดยมี 2 แบบได้แก่

1.     การสกัดข้อมูลโดยใช้ข้อมูลวันและเวลา วิธีการนี้จะต้องแนบ Time stamp เอาไว้ด้วยเสมอเพื่อเป็นตัวบอกว่ามีการ เพิ่มหรือแก้ไขลงในฐานข้อมูลไปเมื่อไร โดยใช้ช่วงเวลาที่แน่นอน

2.     การสกัดข้อมูลโดยการเปรียบเทียบไฟล์ วิธีการนี้สามารถเรียกได้อย่างหนึ่งว่า snapshot differential technique เป็นการเปรียบเทียบไฟล์ข้อมูลที่ได้จากการสกัดข้อมูล 2 ครั้งล่าสุด ถ้าคลังข้อมูลทำการสกัดข้อมูลวันละ 1 ครั้ง โดยมีขั้นตอนว่า จะเริ่มสกัดข้อมูลในวันปัจจุบันแล้วสำเนาเก็บไว้แล้วนำไปเปรียบเทียบกับข้อมูลก่อนหน้า เพื่อเปรียบเทียบ เราจะทราบถึงข้อมูลที่มีการเปลี่ยนแปลง เพราะเกิดความแตกต่างระหว่างข้อมูลทั้ง 2 ครั้ง

 

 

Transformation การเปลี่ยนแปลง/ เปลี่ยนรูปข้อมูล

 

ในการเปลี่ยนแปลงข้อมูลนั้น ขั้นตอนนี้จะเริ่มทำงานก็ต่อเมื่อข้อมูลที่ได้รับมาจากขั้นตอนการสกัดนั้นยังไม่มีคุณภาพเพียงพอ หรือยังไม่เป็นมาตรฐาน คำว่าไม่มีคุณภาพเพียงพอหรือไม่เป็นมาตรฐานจากที่เขียนไว้ตอนต้นแล้ว ความหมายก็คือ อาจจะยังมีข้อมูลไม่ครบถ้วนหรือ ข้อมูลที่ได้มาจากหลายๆแหล่งมีความสัมพันธ์กันแต่อาจจะไม่ตรงกันซึ่งจะต้องนำมาตรวจสอบความถูกต้องเสียก่อน ซึ่งในขั้นตอนนี้จะมีหน้าที่ในการทำความสะอาดข้อมูล(Data Cleansing/ Data wrangling)  และ รวมข้อมูลทำให้ข้อมูลเป็นมาตรฐานตามที่กำหนด

 

ดังนั้นก่อนที่จะทำการเปลี่ยนแปลงข้อมูลจะต้องเข้าใจถึงโครงสร้างและแหล่งของข้อมูล เทคนิคต่างๆที่ใช้ในการเปลี่ยนแปลงข้อมูลเสียก่อน  ซึ่งการเปลี่ยนแปลงข้อมูลสามารถแบ่งเป็นขั้นตอนย่อยๆ ได้หลายขั้นตอนดังนี้

 

Selection – สำหรับ Data Engineer หรือคนที่เคยใช้ SQL คงจะคุ้นเคยกันดีอยู่แล้ว ซึ่ง Select ก็คือการเลือกกลุ่มข้อมูลบางกลุ่มจากแหล่งข้อมูล Selection เป็นขั้นตอนหนึ่งในการสกัดข้อมูล ในบางกรณีโครงสร้างของข้อมูลก็อาจจะไม่เหมาะในการสกัดข้อมูล อาจจะต้องทำการสกัดใหม่อีกครั้งแล้วค่อยเลือกข้อมูลเพื่อทำการเปลี่ยนแปลง

 

Splitting/Joiningการแบ่งส่วนของข้อมูล บางครั้งข้อมูลมาเป็นชุด โดยในแต่ละชุดจะรวมข้อมูลที่แตกต่างกันอยู่โดยใช้ อักขระอักษรบางตัวมากำหนดในการแบ่ง ยกตัวอย่างเช่น 2021-01-01 ซึ่งเราเข้าใจกันเป็นมาตรฐานอยู่แล้วว่า ถ้าข้อมูลมาในรูปแบบที่ยกตัวอย่าง เป็นวันเดือนปีแน่นอน แล้วกั้นด้วยตัวอักขระ Dash (ต้องเข้าใจข้อมูลหรือมีการตกลงกันในการกำหนดรูปแบบ อาจจะเป็น พ.ศ. หรือ ค.ศ.)

 

Conversionการทำให้ข้อมูลเป็นมาตรฐานเดียวกัน และทำให้ field ต่างๆเข้าใจได้ง่ายขึ้น

 

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

 

Enrichmentการจัดแจงข้อมูลของ column ที่มีอยู่ใหม่ และทำให้เข้าใจได้ง่าย ทำให้มีประโยชน์มากขึ้น เช่น อาจจะใช้ 1 column ที่มีข้อมูลสร้างมุมมองขึ้นใหม่ ก่อนที่จะป้อนข้อมูลไปยังคลังข้อมูล

 

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

 

Decoding of Fieldsการถอดรหัสที่อาจเกิดขึ้นจากแหล่งข้อมูลหลายแหล่ง เราอาจจะพบข้อมูลที่เป็นรหัส เช่น เพศ เป็น 1 และ 2 หรือ M และ F หากพบเจอรหัสลักษณะนี้ เราจำเป็นต้องถอดรหัสลับและเปลี่ยนข้อมูลเหล่านั้นให้เป็นข้อมูลที่ผู้ใช้สามารถเข้าใจ

 

Calculated and Derived Valuesการคำนวณหรือหาผลสรุปของข้อมูลและการนำข้อมูลเหล่านั้นไปใช้ เราจะต้องทำการคำนวนก่อนที่เก็บข้อมูลลงในคลังข้อมูล

 

Splitting of Single Fieldsการแยกข้อมูลที่รวมอยู่ใน column เดียวออกจากกันเพื่อเพิ่มประสิทธิภาพในการทำงานของระบบ ยกตัวอย่างเช่น ข้อมูลที่อยู่ บางระบบเก็บ จังหวัด เขต รหัสไปรษณีย์เอาไว้ใน column เดียวกัน เมื่อนำไปใช้งาน เช่นการ ค้นหา Search ก็จะทำได้ยาก

 

Merging Informationการผสานข้อมูลที่มีรายละเอียดแต่ละส่วนกระจายอยู่หลายแหล่งเข้าด้วยกัน ยกตัวอย่างเช่น ข้อมูลเกี่ยวกับสินค้า อาจจะมาจากหลายสาขาแต่มีความอธิบายลักษณะจากแหล่งเดียวกัน

 

Character set conversion – การแปลงชุดข้อมูลที่เป็นตัวอักษรให้เป็นมาตรฐาน เพื่อใช้ในการจัดเก็บข้อมูลในคลังข้อมูล บางครั้งเราอาจจะเจอข้อมูลที่มีการเข้ารหัสที่ไม่สามารถอ่านออกได้ จะต้องแปลงข้อมูลให้อยู่ในลักษณะที่มนุษย์เข้าใจ

 

Conversion of Units of Measurements - การแปลงหน่วย หลายๆบริษัทที่กระจายการทำธุรกิจในหลายๆประเทศ หน่วยต่างๆจะต้องนำมาคิดพิจารณาเพื่อเปลี่ยนแปลงค่าให้ตรงกันด้วย

 

Date/Time Conversionการแปลงหน่วยของวันและเวลาให้อยู่ในมาตรฐานเดียวกัน เช่น 12/12/2021 กับ 12 ธันวาคม 2564 ทำให้เป็น Format เดียวกัน

 

Key Restructuringการสร้างคีย์ใหม่แทนที่ของเดิม เช่น การแสดงโค้ดของสินค้าซึ่งถูกกำหนดโดยสามารถบอกถึงแหล่งที่มาได้และมีความซับซ้อน อาจจะกำหนดเป็น Primary key ถ้าสินค้ามีการเคลื่อนย้ายในฐานข้อมูลก็อาจจะทำให้เกิดปัญหากับระบบเดิม

 

Deduplicationการขจัดความซ้ำซ้อนของข้อมูล ตัวอย่างเช่น มีการจัดเก็บข้อมูลลูกค้ามีการเก็บเอาไว้หลาย Record แต่สำหรับคลังข้อมูลจะต้องเก็บเอาไว้เพียงข้อมูลเดียวเพื่อลดความซ้ำซ้อนลง

 

 

Loading – การถ่ายโอนข้อมูล

 

เมื่อผ่านกระบวนการทั้ง 2 ขั้นตอนที่ผ่านมาแล้ว เราจะทำการถ่ายโอนข้อมูลที่จัดการ ทำความสะอาดข้อมูล (Data Cleansing/ Data wrangling) เปลี่ยนแปลงข้อมูล (Transform) และ ประมวลผลข้อมูลเป็นที่เสร็จสิ้น (Data Processing) เราก็จะทำการโอนถ่ายข้อมูลเข้าสู่คลังข้อมูล เป็นขั้นตอนสุดท้ายของ อีทีแอล โดยในขั้นตอนนี้จะต้องหาเวลาที่เหมาะสมที่จะนำข้อมูลเข้า เพื่อไม่กระทบต่อการทำงานของระบบการดำเนินงานของระบบคลังข้อมูล ซึ่งวิธีการถ่ายโอนข้อมูลจะมีลักษณะของการส่งข้อมูลอยู่ 3 ลักษณะ หรือ คนละช่วงเวลา คนละเหตุการณ์ได้แก่

 

Initial Load

การโอนข้อมูลจากแหล่งข้อมูลไปยังคลังข้อมูลครั้งแรก สามารถถ่ายโอนข้อมูลได้ภายในครั้งเดียว สามารถใช้วิธี load ในการถ่ายโอนข้อมูลได้โดยตรง แต่ถ้าทำการแบ่ง Initial ออกเป็นการทำงานหลายๆ ครั้งเราจะต้องใช้วิธี load ในการถ่ายโอนข้อมูลครั้งแรกแล้วใช้วิธีการ append ในการถ่ายโอนข้อมูลในครั้งถัดๆไป

 

Incremental load

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

 

Full refresh

การลบข้อมูลทั้งหมดออกจากคลังข้อมูลแล้วทำการโอนข้อมูลที่ล่าสุด ลงไปในคลังข้อมูล ซึ่งการถ่ายโอนข้อมูลใหม่จะเหมือนกับการทำ Initial load อีกครั้ง

 

ข้อควรระวัง

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

 

1.     อาจจะทำให้สามารถถ่ายโอนแบบขนานได้

2.     อาจจะสำรองข้อมูลเอาไว้ก่อนแล้วจึงถ่ายโอนส่วนที่สำคัญลงคลังข้อมูล

 

 

จากขั้นตอนพื้นฐานของ อีทีแอลนั้นซึ่งกระบวนการ เริ่มจาก การสกัดข้อมูล, การประมวลผลข้อมูล เช่น การรวบรวมข้อมูลเข้าด้วยกัน การแยกข้อมูล การทำความสะอาดข้อมูล การปรับรูปแบบของข้อมูลต่างๆ หลังจากประมวลเบื้องต้นเป็นที่เรียบร้อย ทำการโอนข้อมูลที่ได้จากการประมวลผลเข้าสู่คลังข้อมูล นั้นทั้งหมดนี้ มีเทคนิคที่ควรเรียนรู้อีก 2 ประเภท คือ

1.     สถาปัตยกรรมการใช้ Staging area ในการสกัดข้อมูล

2.     สถาปัตยกรรมการสกัดข้อมูลโดยใช้หน่วยความจำ

 

 

สถาปัตยกรรมการใช้ Staging Area ในการสกัดข้อมูล คืออะไร

 

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

 

สถาปัตยกรรมการสกัดข้อมูลโดยใช้หน่วยความจำ

 

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

 

สรุป สำหรับเนื้อหาบทความนี้เป็นส่วนหนึ่งเล็กๆของประสบการณ์ของผู้เขียนด้านการทำระบบที่ยุ่งเกี่ยวกับข้อมูล สามารถนำมาใช้ Data Engineer ได้ และเรียบเรียงมาจากการเนื้อหาการออกแบบระบบคลังข้อมูล ซึ่งจะเห็นว่า ถ้าทำงานด้าน Data Science ส่วนที่สำคัญและขาดไม่ได้ก็คือด้านการทำระบบ


บทความนี้เป็นบทความฟรีที่ผู้เขียนรวบรวมไว้เพื่อเป็นองค์ความรู้ อยากให้ช่วยกด google ads ที่ผู้อ่านเห็น อย่าได้เลื่อนผ่านช่วยสร้างรายได้ให้แก่ผู้เขียนด้วยนะครับ 


Download File บทความนี้


ติดต่อสอบถาม พูดคุยแลกเปลี่ยนกันได้ที่ Fanpage

 

Ref : การออกแบบคลังข้อมูลบทที่ 8 การสกัด การเปลี่ยนแปลงและการถ่ายโอนข้อมูล อ.โกเมศ อัมพวัน คณะวิทยาการสารสนเทศ ม.บูรพา

แวะมาทักทายกันได้
donate