มี CTE เยอะ ๆ เสมือนเรา import ไม่ได้กระทบ performance บน data warehouse นะ

เวลาเขียนโค้ด SQL ใน dbt เค้าจะใช้ CTE เสมือนกับว่าเรา import module เข้ามาใช้งาน ทีนี้มีคำถามว่าถ้าเรามี CTE เยอะ ๆ เนี่ย ในส่วน import มันจะกระทบกับ performance ไหม Tristan Handy ผู้สร้าง dbt เค้าเลยทดลองเอา query มารันบนพวก modern data warehouse อย่าง Redshift, BigQuery และ Snowflake

ผลออกมาคือมันเป็นแค่ passthroughs ซึ่งก็หมายความว่าไม่ได้กระทบกับ performance แต่อย่างใด พวก data warehouse พวกนี้เค้า optimize ให้เราไปแล้วเรียบร้อยล่ะ :+1:

ปล. แอบตกใจเล็กน้อย เพราะว่าโพสต์ของ Tristan นี่ตั้งแต่ปี 2018… :sweat_smile:

1 Like

จริงๆ อันนี้ก็พูดยาก เพราะพอเราใช้ sql บน cloud data warehouse มันจะไป translate หลังบ้านเอาให้เอง

แต่มันก็ไม่ได้ optimize ให้ทุกจุด เพราะงั้นถ้าเล่นกะดาต้าใหญ่มากๆ แล้ว query มีความซับซ้อน spark อาจจะเหมาะกว่า เพราะมันเล่นแร่แปรธาตุเองได้

เท่าที่สังเกต ส่วนใหญ่ถ้าใช้ spark กันคือจะมีการทำ machine learning อยู่แล้ว ต่อยอดมาจากการใช้ pandas ก็เลยอาจจะไม่มีความจำเป็นต้องใช้ sql interface

แต่เขาก็พูดกันอยู่ ว่า อย่าไปเสียเวลา optimize มาก เพราะปัจจุบัน compute มันถูกลงเยอะแล้ว ก็คงต้องชั่งกันดีๆ ว่า เราให้ความสำคัญกับอะไรมากกว่ากัน :sweat_smile:

edit: fix typo

2 Likes