选择

适用于:检查标记是的砖的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

    输入的来源选择。这个输入参考可以被转换成流参考使用关键字之前参考。

  • 侧面图

    与发电机一起使用等功能爆炸,它生成一个虚拟表包含一个或多个行。横向视图行适用于每个原始输出行。

    砖的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也不版本子查询。

例子

>选择*事件时间戳作为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