MaxCompute SQL 使用正則表達式選列

編輯MaxCompute SQL 時,經常會需要在某個表N個列中指定一些列。若需要指定的列比較少,編寫SQL時一個個輸入既可。當遇到列多的時候,一個個輸入就會非常費勁。本文將介紹如何在編寫MaxCompute SQL時通過正則表達式表達列(column),從而提升編碼效率。

首先用一個簡單的示例介紹正則表達式的使用方法:

SELECT `abc.*` FROM t;--查詢 t 表中所有名字以 'abc' 開頭的列。

如上示例,使用了正則表達式"abc.*",在MaxCompute SQL中,正則表達式需要使用 ` 符號括起來,這個符號是鍵盤上 1 鍵左邊的那個鍵,稱做反單引號(注意需英文模式輸入) 。

正則表達選列的一個非常重要的用法是,使用反選的方式來選列。如:

SELECT `(ds)?+.+` FROM t;--選t表中列名字不叫‘ds’的所有列。 

類似的用法還有:

  • (ds|pt)?+.+ 排除兩列.
  • (d.*)?+.+ 排除名字以d打頭的所有列.

注意:在排除多個列的時候,如果col2是col1的前綴,則一定要把col1寫到col2的前面(長的寫前面)。比如一個表有2個分區你不想select,一個叫ds,另一個叫dshh,那麼要寫成 (dshh|ds)?+.+ ,而不能寫成 (ds|dshh)?+.+

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章