6 SQL Queries ที่ Data Engineer มักใช้งานอยู่บ่อย ๆ

15-ธ.ค.-21

คัมภีร์เทพ IT

ไม่ว่าคุณจะเพิ่งเริ่มทำงานหรือมีประสบการณ์ทำงานเป็น Data Engineer มานานหลายปีแล้วก็ตาม ความรู้เกี่ยวกับ SQL Syntax ขั้นสูง ถือเป็นสิ่งที่จำเป็น ด้วยการเติบโตของ Data อย่างมหาศาล การวิเคราะห์ Data อย่างรวดเร็ว จึงเป็นสิ่งที่ต้องให้ความสำคัญ และนี่ก็เป็น 6 SQL Queries ที่ Data Engineer มักใช้งานอยู่บ่อย ๆ

Source: Statista

หน่วยที่แสดงใน Graph นี้ก็คือ Zettabyte โดยที่ 1 Zettabyte = 1 ล้านล้าน Gigabytes

มีหลายคนอาจคิดว่า SQL ไม่มีการพัฒนาอะไรใหม่ ๆ แล้ว แต่ในความจริงก็คือ ขณะนี้ยังไม่มีระบบใดที่จะมาแทนที่ได้ มี NoSQL Stores ที่มีความสามารถอยู่มากมาย ซึ่งทำงานได้ดี อีกทั้งรองรับขนาดของ Data จำนวนมหาศาลได้ อย่างไรก็ตาม พวกมันก็ไม่สามารถแทนที่ SQL-based Stores ที่คุณภาพสูงได้ แต่พวกมันเป็นแค่ส่วนเสริมเท่านั้น ACID Properties ของ SQL ทำให้มันเป็นวิธีที่เชื่อถือได้สูงในการสร้าง Model Data ที่ค่อนข้างเป็นธรรมชาติ

บทความนี้จะกล่าวถึง SQL Syntax ขั้นสูง ที่จะมีประโยชน์กับ Data Engineer อย่างแน่นอน สำหรับตัวอย่างในบทความนี้ จะใช้ Table ที่เรียกว่า "Bill"

1. Running Totals

คุณมักจะเจอสถานการณ์ที่คุณต้องคำนวณยอดรวมสะสมจาก Table นี่คือการที่เราจะรู้ว่าแต่ละค่าคืออะไรเมื่อเทียบกับยอดรวมสะสม

ยอดรวมสะสม หมายถึง ผลรวมของค่าใน Cell ทั้งหมดของ Column ที่อยู่ก่อนหน้าของ Cell ถัดไปใน Column นั้น ๆ

นี่คือ Query ที่จะทำอย่างนั้น

และนี่คือลักษณะของผลลัพธ์ที่ได้:

2. Common Table Expressions

Common Table Expressions หรือเรียกย่อ ๆ ว่า CTE's ถูกใช้เพื่อทำให้ Readability ของ Joins และ Subqueries ที่ซับซ้อน ง่ายยิ่งขึ้น

โดยพื้นฐานแล้ว ชุดของผลลัพธ์ที่มีชื่อ Temporary ซึ่งคุณสามารถอ้างอิงได้จากคำสั่ง SELECT, INSERT, UPDATE หรือ DELETE

ลองดู Query ที่เรียบง่ายนี้:

ลองนึกภาพว่า เรากำลังใช้ Subquery นี้หลายครั้งใน Query หลังจากนี้หรือไม่ มันจะไม่ง่ายกว่าหรือ ถ้าเราสามารถใช้เป็น Table ชั่วคราวได้? ซึ่ง CTE จะเข้ามาช่วยแก้ปัญหาตรงนี้

นี่เป็นตัวอย่างเล็ก ๆ น้อย ๆ แต่โดยทั่วไปแล้ว สิ่งนี้จะมีประโยชน์มากสำหรับ Subqueries ที่มีขนาดใหญ่และมีความซับซ้อน

3. Ranking the Data

Data Engineers และ Data Analysts เห็นด้วยว่า มันเป็นเรื่องปกติมากในการจัดอันดับของค่าต่าง ๆ โดยพิจารณาจาก Parameters บางอย่าง เช่น Salaries หรือ Expense เป็นต้น และการมีความรู้เกี่ยวกับการจัดอันดับของ Data โดยใช้เพียงแค่ปลายนิ้วของคุณ จะสามารถช่วยประหยัดเวลาได้อย่างมาก 

ใน Query ด้านล่างนี้ เป็นการจัดอันดับ Dataset ตาม Column ที่ชื่อ Amount

นอกจากนี้ คุณยังสามารถใช้ DENSE_RANK() ซึ่งคล้ายกับ RANK() ได้เช่นกัน

4. Adding Subtotals

นี่ก็เป็นอีกหนึ่ง Query ที่สำคัญมากสำหรับ Data Engineers และ Data Analysts เชื่อว่าพวกเขามักได้ใช้ Query นี้เพื่อการวิเคราะห์เป็นจำนวนนับครั้งไม่ถ้วน การมี Subtotal จะช่วยให้คุณใส่ Data ในมุมมองของยอดรวม (Total) ได้

มันเป็นส่วนขยายของคำสั่ง GROUP BY ที่มีความสามารถในการเพิ่ม Subtotal และ Grand Totals ให้กับ Data ของคุณ

จาก Query ด้านบน, Rows ที่ทั้ง Type และ id เป็น Null ก็คือ Row ที่เป็น Total ซึ่งแสดงใน Row สุดท้าย ส่วน Subtotals จะแสดงใน Row ที่ 4 และ Row ที่อยู่รองสุดท้าย

หมายเหตุ: Query ด้านบนนี้ อยู่ใน MySQL ซึ่ง Rollup Syntax อาจแตกต่างกันไปสำหรับเครื่องมือตัวอื่น ๆ

5. Temporary Functions

Temporary Functions จะช่วยให้คุณสามารถแก้ไข Data ได้อย่างง่ายดาย โดยไม่ต้องเขียน Case Statements 

ในตัวอย่างด้านล่างนี้ Temporary Function ถูกใช้เพื่อแปลง type เป็น gender สิ่งนี้สามารถทำได้โดยใช้ Case Statements แทรกเข้าไปใน Query แต่ในเรื่องการอ่าน (Readabolity) อาจจะยุ่งยากสักหน่อย

6. Variance & Standard Deviation

สำหรับ Data Scientists และ Data Analysts แล้ว ความสามารถในการหาค่าความแปรปรวนและค่าเบี่ยงเบนมาตรฐาน ถือเป็นสิ่งสำคัญ และโชคดีที่มี Functions เพื่อรับค่าเหล่านั้น

VARIANCE, VAR_POP และ VAR_SAMP เป็น Aggregate Functions ซึ่งก็คือ พวกมันจะจัดกลุ่ม Data พวกมันถูกใช้ประโยชน์เพื่อกำหนด Variance, Group Variance และ Sample Variance ของ Collection ของ Data ทีละรายการ

VAR_POP คือ ความแปรปรวนของประชากร

VAR_SAMP คือ ความแปรปรวนตัวอย่าง

STDDEV_POP คือ ค่าเบี่ยงเบนมาตรฐานของประชากร

STDDEV_SAMP คือ ค่าเบี่ยงเบนมาตรฐานตัวอย่าง

นี่คือคำสั่ง SQL บางส่วน ที่มักใช้งานบ่อยเป็นอันดับต้น ๆ สิ่งเหล่านี้มีประโยชน์มากสำหรับการแก้ปัญหาทางธุรกิจมากมาย มีการกล่าวว่า Ecosystem ของ SQL Tools ที่มีทุกอย่างตั้งแต่ Excel,Tableau ไปจนถึง SparkSQL ถูกใช้โดยองค์กรต่าง ๆ มากกว่า 60% มันเป็นผลงานที่น่าประทับใจมาก โดยเฉพาะอย่างยิ่งเมื่อพิจารณาจากอายุของมัน

ที่มา:  https://betterprogramming.pub/

 

 

รับตำแหน่งงานไอทีใหม่ๆ ด้วยบริการ IT Job Alert

 

อัพเดทบทความจากคนวงในสายไอทีทาง LINE ก่อนใคร
อย่าลืมแอดไลน์ @techstarth เป็นเพื่อนนะคะ

เพิ่มเพื่อน

 

บทความล่าสุด