數倉SQL規範及最佳實踐(基於ODPS)

日常數據開發中,遇到過不少問題,最終沉澱爲SQL規範。簡單整理拋出來,歡迎指正和討論。

語法和規範

排版

• 自行定義的內容全部小寫,ODPS或其他約定關鍵字大寫
• SQL需要有格式,單行長度不能超過80,不同含義語段需要縮進

命名與關鍵字

• SQL中不能出現Select *,只獲取需要的字段,方便計算引擎做列裁剪
• SQL中Select的字段需要加 AS 別名,方便code review
• SQL中的表名,請書寫 庫名.表名 (在DataWorks裏是 工作空間名.表名)

參數和常量

• SQL中不能直接寫數字,如應用類型等枚舉,可以在數據開發中配置參數、然後sql中引用參數即可
• 是否改成UDF

開發環境

• 腳本建議使用IDE開發(Idea插件)
• 注意開發後需提交任務才生效

其他(部分適用於關係數據庫)

  1. SQL樣式指南(SQL Style Guide):https://www.sqlstyle.guide/zh/
  2. SQL如果有多條語句,需要考慮語句是否可以並行跑(如果可以,需要拆分成多個腳本)
    與多路輸出減少計算量原則有衝突,需要謹慎考慮
  3. SQL中如果有JOIN需要注意 謂詞下推 Predicate Pushdown(PPD) :https://blog.csdn.net/strongyoung88/article/details/81156271
  4. SQL書寫需要注意 數據傾斜:https://blog.csdn.net/anshuai_aw1/article/details/84033160

性能相關要點

  • 檢索效率:分區裁剪、Bucket裁剪、列裁剪
  • 計算效率:並行計算、多路輸出

待補充:

  • 實戰細節
  • 更多性能要求
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章