選擇

適用於:檢查標記是的磚的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

      一個可選的列標識符命名表達式的結果。如果沒有column_alias提供SQL派生一個磚。

  • star_clause

    一種速記中的所有引用的列名稱條款。列的列表命令的順序table_reference在每個年代的順序列table_reference

    _metadata列不包括這個列表。您必須顯式地引用它。

    • table_name

      如果存在限製了列的名字將在指定的引用的表。

    • view_name

      如果列指定的限製擴大到那些在指定的引用的視圖。

  • except_clause

    適用於:檢查標記是的磚的SQL檢查標記是的磚運行時11.0及以上

    選擇錯誤的列或字段的引用集列確定的select_star條款。

    • column_name

      一列的列的集合,你可以參考。

    • field_name

      指一組字段的列的列,您可以參考。如果你從一個排除所有字段結構體,結果是一個空結構體

    每個名稱必須引用一組列中包含的列,您可以引用或他們的田地。否則,磚SQL提出了一個UNRESOLVED_COLUMN錯誤。如果名字重疊或不獨特,磚SQL提出了一個EXCEPT_OVERLAPPING_COLUMNS錯誤。

  • table_reference

    輸入的來源選擇

  • 側麵圖

    與發電機一起使用等功能爆炸,它生成一個虛擬表包含一個或多個行。橫向視圖行適用於每個原始輸出行。

    從磚12.2運行時不建議使用這個條款。從磚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也不版本子查詢。

例子

>選擇*事件時間戳作為2018 - 10 - 18 t22:15:12.013z>選擇*δ' /mnt/δ/事件版本作為123年

@語法

使用@語法來指定時間戳或版本。必須在時間戳yyyyMMddHHmmssSSS格式。您可以指定一個版本@通過將一個v的版本。例如,要查詢版本123年為表事件,指定events@v123

例子

>選擇*事件@20190101000000000>選擇*事件@v123

例子

——選擇所有引用的列從所有表> 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