ETL ต้องตรวจสอบอะไรบ้างเพื่อความมั่นใจในโอน ย้ายข้อมูล

ETL (Extract, Transform, Load) ประโยชน์ที่สามารถนำไปประยุกต์ใช้

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

============================

ETL Tools ตอนนี้มีอยู่หลายค่ายหลายโปรแกรม ทั้งฟรีและขาย สามารถนำมาประยุกร์ใช้งานได้ ตัวอย่างเช่น

  • Microsoft SQL Server Integration Services (SSIS)
  • Oracle Data Integrator
  • Oracle Warehouse Builder
  • IBM – Infosphere Information Server
  • Pentaho Data Integration
  • Apache Nifi 
  • SAP – BusinessObjects Data Integrator
  • Sybase ETL

==========================

ต้องตรวจสอบอะไรบ้างเมื่อท่านต้องทำ ETL

1. Metadata Testing เป็นการทดสอบส่วนประกอบของข้อมูลพวกชนิดของข้อมูล ขนาดและเงื่อนไขต่างๆของข้อมูล
2. Data Completeness Testing ความสมบูรณ์ของข้อมูลต้องสุ่มทดสอบข้อมูล เช่น คีย์ที่ใช้เชื่อมข้อมูลระหว่างตารางไม่ควรจะเป็น NULL
3. Data Quality Testing คุณภาพของข้อมูล เช่นข้อมูลชื่อประเทศเดียวกันต้องสะกดเหมือนกันทั้งหมด การหาข้อมูลซ้ำซ่อนแบบไม่ปกติ
4. Data Transformation Testing ดักจับ error ระหว่างการถ่ายโอนข้อมูล
5. ETL Regression Testing ทดสอบเมื่อมีการเปลี่ยนแปลงกระบวนการในการทำ ETL
6. Reference Data Testing การทดสอบกับข้อมูลที่เป็นสากลทั่วไปใช้กัน เช่น ชื่อ ตำบล อำเภอ จังหวัด ควรต้องตรงกันกับข้อมูลของราชการเท่านั้น
7. Incremental ETL Testing เป็นการทดสอบโดยการค่อยๆเพิ่มกระบวนการถ่ายโอนข้อมูลเป็นขั้นๆเพื่อหาปัญหาของการถ่ายโอน
8. ETL Integration Testing เป็นการทดสอบภาพรวมของการทำงานรวมกันของ module เงื่อนไขต่างๆในการถ่ายโอนข้อมูล
9. ETL Performance Testing เป็นการประเมินเรื่องเวลาและปริมาณข้อมูลเพื่อจะได้ทราบถึงระยะเวลาการทำงานที่ควรจะเกิดขึ้นกับข้อมูลปริมาณที่ต้องการ

Metadata Testing สิ่งที่ต้องตรวจสอบ

  1. Data Type ชนิดของข้อมูลระหว่าง Source และ Target 
  2. Data Length ความยาวของข้อมูลแบบต่างๆ เช่น String Char Varchar
  3. Index / Constraint ตรวจสอบว่ามีการกำหนดข้อจำกัด และดัชนีที่เหมาะสมบนตารางฐานข้อมูลตามข้อกำหนดที่ออกแบบได้ ตรวจสอบว่าคอลัมน์ที่ไม่สามารถเป็นค่าว่างมีข้อ จำกัด “NOT NULL” ตรวจสอบว่ามีการจัด Index หรือ Key ต่างๆครบถ้วนหรือไม่
  4. ช่วงของข้อมูล เช่น พ.ศ.ต้องมีช่วงประมาณไหน เพื่อหาความผิดปกติ ช่วงของวันที่ต่างๆ
  5. Build in Function ต่างๆรอบรับความต้องการที่จะดำเนินการหรือไม่ เช่น Oracle Build in funciton TO_DATE จะรองรับข้อมูลวันที่เป็น ค.ศ. เท่านั้น
  6. การตั้งชื่อที่สื่อได้ดีเป็นที่เข้าใจทั่วกัน
  7. เงือนไขหรือ logic การเพิ่ม Compute Column ที่เหมาะสม
  8. การแปลงข้อมูลไม่ควรเกิดจากหลายๆแหล่งเพราะจะทำให้การแก้ไขทำได้ลำบากมากขึ้น เช่น มีการสร้าง View มาหลายชั้นก่อนที่จะมาผ่านกระบวนการ ETL หรือเมื่อผ่านกระบวนการ ETL แล้วค่อยไปคำนวณหรือจัดการข้อมูลอีกขั้นตอนต่อๆไป 

การตรวจสอบการเปลี่ยนแปลงของข้อมูลของการทำ ETL แต่ละรอบ

1.Track changes ตรวจสอบ metadata ตามเวลาที่กำหนด ทั้ง Source และ Target และส่วนของการพ้ฒนา

2.Compare table metadata ทั้ง Source และ Target และส่วนของการพ้ฒนา ชื่อของตารางและColumn  ขนาดของ Column

3.Compare column data types

4.ตรวจสอบ Look Up table ต่างๆว่าข้อมูล Update ให้เหมาะสมและครบถ้วนแล้วหรือไม่

Data Completeness Testing

  1. Record Count Validation เป็นพื้นฐานคือนับจำนวน records ต้นทาง ปลายทาง โดยลอง Group by ข้อมูลแบบต่างๆและที่สำคัญตรวจสอบ Null Values ข้อมูลสำคัญๆ
  2. Column Data Profile Validation ค่าที่สามารถนำมาทดลองได้คือเปรียบเทีบย unique values, max, min, avg, max length, min length ค่าของ Column และ null values ของ Column
  1. เปรียบเทียบภาพร่วมของข้อมูลทั้งหมดของ Source และ Target เช่น การนับจำนวนตามกลุ่มที่เหมาะสม

Data Quality tests ตรวจสอบคุณภาพของข้อมูล

  1. Duplicate Data Checks
SELECT fst_name, lst_name, mid_name, date_of_birth, count(1) FROM Customer GROUP BY fst_name, lst_name, mid_name HAVING count(1)>1
  1. Data Validation Rules  ธรรมชาติของข้อมูลในแต่ละ Column ค่าควรเป็นอย่างไร เช่น ช่วงของข้อมูลอายุคนไม่ควรจะเกิด 120 เป็นต้น ช่วงของข้อมูลแบบวันที่ควรจะไม่เกินเท่าไรในแต่ละช่วงข้อมูล
  2. Data Integrity Checks
    1. นับค่า null ของ foreign key ในตารางลูก
    2. นับค่าที่ไม่มีของ foreign key ในตารางลูก

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