พี่ทอย ข้อมูลใน Table นี้เก็บแบบไหนบ้าง มีข้อมูลกี่ Rows แล้ว ?
เดี๋ยวพี่จะเล่าให้ฟังๆ
Google Big Query เป็น Tools ที่ทางทีมใช้งานบ่อยเป็นอันดับ 1 เนื่องจากความง่ายของการ Query ด้วย window function หรือแม้กระทั่งการเขียน Stored Procedure ก็ง่ายแค่ไม่กี่บรรทัด และยังมีข้อมูลที่ค้นหาเกี่ยวกับวิธีการ query data มากมายทั้งบน Stackoverflow ,github หรือแม้กระทั่ง thread ของ Google เองก็ตาม ทำให้ Bigquery ได้รับความนิยมอย่างมาก
วันนี้เราจะมาทำความเข้าใจเกี่ยวกับวิธีการ Query ข้อมูลพื้นฐานบน Dataset และ Table กัน ซึ่งหลายๆคนอาจจะประสบปัญหาเกี่ยวกับ spec ของการเก็บข้อมูล ความยุ่งยากในการทำ ER Diagram และการจัดการ Table ต่างๆให้เป็นระเบียบ วันนี้เราจะมาสาธิตวิธีการ Query แบบง่ายๆ ให้ดูกันดังต่อไปนี้ครับ
SELECT
*
FROM
[Project ID].INFORMATION_SCHEMA.SCHEMATA
เราสามารถได้ข้อมูลเกี่ยวกับ Metadata ของ Dataset ที่ถูกสร้างขึ้น ช่วงเวลาที่ถูกสร้างภายใน Zone ที่เราจัดเก็บ Google Bigquery เอาไว้ หรือ สามารถใช้ Project ID แทนการใช้ region-(zone) ได้ตามภาพตัวอย่าง และสามารถระบุจำนวน Schema หรือ Dataset ได้ว่ามีจำนวนเท่าใด ใครเป็นเจ้าของ และมีการแก้ไขครั้งสุดท้ายเมื่อไร
*ข้อจำกัดก็คือ เราต้องมั่นใจว่าเราได้รับสิทธิ์ในการ Query ข้อมูลระดับ admin , dataEditor ,dataOwner หรือ dataViewer ในระดับของ Project Level เท่านั้น
ข้อมูลที่เราได้มาจะอยู่ในรูปแบบ Query Result ซึ่งจะมีรายละเอียดเกี่ยวกับ Dataset เช่น เวลาที่มีการสร้าง Dataset , เวลาที่มีการอัพเดทข้อมูลของ Dataset ครั้งล่าสุด รวมถึงคำสั่งที่ใช้ในการสร้าง Dataset ชุดนั้นอีกด้วย
SELECT
*
FROM
[Project ID].[DataSet ID].__TABLES__
เราสามารถได้ข้อมูลเกี่ยวกับ Table ทั้งหมดใน Dataset ได้ทันที หลังจาก Query ชุดนี้ทำงาน โดยจะมีรายละเอียดชื่อ Table , จำนวนคอลัมน์ , จำนวนแถวของข้อมูล ขนาดของข้อมูล และข้อมูลอื่นๆ เช่น การสร้าง TABLE และการอัพเดท Table ครั้งล่าสุด ซึ่งจะเป็นหน่วยแบบ Microseconds นอกจากนี้ยัง รวมถึงการระบุประเภทของตาราง 1 คือ Physical Table และ 2 คือ View Table
ตัวอย่างที่ query แสดงให้เห็นว่า เรามีจำนวน Table ทั้งหมด 2 ตัว และ มีการระบุเวลาสร้าง และเวลาการอัพเดทล่าสุด ซึ่งจะแตกต่างกับข้อมูลชุดที่เป็น Dataset ตามเคสด้านบน เมื่อมีการอัพเดทข้อมูลในตารางใด ตารางนึง หรือมีการเปลี่ยนการตั้งค่าของ dataset ก็จะส่งผลต่อ dataset metadata ด้วย ในที่นี่จะกล่าวเฉพาะส่วนที่เป็นของตารางจะมีข้อมูลที่แตกต่างกับ dataset information คือมีการนับจำนวนแถวของข้อมูล และขนาดของข้อมูลที่เราทำการเก็บอยู่ใน Big Query เพื่อใช้ในการประเมินงานที่เรากำลังจะต้องทำในอนาคต รวมถึงการคำนวณค่าใช้จ่ายอีกด้วย
SELECT
*
FROM
[Project ID].[DataSet ID].INFORMATION_SCHEMA.COLUMNS
เราสามารถเรียกใช้คำสั่ง INFORMATION_SCHEMA.COLUMNS ในการเรียกแสดงผลรายละเอียดของตารางที่เราต้องการใช้งานได้ โดยเมื่อรันคำสั่งดังกล่าวจะได้ชื่อคอลัมน์ ตำแหน่ง การระบุค่าว่าง ประเภทของข้อมูล ฯลฯ ซึ่งทำให้เราเรียกใช้งาน หรือจัดการทำในรูปแบบของ ER Diagram เพื่ออธิบายผู้ใช้งานคนอื่นๆ ได้ง่ายขึ้น และประหยัดเวลาไปได้มากๆ
ตัวอย่างข้อมูลที่ได้มาเบื้องต้น บอกเราว่า dataset ชุดนี้มีชื่อว่า 'mydataset' ที่มีตารางทั้งหมด 2 ตาราง ได้แก่ customer_test และ customers ที่มีชื่อคอลัมน์ที่แตกต่างกัน รวมถึง Data type ที่ไม่เหมือนกัน ซึ่งเราสามารถดูได้หลายตารางพร้อมๆกัน โดยที่ไม่ต้องไปจิ้มหน้าต่าง Details ของแต่ละ table ให้เสียเวลาอีกต่อไป
SELECT
*
FROM
[Project ID].[DataSet ID].INFORMATION_SCHEMA.ROUTINES
เราสามารถเรียกใช้คำสั่ง INFORMATION_SCHEMA.ROUTINES สำหรับการแสดงคำสั่ง Store Procedure ที่เรากำลังให้มีการทำงาน Query ที่ซับซ้อน รวมถึงการรับ พารามิเตอร์เพื่อใช้สำหรับการสร้างชุดคำสั่ง Query แบบมีเงื่อนไข และการ query แบบเป็นลำดับขั้นตอน (Sequence query)
การใช้งานคำสั่ง Bigquery Information Schema ยังมีคำสั่งอีกมากมายที่เราสามารถเรียกใช้งานได้ ตัวอย่างที่เรายกมาให้ดูนั้นมีโอกาสจะได้ใช้งานบ่อยมากกว่าคำสั่งอื่นๆ แน่นอน ดังนั้น หากใครต้องการศึกษาเกี่ยวกับ Bigquery Information schema เพิ่มเติม ก็สามารถศึกษาได้ที่ปุ่มด้านล่างได้เลยครับ
Share your experience with this Blog