選擇
適用於:磚的SQL磚運行時
從一個或多個組成一個結果集表引用。的選擇
條款可以查詢的一部分,還包括公共表表達式(CTE),設置操作,以及其他條款。
語法
選擇(提示](所有|截然不同的]{named_expression|star_clause}(,…]從table_reference(,…](橫向視圖條款](在哪裏條款](集團通過條款](有條款](有資格條款]named_expression表達式(column_alias]star_clause({table_name|view_name}。]*(except_clause]except_clause除了({column_name|field_name}(,…])
參數
提示幫助磚SQL優化器做出更好的規劃決策。磚SQL支持暗示影響連接策略的選擇和數據的重新分區。
所有
選擇表引用的所有匹配的行。默認啟用。
截然不同的
從表中選擇所有匹配行引用刪除重複後的結果。
named_expression
和一個可選的表達式指定的名字。
結合一個或多個值,操作符和SQL函數,計算一個值。
一個可選的列標識符命名表達式的結果。如果沒有
column_alias
提供SQL派生一個磚。
star_clause
一種速記中的所有引用的列名稱
從
條款。列的列表命令的順序table_reference
在每個年代的順序列table_reference
。的_metadata列不包括這個列表。您必須顯式地引用它。
如果存在限製了列的名字將在指定的引用的表。
如果列指定的限製擴大到那些在指定的引用的視圖。
except_clause
適用於:磚的SQL磚運行時11.0及以上
選擇錯誤的列或字段的引用集列確定的
select_star
條款。一列的列的集合,你可以參考。
指一組字段的列的列,您可以參考。如果你從一個排除所有字段
結構體
,結果是一個空結構體
。
每個名稱必須引用一組列中包含的列,您可以引用或他們的田地。否則,磚SQL提出了一個UNRESOLVED_COLUMN錯誤。如果名字重疊或不獨特,磚SQL提出了一個EXCEPT_OVERLAPPING_COLUMNS錯誤。
輸入的來源
選擇
。與發電機一起使用等功能
爆炸
,它生成一個虛擬表包含一個或多個行。橫向視圖
行適用於每個原始輸出行。磚的SQL,從磚12.2運行時不建議使用這個條款。你應該調用表生成器函數作為價值table_reference。
過濾器的結果
從
基於提供的謂詞的條款。表達式用於組行。這是與聚合函數一起使用(
最小值
,馬克斯
,數
,總和
,AVG
)組行基於分組每組表情和聚合值。當一個過濾器
條款附加到一個聚合函數,隻有匹配行傳遞給這個函數。產生的謂詞的行
集團通過
是過濾。的有
子句用於過濾行分組後進行。如果您指定有
沒有集團通過
,它顯示一個集團通過
沒有分組表達式(全球總)。使用的謂詞過濾窗口函數的結果。使用
有資格
,至少有一窗口函數需要出現在選擇列表或資格條款。
選擇在三角洲表
除了標準選擇
選項,三角洲表支持在這一節中描述的時間旅行的選擇。有關詳細信息,請參見工作與三角洲湖表的曆史。
作為的
語法
table_identifier時間戳作為的timestamp_expressiontable_identifier版本作為的版本
timestamp_expression
可以是任何一個:2018 - 10 - 18 t22:15:12.013z
,也就是說,可以把一個字符串,該字符串轉換為一個時間戳鑄造(' 2018-10-1813:36:32c '作為時間戳)
“2018-10-18”
,也就是說,一個日期字符串current_timestamp ()- - - - - -時間間隔12小時
date_sub(當前日期(),1)
其他表達式,也可以把一個時間戳
版本
是一個長期的價值,可以獲得輸出的嗎描述曆史table_spec
。
既不timestamp_expression
也不版本
子查詢。
例子
——選擇所有引用的列從所有表> select *值(1、2)t1 (c1, c2), (3、4) t2值(c3、c4);1 2 3 4,選擇所有引用的列一個表>選擇t2。*從值(1、2)t1 (c1, c2), (3、4) t2值(c3、c4);3 4——從所有表除了t2選擇所有引用的列。c4 > SELECT *除了(c4)值(1、2)t1 (c1, c2), (3、4) t2值(c3、c4);1 2 3——從一個表中選擇所有引用的列,除了一個嵌套。> SELECT * (c2.b除外)的值(1,named_struct (' a ' 2 ' b ', 3))當t (c1, c2);1 {“a”: 2},移除所有字段的結果在一個空的結構> SELECT * (c2除外。b, c2.a)值(1,named_struct (' a ' 2 ' b ', 3))當t (c1, c2);1{},重疊導致一個錯誤的名字> SELECT *除了(c2, c2.a)值(1,named_struct (' a ' 2 ' b ', 3))當t (c1, c2);錯誤:EXCEPT_OVERLAPPING_COLUMNS