,

Data quality check & Data profiling | Data management with Dataplex on GCP

ตรวจสอบคุณภาพของข้อมูล(Data quality check)และการทำรายละเอียดเกี่ยวกับข้อมูล (Data profiling) ผ่าน GCP Dataplex

Say no to garbage data

Why Data Quality?

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

ในบทความก็เลยอยากอธิบายเบื้องต้นว่า Data quality คืออะไร Data profile คือยังไง แล้วก็จะพาทดลองทำ Data quality check บน GCP Dataplex


ประเภทของ Data quality

  1. Completeness = ความบริบูรณ์ของข้อมูลเช่นมีข้อมูลหายไหมมีครบหรือเปล่าเป็น Null ไหม
  2. Validity = ความสมบูรณ์ หรือความถูกต้องของข้อมูล เช่นข้อมูลวันที่เราต้องให้เป็น YYYY/MM/DD แต่กลายเป็นว่าพบเจอ 11/11/2024 อันนี้ก็จะไม่ถูกต้องตามที่เราต้องการ Not valid
  3. Uniqueness = ความเป็นได้อย่างเดียว หรือก็คือการที่ข้อมูลของเราจะต้องไม่มีการซ้ำกันของข้อมูล ส่วนใหญ่ก็อาจจะไปใช้กับ ID ต่างๆที่ต้องไม่มี Duplicate
  4. Consistency = ความสอดคล้อง เช่นต้นทางมายังไงสิ่งที่อยู่ปลายทางควรไปในทางเดียวกัน ตัวอย่างก็เช่น ข้อมูลพนักงานที่เป็นบ้านเลขที่ ในระบบ HR เป็น 11/12 แต่ปรากฏว่าพอมาดูอีกทีปลายทางนั้นเป็น 11/13 อันนั้นก็ไม่ถูกต้องจะต้องเป็น 11/12 เหมือนต้นทาง
  5. Timeliness = ข้อมูลอยู่ในช่วงเวลาที่ถูกต้องไหมเช่น ข้อมูลล่าสุดหรือเปล่า
  6. Accuracy = ความแม่นยำของข้อมูล เป็นการตรวจสอบข้อมูลว่ามีความเป็นไปหรือชุดข้อมูลนั้นถูกต้องไหม เช่นการตรวจสอบว่า ที่ว่ามีบาง record มีข้อมูลว่า Stock ของนั้นมีเหลือ 0 แต่ปรากฏว่าได้ขายออกไป 10 ชิ้นอันนี้ก็ไม่ถูกต้องแล้ว
ตัวอย่างเพิ่มเติม

แล้วจะวัดผลยังไง หรือจะตรวจสอบได้ยังไง?

การวัดผลของการทำ Data quality นั้น ตามรูปด้านบนก็จะเห็นว่าส่วนใหญ่นั้นจะใช้ค่า metric เป็นในรูปแบบเปอร์เซ็น โดยเป็นการนับจากข้อมูลทั้งหมด = 100% แต่ปัญหาคือแล้วใครละจะมาบอกว่าข้อมูลของเราควรตรวจสอบยังไง เรื่องนี้เป็นเรื่องที่ทุกทีมที่มีการใช้ข้อมูลควรใส่ใจร่วมกันไม่ใช่แค่ทีมใดทีมหนึ่งเช่น เอาไปเลยทีม Data engineer ไปคิดมาให้หน่อยควรมีอะไรบ้างแบบนี้ก็ไม่ถูก ทั้งที่ควรจะเป็นความร่วมมือของทุก Stakeholder โดยควรเริ่มจากทาง Bussiness ที่เป็นคนใช้งานข้อมูลว่าควรเป็นแบบไหนแล้วก็มาปรึกษากับทีมที่เป็น Technical เพื่อหาความเป็นไปได้ หลังจากนั้นสร้างตัวอย่างของกระบวนการทำ Data quality เผื่อดูผลลัพธ์ ในความเป็นไปได้

ตัวอย่างการทำ Assesment ของ Data quality

แต่เพราะฉะนั้นแล้วการที่เราจะเริ่มทำการประเมิน Data quality ได้เราก็ต้องรู้จักข้อมูลให้มากยิ่งขึ้นก่อน โดยเราสามารถทำผ่าน Data profiling ได้


Data profiling มาทำความรู้จักข้อมูลของตัวเองให้มากขึ้น

เราจะทำ Data quality check ได้ไงถ้ายังไม่รู้เลยว่าหน้าตาข้อมูลนั้นภาพรวมเป็นยังไงเป็น string หรือ int? length สั้น-ยาว? เป็นต้น

เราสามารถทำ Data profiling ได้ที่ Dataplex เช่นกัน โดยให้ไปที่ Dataplex แล้วเลื่อนลงไปที่ Profile ภายใต้ Govern

Dataplex data profile

ก็เริ่มทำการสร้าง Data profile ขึ้นมาในคำสั่ง Create data profile scan พอเข้ามาก็กำหนดค่าต่างๆ Display name เพื่อแสดงชื่อบนหน้า Data profile แล้วก็ทำการเลือกว่าจะเอา Table ไหนมาแสกนสามารถเลือกตรงๆได้ที่ Bigquery ได้เลยหรือจะเลือกจาก Table ใน Dataplex lakes ก็ได้ด้วย (ข้อมูลเพิ่มเติมเกี่ยวกับ Dataplex lakes อ่านได้ที่นี่ Dataplex lakes)

ในส่วน Scope เราสามารถเลือกได้ว่าจะทำการ Scan ข้อมูลทั้งหมดหรือเฉพาะที่เป็น incremental เท่านั้น แต่ในครั้งแรกเราควรเลือกเป็น Entire data ไปเลยก็ได้ และอีกที่ๆ สำคัญคือ Sampling size เนื่องจากการทำ Data profile ต้องมีการ Scan ข้อมูลทั้งหมดเปรียบเสมือนเราไป Select * เพราะงั้นแล้วถ้าข้อมูลใหญ่มากๆควรเลือก size ที่เหมาะสมตามขนาดไปอาจจะเป็น 10% 15 % ก็ทดลองดูได้ แต่ถ้าข้อมูลเราไม่ใหญ่มากอาจจะแค่ 1K — 10K row ก็พอที่จะใช้ All data ได้โดยที่ไม่เปลือง cost มากไป (แต่ก็นานนิดหนึ่งอยู่ดี😅)

Publishing แนะนำว่าควรมีเอาไว้เพื่อจะได้ดูผลลัพธ์ที่ Bigquery ได้แล้วก็ Schedule เป็น On-demand ก็เพียงพอถ้าข้อมูลเราไม่ได้มี Schema change บ่อยๆ แล้วก็ทำการเลือก สร้าง Table เพื่อเก็บผลลัพธ์การทำ Profiling เสร็จสิ้นแล้วก็กด Run scan ไปเลย

ผลลัพธ์ที่ได้จากการทำ Data profile

หลังจากได้ผลลัพธ์การทำ Data profile แล้วจะเห็นได้ว่า Column ไหน เป็นอย่างไร Top10 ค่าต่างๆ เปอร์เซ็นของการซ้ำกันของข้อมูลและก็สถิติอื่นๆ แต่ต้องบอกก่อนว่าการทำ Data profile นั้นจริงๆแล้วไม่ได้จำเป็นมากสำหรับการทำ Data quality check ใน Dataplex เพียงแค่การได้ทำ Data profile จะช่วยให้ Dataplex แนะนำ Rule ต่างๆในการทำ Data quality ได้มากขึ้น ถ้าเรารู้จักข้อมูลเรามากพอแล้วก็ทำ Data quality check ได้เลย


Data quality

มาเริ่มทำการตรวจสอบคุณภาพข้อมูล โดยการตรวจสอบคุณภาพของข้อมูลในทีนี้เราจะมาทำใน Data quality บน Dataplex โดยผมได้สร้าง Diagram เพิ่มขึ้นมาเพื่อจะได้เข้าใจได้ว่ารูปแบบการทำงานเป็นยังไง

จากนั้นมาทำความเข้าใจในส่วนประกอบกันก่อนว่าในการทำ Data quality check จำเป็นจะต้องมี สิ่งที่เรียกว่า Rules ซึ่งก็หมายถึงกฏ ที่คอยทำการตรวจเช็คข้อมูลนั้นซึ่งการจะสร้าง Rule เพื่อทำการตรวจสอบนั้นสามารถทำได้หลายรูปแบบโดยทาง Dataplex จะมี

  1. Profile base recommendation = กฏที่ทาง Dataplex แนะนำให้ตามที่เห็นจาก Data profile
  2. Built-in rule types = เป็นกฏที่มีให้เลยเป็นแบบ Built-in โดยก็จะเป็นการตรวจทั่วไปเช่น เช็คเรื่อง Uniqueness หรือ Completeness นั้นเอง
  3. SQL row check rule = คือการเขียน SQL ขึ้นมาเพื่อตรวจสอบในกรณีต้องมีการเช็คหลาย Column ใน Row เดียวกัน เช่นอยากจะตรวจว่า ยอดขายจะต้องไม่มากกว่า stock ก็จะเขีรยนได้เป็น “sold < stock_count”
  4. SQL aggregate check rule = จะเป็นการเขียนที่มีเรื่องการคำนวณเพิ่มขึ้นมาโดยสามารถเขียนได้หลายๆ Column ใน Row เดียวกัน เช่นอยากจะทำการเช็ค Validity ของอายุแล้วเราก็จะเขียนว่า “age = (YEAR(current_date) — YEAR(birth_date))”
  5. SQL assertion rule = โดยเราจะต้องเขียน Subquery เพื่อที่ระบบจะทำการเช็คผ่าน SELECT COUNT(*) FROM (sql statement) ซึ่งถ้าผลลัพธ์ได้ 0 ก็แสดงว่าผ่าน แต่ถ้าไม่ได้ 0 ก็จะกลายเป็นไม่ผ่าน ส่วนใน sql statement ผมจะยกตัวอย่างว่า select ID from table where length(ID) > 5 ถ้าผลลัพธ์ออกมาว่าได้เท่ากับ 0 row ก็แสดงว่า Pass ถ้ามากกว่า 0 ก็ Fail เพราะฉะนั้นกฏที่เราสร้างต้องคำนึงว่าถ้าจะให้ผ่านจะต้องมี row ที่ออกมาแค่ 0 row

หลังจากพอเข้าใจบ้างแล้วก็มาเริ่มสร้าง Data quality scan กันโดยไปที่ Data quality ในแท็บ Govern เช่นเคย แล้วกดไปที่ Create data quality scan แล้วก็กำหนด Display name, Table ที่เราต้องการตรวจสอบ Data quality จะคล้ายๆกับการทำ Data profile เลย แต่จะมีขั้นตอนที่สอง ที่เราจะต้องสร้าง Quality rules เข้าไปด้วยอย่างน้อยๆ สัก 1 กฏ ที่เหลือเราสามารถไปสร้างทีหลังได้ครับ ทีนี้ผมจะเลือก Completeness ในส่วนของ ID มาก่อนแล้วกัน โดยเป็นการเช็คว่าไม่ควรมี Null

ถ้าเราเลือกสร้าง Rule โดยใช้ Profile based recommendations ก็จะมีแนะนำเยอะแยะให้เลือกเลย

พอเราได้เลือกกฏได้แล้วก็อย่าลืมเลือกที่จะตั้งค่า Threshold ด้วย ซึ่งก็แล้วแต่ข้อตกลงที่มีของทีม เช่น ID ไม่ควรจะมี Null เลย เพราะงั้นค่า Threshold ควรเป็น 100% ถึงจะผ่าน จะกล่าวคือแม้มีแค่ 1 row ที่เป็น null โผล่มาก็จะ Fail ทันที Metric ตรงนี้ต้องดูตามกฏและข้อตกลงของทีมด้วยนะครับ

Threshold setting

เพิ่ม Rule ตามที่ต้องการแล้วก็อย่าลืมเลือกที่จะ Export result เก็บที่ Bigquery ด้วยเพราะเราจะทำการสร้าง Dashboard Data quality ด้วย และอีกสิ่งสำคัญคือ เราสามารถเพิ่ม Email ในการแจ้งเตือนได้ด้วย เช่นเมื่อ Data quality ของเรามี Fail เกิดขึ้นเป็นต้น

ตั้งค่าขั้นตอนสุดท้ายก่อนที่จะทำการ RUN SCAN

เราก็จะได้ Data quality ของเรามาแล้วและเมื่อกดเข้าไปดูก็จะพบว่า เราสามารถสั่งให้ทำงานแบบ manual ก็ได้โดยกดที่ RUN NOW หรือจะตั้งค่าตามรอบเวลา หรืออาจจะเป็นการส่งคำสั่งผ่าน API ก็ทำได้ ถ้าเราได้ทำการสั่งให้ทำงานแล้วเมื่อทำงานเสร็จสิ้น เราก็สามารถดูได้ว่า Rule ที่ตั้งไว้ผ่านหรือไม่

Passed ruled

แล้วถ้าเราอยากเห็นว่าเมื่อ FAIL จะเป็นยังไงมาลองกัน โดยผมจะใช้วิธีคือ สร้าง RULE ขึ้นมาเช็คว่าจำนวนตัวอักษรของ ID ต้องไม่เกิน 1 ตัว (ซึ่งมันจะต้องเกินอยู่แล้วละครับ อันนี้เพื่อการทดสอบเน้อ 😅😅)

การเพิ่ม RULE ก็ไปที่ MODIFY RULES แล้วก็เลือก ADD RULES ด้วยความที่ RULE ที่ผมจะสร้างนั้นไม่มีใน Recommand หรือ Basic built in ผมก็ใช้ตัวเลือก Sql Assertion Check เพราะเราจะมาเขียน Rule ที่ custom ขึ้นมาเอง

custom rules

เมื่อทำการ RUN NOW ปรากฏว่าได้ผลลัพธ์ว่า Fail ตามที่ต้องการจริงๆด้วย และก็จะมี Email ส่งไปหาเราด้วย(ตามที่เราตั้งค่าไว้)

Data quality email notification

คราวนี้เราจะมาสร้าง RULES ต่างๆเพิ่มเข้าไป เพื่อที่จะทดสอบแล้วก็เอาไปออก Dashboard กัน โดยผมจะเลือก RULES ผ่าน Recommendation data profile เพื่อที่จะได้เร็วยิ่งขึ้น เลือกมันทั้งหมดเลยละกัน 🤓

Adding more rules

พอได้ผลลัพธ์แล้วลองเช็คดูว่าการตรวจผ่านบ้างไหมและก็สุดท้ายไปที่ Table ที่เราทำการเลือกให้เป็น result table กัน

เราจะทราบได้ทันทีว่า Passed กี่ Rules และ Failed กี่ Rules
ตัวอย่าง Schema ของ Export result table จาก Data quality ที่เราได้สร้างเอาไว้

เราก็จะเอาข้อมูลใน Table นี้ไปออก Dashboard ที่ Looker studio เผื่อจะสามารถส่งต่อให้คนอื่นๆ หรือ Stakeholder เข้าใจได้ง่ายขึ้น

ตัวอย่าง Dashboard ที่ถูกสร้างจาก Export result data quality เนื่องด้วยทำแบบเร็วๆ อาจจะไม่สวยอะไรนักนะครับ

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

เพิ่มเติมเล็กน้อย ถ้าไม่ได้อยากให้เกิด vendor’s lock in มากเกินไป เพื่อนๆก็สามารถไปใช้เครื่องมือตรวจเช็คคุณภาพ Data quality ของหลายๆที่ได้ หรือเป็น open source อย่างเจ้า Great expectation ซึ่งเป็นที่นิยมมากๆ

Data quality เป็นสิ่งสำคัญมากๆ ที่จะช่วยให้เรามั่นใจได้ว่าข้อมูลนั้นไม่มีผิดเพี้ยนไปของต้นทาง และ มีคุณภาพที่ผ่านเกณฑ์ ที่ตั้งเอาไว้และพร้อมใช้งาน


Follow me here!

Linkedin:

https://www.linkedin.com/in/kriangsak-sumthong/

Facebook page:

https://www.facebook.com/profile.php?id=61563097228247

Medium:

https://medium.com/@puk.kriangsak

Website:

https://clouddatalabor.wordpress.com/

Please subscribe!

Leave a comment