, ,

Bigquery data preparation | Clean data ให้พร้อมใช้ โดยไม่ต้องเขียน SQL เอง!

Preview feature ใหม่บน Bigquery ที่จะทำให้การ Clean Wrangle ข้อมูลเป็นเรื่องง่ายยิ่งขึ้น 🤔⁉️


  1. Introduction
  2. GCP Bigquery data preparation
  3. การใช้งาน Bigquery data preparation
  4. Key takeaway และ ข้อเสนอแนะ
    1. Key takeaway
    2. ข้อเสนอแนะ

Introduction

การทำงานกับข้อมูลขนาดใหญ่มีสิ่งหนึ่งที่ทำให้คุณๆและคุณ เสียเวลามากที่สุดคืออะไรรู้ไหมครับ ก็คือการ Clean ข้อมูลนั้นเอง เพราะการที่จะนำข้อมูลไปใช้นั้นถ้าข้อมูลของเราไม่ดี เมื่อนำไปออก Report dashboard หรือจะเป็นการ Train model ก็จะทำให้เกิด Output ผิดผลาดได้ และเราก็ยิ่งเสียเวลาไปอีก

“Without clean data, or clean enough data, your data science is worthless.” — Michael Stonebraker, adjunct professor, MIT

แต่ทุกครั้งที่เจอข้อมูลใหม่ๆ ถ้าเราทำงานอยู่ในสาย Data เราก็จะมีคำถามอีกว่าจะ Clean ข้อมูลยังไงดี เขียน SQL ในการ Clean ยังไง หรือทำไปแล้วก็เกิดเป็น Dataset หน้าตาแบบไหน ยิ่งถ้าเรายังมีประสบการณ์น้อย เราจะทำอะไรทีก็ต้องคิดเยอะ เพราะการเจอข้อมูลที่หลากหลายยังไม่มากพอ เลยทำให้ต้องคอยถาม Senior บ้างแหละ หรือ Co-worker บ้างในบางที

แต่มาในยุคนี้แล้ว ในยุคที่ Generative AI เฟื่องฟู ทำให้การทำงานของเราดียิ่งขึ้นไปอีก แต่ถ้าต้องเอาข้อมูลออกไปถามที่ Platform ต่างๆเช่นเอาข้อมูลไปถามที่เว็บ ChatGPT Gemini ก็มีโอกาศที่ข้อมูลเราหลุดไปได้ เพราะการนั้น มารู้จักกับ GCP Bigquery data preparation ที่จะช่วยให้การ Clean ข้อมูลนั้นง่ายขึ้น ไปกันต่อเลย🚀🚀

Most time consuming survey by Forbes: https://www.forbes.com/sites/gilpress/2016/03/23/data-preparation-most-time-consuming-least-enjoyable-data-science-task-survey-says/

GCP Bigquery data preparation

เมื่อทาง Bigquery เห็นโอกาศที่จะช่วยให้คนทำงานได้ใช้เวลาให้เป็นประโยชน์มากขึ้น รวดเร็วมากขึ้น และด้วยความที่ทาง GCP ก็มี AI ที่ทรงพลังอย่าง Gemini ก็เลยทำให้เกิด feature อย่าง Bigquery Data preparation ที่จะมี AI คอยแนะนำเราว่าในแต่ละ Column สามารถทำอะไรได้บ้าง เช่น เอา Row ที่มี Null ออก หรือแทนที่ค่า ทศนิยมหลายตำแหน่งให้เหลือสองตำแหน่ง เป็นต้น ยังมีอีกหลากหลายให้ใช้งานด้วย มาดูกันเลยดีกว่าทำได้ยังไง

ในตอนนี้ที่ได้เขียนบทความนี้ Bigquery data preparation ยังอยู่ใน Preview นะครับ


การใช้งาน Bigquery data preparation

ผมจะแนะนำการใช้งานเบื้องต้นว่าการทำงานของ Data preparation เป็นยังไงนะครับ โดยผมจะมี Table ที่ได้เอาข้อมูลสุดคลาสสิคอย่าง Titanic มาทำการทดสอบนี้นะครับ

อย่างแรกก่อนที่จะไปลองทดสอบ Data preparation (ต่อจากนี้จะขอย่อ Data preparation เหลือ Data prep นะครับ ยาวเกิ๊น แฮ่ๆ😅)

ให้ไปที่ Bigquery studio ซึ่งทุกคนก็น่าจะเห็นเจ้าตัว Data prep กันอยู่แล้วถ้ายังไม่เห็นไม่เป็นไรครับ เพราะยังอยู่ใน Preview หลายๆคนอาจจะยังไม่สามารถใช้งานเจ้าตัว Data prep ได้ ซึ่งจะเป็นที่เก็บ Data prep ของเราเอาไว้ที่นี้

มาเริ่มสร้าง Data prep โดยสามารถทำได้สองวิธีในการเริ่มใช้งาน

  1. ไปที่ Table ที่เราต้องการและคลิ๊กไปที่ Open in แล้วเลือก Data preparation
  2. เราจะต้องไปที่หน้า Welcome page ของ Bigquery studio ถ้าหาไม่เจอให้กดที่รูปบ้านด้านขวาบนครับ

    แล้วก็ทำการค้นหาชื่อ Table ที่เราต้องการ แล้วก็ Add as source

หลังจากที่เราได้มีการ Add data source แล้วเราจะได้เห็นกับหน้าที่เป็นข้อมูลในแต่ละ Column พร้อมกับมี Visualize ที่เป็น Histogram chart บน column ที่แสดงถึงข้อมูลภาพรวมที่มีอยู่ใน column นั้นๆ

ข้อมูลที่เราเห็นใน Data prep นี้จะเป็นเพียง Sampling data จากข้อมูลทั้งหมดใน Table ที่เราเลือก แต่ถ้าข้อมูลใน Table นั้นมีขนาดเล็กก็จะถูกนำเข้ามาโชว์ทั้งหมดด้วย

จากภาพเราจะเห็นว่ามีทั้งหมดสองหน้าต่าง ในส่วนของ Data และ ในส่วนที่เป็น Gemini suggestion ที่จะคอยช่วยเหลือและแนะนำเราว่าใน Column ไหนทำอะไรได้บ้าง หรือถ้าเราคลิ๊กไปเลือก column เจ้าตัว Gemini ก็จะแนะนำเฉพาะที่เกี่ยวกับ column นั้นๆให้

ต่อมาที่ผมจะทำก็คือจะเลือกไปที่ column “age” อย่างที่เราเห็นด้วยตาเปล่าในรูปด้านบนว่ามีข้อมูลที่เป็น null เพราะฉะนั้นลองมาให้ Gemini มาแนะนำดูว่าทำอะไรได้บ้างกับ column นี้

อย่างที่เห็น Gemini แนะนำมาว่า เอาเฉพาะ ข้อมูลที่อยู่ใน “age” ที่ไม่เป็น null และ ค่า มากกว่าหรือเท่ากับ 0 หรือถ้าอยากแก้ไขสูตรก็ทำได้โดยกดไปที่ EDIT เช่นเราอยากได้ ที่มากกว่า 0 แก้เสร็จแล้วก็กด Apply ได้เลย

โดยหลังจาก Apply แล้วก็ถูกนำเข้าไปที่ Applied step และเราสามารถดูได้ตลอดเวลาว่าเราได้เพิ่ม Step อะไรไปบ้างแล้ว

โดยเวลาที่เรา Apply step ไปแล้วที่หน้าต่าง Data นั้นก็จะถูก Clean ออกไปด้วย สังเกตจากรูปด้านบนได้ว่าข้อมูลที่เป็น null ได้หายไปแล้ว ที่นี้เราอยากจะเพิ่ม step อะไรก็ทำต่อได้เลยไม่ว่าจะเป็น เพิ่มเองโดยไม่ผ่าน Gemini หรือให้ Gemini Suggest ก็ได้ หรืออาจจะเป็นการ Prompt ไป ตรงๆก็ทำได้

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

ไปที่ +ADD STEP แล้วก็เลือก Destination แล้วก็ Save

เราสามารดู Graph ได้ด้วยว่าขั้นตอนของเราไปมายังไง

ที่สำคัญหลังจากเขียน Step ทุกอย่างเสร็จแล้ว จะมีสองสิ่งที่เราสามารถทำได้ด้วย

  1. Schedule การตั้งเวลาให้ data prep ทำงานตามที่ต้องการ
  2. Write mode การตั้งค่า การเขียนข้อมูลลงไปที่ Table ปลายทาง กดไปที่ MORE แล้วเลือก write mode จะมีให้เลือกประเภทการ Write ต่างๆ อย่าง Append, incremental หรือ Full refresh (default mode = Full refresh)

แต่ก่อนที่จะสั้งให้ RUN ได้นั้นเราต้องไปเพิ่ม Service account ให้กับทาง Data prep นี้ก่อน โดยไปที่ MORE เหมือนเดิมแต่ไปเลือกที่ Configure Run Now Experience แล้วก็เลือก Service account

เป็นอันเรียบ Data prep เราพร้อมทำงานแล้ว ก็เริ่มกด Run ได้เลย และ Table ที่เป็น Destination ก็ได้ถูกสร้างแล้ว

เท่านี้เราก็ได้ ขั้นตอนการจัดการข้อมูลของเรา หรือการ clean data โดยที่ไม่ต้องเขียน SQL เลยสักตัวเลย✨✨

โดยหลังบ้านของ data prep ก็เป็นการเอา Step ของเราที่ทำไว้ไปเปลี่ยน SQL สามารถไปดูที่ Job history ได้เลย


Key takeaway และ ข้อเสนอแนะ

Key takeaway

  • สิ่งที่เป็นสิ่งดีคือการที่เราสามารถทำงานได้รวดเร็วยิ่งขึ้นและด้วยพลังของ Gemini ทำให้ งาน clean data เป็นเรื่องที่สะดวกมากยิ่งขึ้น แล้วยังเห็นได้ทันทีเลยว่าเวลาที่เราเพิ่ม step อะไรไปก็แสดงผลให้เห็นได้ทันที✨

ข้อเสนอแนะ

  • ทุกครั้งที่เรากด Preview หรือ Apply จะเกิดการทำงานของเบื้องหลังทำการ Query เสมอ ทำให้เกิด Cost ด้วย
  • Region ที่ใช้งานทั้ง Source และ Destination ต้องอยู่ใน Region เดียวกัน
  • แต่มาดูสิ่งที่อาจจะเป็นเหตุผลที่เราอาจจะไม่ได้ใช้ Data prep ก็ได้ โดยตอนนี้ Data preparation ยังเป็น preview อยู่ทำให้ยังไม่มี Cost เกิดขึ้น แต่ถ้าหมด Preview แล้วเราจะสามารถใช้ได้ก็ต่อเมื่อเราไปซื้อ Gemini code assist enterprise (19 USD per month per user)หรือ ไปเพิ่ม Reservation ให้เป็น Bigquery enterprise plus edition ($0.1 slot/hour)

ref: https://cloud.google.com/bigquery/docs/data-prep-introduction

Have a good day data folk!

Please subscribe!

Leave a comment