BLOGS

เขียน Python บน BigQuery ด้วย Duet AI แบบล้ำ ๆ ฉบับจับมือสอน!

Thakorn.T • 23/11/2023
Google Cloud Solutions Specialist
Duet AI

BigQuery ถือว่าเป็น Data Warehouse ที่ล้ำสมัยมาก เสน่ห์ของมันคือสามารถตอบโจทย์งาน Data Analytics และ Machine Learning ได้อย่างครบครัน ซึ่งเราก็สามารถทำ DataOps ในการทำ ELT หรือทำ ML ในตัวด้วย SQL แต่ใครที่มีสกิลด้าน Python เพื่อทำ Use Case เหล่านี้ก็ไม่ต้อง Move หรือ Connect Data จากที่อื่นแล้ว เพราะ BigQuery สามารถเขียน Python ได้ในตัวด้วย BigQuery Studio

BigQuery Studio คืออะไร?

BigQuery Studio คือ Feature หนึ่งของ BigQuery ที่เป็น editor สำหรับเขียน Python ได้เหมือน Editor ที่เขียน SQL ซึ่งอยู่ในลักษณะ Notebook ที่ทุกท่านคุ้นเคยกัน โดยเบื้องหลังคือ Colab Enterprise ที่อยู่บน Vertex AI มา integrate ร่วมกับ BigQuery ได้อย่างไร้รอยต่อ

โดยผู้เขียนได้อธิบายความสามารถเบื้องต้นของ BigQuery Studio ไว้แล้วใน blog ก่อนหน้า ผู้อ่านสามารถเข้าไปอ่านได้ผ่าน Blog ต่อไปนี้ครับ

เริ่มต้นเขียน Python บน BigQuery กัน!

หลังจากที่ทุกท่านรู้จักกับ BigQuery Studio กับ Blog ที่แล้ว ก็พอจะเห็นความสามารถล้ำๆ ที่ BigQuery Studio ทำได้แล้วใช่ไหมครับ ดังนั้นเรามาลองเขียน Python บน BigQuery เป็น Step by Step กันดีกว่า โดยใน Tutorial นี้ ผู้เขียนสมมติว่าทุกท่านมี Google Cloud Project กันอยู่แล้วนะครับ

1. Login ไปที่ BigQuery ด้วย Google Account https://console.cloud.google.com/bigquery กดที่ Drop Down บริเวณ Tab ด้านบน เลือก Compose new Python Notebook ครับ

2. อีกช่องทางในการสร้าง Notebook เพื่อ Explore Table ที่เราสนใจ เราสามารถไปที่ Table นั้น ๆ แล้วกดที่ 3 จุด เลือก Query in > Python notebook ได้เลยครับ

3. สังเกตว่าเมื่อสร้าง Notebook แล้ว ไฟล์ Notebook จะปรากฎที่ Panel ทางซ้ายมืออัตโนมัติ ซึ่งในวันหน้าเราสามารถมาเลือก Notebook ที่เราเขียนไว้เพื่อ Explore หรือ Execute อีกครั้งได้ครับ

4. เราสามารถเปลี่ยนชื่อ Notebook เพื่อให้เหมาะสมกับงานที่เรากำลังทำอยู่ได้บริเวณใต้ Tab ครับ

5. ในขณะที่เข้ามาบน notebook ใหม่ ๆ จะยังไม่มี Resource ที่ใช้ Run Notebook ตัวนี้ กล่าวคือพวก CPU, Memory นั่นเอง สำหรับการจอง Resource เพื่อรัน Python Notebook ตัวนี้นั้น ทำได้ 2 วิธี คือ

  • กดปุ่ม ▶︎ เพื่อรัน Cell ดังกล่าวเลย ตัว Colab Enterprise จะจอง Resource ให้อัตโนมัติ
  • หรือกดที่ Connect to a Runtime

6. เมื่อมี Runtime แล้ว จะปรากฎ Resources ที่มุมขวาบน เป็น RAM และ Disk ดังรูปครับ จากนั้นเราสามารถกดรันแต่ละ Cell ได้โดยคลิกที่ ▶︎ หรือจิ้มที่ Cell ที่ต้องการแล้วกด Shift + Enter ก็ได้ครับ ซึ่งผู้เขียนอยากให้ผู้อ่านลองรันทุก Cell ใน Notebook นี้ดูครับ

7. เมื่อรันทั้ง Example 1 และ 2 ใน Notebook ผลลัพธ์ที่ได้จะแสดงผลในลักษณะตารางแบบ Pandas Dataframe ที่คุ้นเคยแล้วใช่ไหมครับ

แต่ถ้าเราสังเกตผลลัพธ์จากตัวอย่าง 1 และ 2 จะเห็นว่ามีการเขียนโค้ดในการอ่านข้อมูลจาก BigQuery ที่แตกต่างกัน ผู้อ่านหลายท่านคงสงสัยว่าผลลัพธ์ดูเหมือนกันแล้วมันต่างกันอย่างไรกันนะ? มาดูกันครับ

ตัวอย่างที่ 1

จะเป็นการใช้ Magic Command ของ Python Notebook ครับ %%bigquery จั่วหัวไว้ก่อน ซึ่งสูตรโกงนี้ทำให้เราสามารถ Pass ผลลัพธ์จากการ Query เข้าไปใน Pandas Dataframe เลย โดยไม่ต้องประกาศหรือ Import Library เพื่อมา Connect ให้ยุ่งยาก เรียกว่าประหยัดเวลาในการ Explore Data ได้มากโขเลยครับ

แต่ข้อแตกต่างคือ Query นี้จะทำงานทันทีแล้วผลลัพธ์จะถูกยัดใส่ Dataframe ที่ชื่อว่า Results แปลว่าทั้งตารางนี้อยู่บน Memory เรียบร้อยแล้วจะ Process อะไรต่อก็ใช้ข้อมูลบน Memory เหมาะกับชุดข้อมูลที่อาจจะไม่ใหญ่มาก ซึ่งสามารถเก็บบน Memory ได้เพื่อใช้ในการเล่นแร่แปรธาตุกับข้อมูลต่อ เป็นวิธีที่ Data Analyst หรือ Data Scientist อย่างเราคุ้นเคยครับ

ตัวอย่างที่ 2

จะเป็นการใช้ BigQuery DataFrames หรืออาจเรียกสั้น ๆ ว่า BigFrames ซึ่งเมื่อเราประกาศอ่าน table จาก BigQuery มานั้น ข้อมูลแต่ละ records จะยังไม่ได้ถูก Query เข้ามาบน Dataframe ใน Memory ของ Notebook แบบทันทีทันใด แต่จะถูก Query เมื่อเรา Execute โค้ดของเราที่ต้องการแสดงผลลัพธ์ออกมา คล้ายๆ RDD บน PySpark ครับ

ดังนั้นเราจะประหยัด Memory ได้และสามารถเรียกใช้ขุมพลังที่โหดที่สุดในโลก Data Warehouse คือ BigQuery ได้เต็มประสิทธิภาพครับ เหมาะกับ Table ที่มีขนาดใหญ่มากๆ ครับ

และเนื่องจากผู้เขียนอยากจะชวนคุยเรื่อง BigFrames ที่ทำให้ผู้อ่านสามารถเล่นแร่แปรธาตุข้อมูลได้ดีกว่าเดิมและได้ประโยชน์สูงสุด งั้นเดี๋ยวเรามาคุยกันใน Blog ถัดไปในเรื่อง BigFrames กันนะครับ 

ลองใช้ Duet AI ช่วยเขียน Python กัน

ผู้เขียนเข้าใจว่าทุกท่านสามารถสร้าง Python Notebook บน BigQuery ด้วย Step ข้างต้นได้กันแล้วและคงมีความรู้สึกเหมือนกันว่า “เขียน Python บน BigQuery ง่ายเกินไปไหม?” เพราะเมื่อก่อนเราต้องติดตั้ง Jupyter Notebooks กัน ไม่ก็ต้องใช้อีก Service มาต่อกันใช่ไหมครับ

ดังนั้นหัวข้อนี้ผู้เขียนอยากให้ทุกท่านสัมผัสกับความง่ายเข้าไปอีกขั้น ด้วยการเขียน Python แบบไม่ต้องโค้ดเลยแล้วกัน ให้ Duet AI ช่วยเขียนให้ที! ถ้าพร้อมแล้วเรามาเริ่มกันเลยครับ

1. เริ่มสร้าง Cell ใหม่ในการเขียนโค้ด โดยจิ้มที่ Cell ที่ 2 แล้วกด + Code หรือใช้คีย์ลัดด้วยการกดปุ่ม “b” ที่คีย์บอร์ด ก็จะได้ Cell ใหม่ว่างๆ มาต่อท้าย Cell ที่ 2 ครับ

2. เมื่อได้ Cell ใหม่ ลองกดที่ generate เพื่อ Launch ตัว Duet AI ที่ชาญฉลาดมาช่วยเราทำงานครับ

3. จะมีกล่อง Generate ขึ้นมาให้เราลอง Input Prompt ของเราได้เลยว่าต้องการ Generate อะไร แล้วรองรัน Cell นี้ดูครับ
Example Prompt: cout species records by island

4. จะได้ผลลัพธ์ดังที่ต้องการครับ ซึ่งเจ้า Duet AI ก็จะช่วยเราสร้างโค้ดหรือเป็นไกด์ไลน์ต่าง ๆ ในการเขียนที่ช่วยให้เรานำประยุกต์ใช้ในการ Explore Data ซึ่งหากเรา Prompt ดี ๆ  AI ตัวนี้ก็สามารถช่วยเราลดเวลาในการไปอ่าน Document หรือ Research บน Stackoverflow ได้ค่อนข้างมากเลยครับ แถมมันก็เข้าใจโค้ดที่เราเขียนมาตอนต้นได้อย่างน่าประหลาดใจอีกด้วย

5. ขอ Prompt ที่ดูซับซ้อนอีกหน่อย เช่น ทำเป็น Bar Chart แยกน้องเพนกวินแต่ละสปีชีย์ตามหมู่เกาะได้ไหม?​ .. ได้เลยครับ เดี๋ยวจัดให้
Example Prompt: count species records by island, show as multiple bar chart of each island

Duet AI ก็สามารถประมวลผล prompt ออกมาเป็นโค้ดและรันได้อย่างน่าสวยงามครับ

Conclusion

เป็นอย่างไรบ้างครับ การเขียน Python แบบล้ำ ๆ ด้วย Duet AI บน BigQuery เรียกว่าการที่เราใช้ BigQuery ก็สามารถปลดล็อคความสามารถที่ไรขีดจำกัด ช่วยให้นักทำข้อมูลอย่างเราง่ายขึ้น, เร็วขึ้น และประหยัด Cost ต่างๆ ได้ไปมาก ไม่ว่าจะ Effort หรือ Manday โดยผู้เขียนหวังว่าบทความนี้จะเป็นประโยชน์แก่ทุกท่านไม่น้อยครับ

หากสนใจบริการ, โปรโมชันพิเศษ หรือต้องการคำปรึกษาเพิ่มเติม
สามารถดูข้อมูลเพิ่มเติมได้ที่ https://www.tangerine.co.th/contact-us/

สอบถามข้อมูลเพิ่มเติม
Blog Form (#23)

ทั้งนี้ ข้าพเจ้าได้อ่านและศึกษารายละเอียด นโยบายการคุ้มครองข้อมูลส่วนบุคคลของบริษัท แทนเจอรีน จำกัด ที่ให้ไว้ที่ Tangerine Privacy Center โดยตลอดอย่างดีแล้ว