3 คะแนน โดย xguru 4 시간 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • เป็นภาษาที่มีสองลักษณะในตัว คือ ภาษาสำหรับ semantic modeling และภาษา query โดยใช้ SQL engine ที่มีอยู่เดิมในการรัน query
  • Malloy query ที่เขียนขึ้นจะถูก คอมไพล์เป็น SQL ที่ปรับให้เหมาะกับ DB ที่ใช้งานอยู่ แล้วจึงรัน
  • ตอนที่เปิดตัวในปี 2022 ยังเป็น ภาษาเชิงทดลองภายใต้ Looker แต่ปัจจุบันถูกย้ายแยกมาเป็น malloydata และเติบโตจนมี Star ราว 2.5k
  • Backend ที่รองรับก็ขยายจากเดิม BigQuery, Postgres 2 รายการ เป็น BigQuery/Snowflake/PostgreSQL/MySQL/Trino/Presto และเพิ่ม การรองรับ DuckDB แบบเนทีฟ
  • การตั้งชื่อที่กระชับและการนำกลับมาใช้ซ้ำ: ประหยัดเวลาโดยหลีกเลี่ยงการเขียนนิยามซ้ำ ๆ และปรับแต่งโมเดลแบบวนซ้ำไปพร้อมกับการ query
  • ป้องกัน ผลลัพธ์ที่ดูเหมือนถูกต้องแต่จริง ๆ ผิด: ช่วยป้องกันปัญหาที่ query ซึ่งดูเผิน ๆ เหมือนถูกต้องนำไปสู่ค่าที่ผิด
  • Nested Queries (query แบบซ้อน): สร้างมุมมองข้อมูลเชิงลำดับชั้นที่สมบูรณ์ได้ง่าย ตัว query เองทำงานเป็นคอมโพเนนต์ที่นำกลับมาใช้ซ้ำได้ จึงไม่ต้องเขียนใหม่เพื่อสร้างลำดับชั้น
  • Symmetric Aggregates (การ aggregate แบบสมมาตร): ป้องกันการ aggregate ผิด เช่น ผลรวม/ค่าเฉลี่ย/จำนวน โดยอัตโนมัติ และแก้ปัญหา Fan/Chasm Trap ในระดับภาษา
  • Freedom and Safety (อิสระและความปลอดภัย): ผสานความยืดหยุ่นเต็มรูปแบบของ SQL เข้ากับความปลอดภัยของ semantic data model ซึ่งต่างจาก LookML ที่ให้ความปลอดภัยแต่จำกัดอิสระ
  • มี VS Code extension: รองรับการสร้างโมเดล, query·แปลงข้อมูล, การสร้าง visualization และ dashboard แบบง่าย ๆ และทดลองได้ทันทีในเบราว์เซอร์
  • ตัวอย่างไวยากรณ์: query ที่ aggregate เที่ยวบินออกจาก SFO ตามสายการบิน กระชับกว่าโครงสร้าง SELECT/COUNT/AVG/GROUP BY ของ SQL และเรียงลำดับอัตโนมัติตาม aggregate ตัวแรก จึงไม่จำเป็นต้องใช้ ORDER BY
    run: bigquery.table('malloydata-org.faa.flights') -> {  
      where: origin = 'SFO'  
      group_by: carrier  
      aggregate:  
        flight_count is count()  
        average_flight_time is flight_time.avg()  
    }  
    

1 ความคิดเห็น

 
click 27 분 전

ผมอาจเป็นเพราะคุ้นกับ SQL ก็ได้ แต่ไม่ค่อยเห็นด้วยเท่าไรที่บอกว่ามันกระชับกว่า SQL
LINQ ของ C# ดูใช้งานสะดวกกว่าด้วย และยังรองรับฐานข้อมูลได้หลากหลายกว่ามาก