表引用

适用于:检查标记是的砖的SQL检查标记是的砖运行时

内表引用是一个中间结果表的SQL。它可以派生的从其他运营商,如功能、连接或子查询,直接引用一个基表,或被构造为内联表。

语法

table_reference{table_name(TABLESAMPLE条款](table_alias]|{table_name(table_alias]|(table_name)(table_alias]}|view_name(table_alias]|加入条款|条款|透视条款|(]table_valued_function(table_alias]|(横向]table_valued_function(table_alias]|条款|(横向](查询)(TABLESAMPLE条款](table_alias]}

参数

  • table_name

    标识一个表可能包含一个时间规范。看到工作与三角洲湖表的历史获取详细信息。

    如果表不能发现砖了TABLE_OR_VIEW_NOT_FOUND错误。

    看到列、字段和参数分辨率名称解析的更多信息。

  • view_name

    标识一个视图或公共表表达式(CTE)。如果视图不能发现砖了TABLE_OR_VIEW_NOT_FOUND错误。

    看到列、字段和参数分辨率名称解析的更多信息。

  • 返回一个表或表值函数作为流媒体来源。表无法提供时间规范一起使用时关键字。流源中最常用的定义流表

  • 加入

    结合使用一个连接两个或两个以上的关系。

  • 适用于:检查标记是的砖的SQL检查标记是的砖运行时12.0及以后。

    用于数据透视图;你可以基于特定的列值的聚合值。

    之前砖12.0运行时被限制到选择后,条款。

  • 透视

    适用于:检查标记是的砖的SQL检查标记是的砖运行时12.0及以后。

    用于数据透视图;你可以将多个列组分为行。

  • (横向)table_valued_function_invocation

    表值函数调用。引用列前暴露table_reference在相同的您必须指定条款横向

  • 定义了一个内联表。

  • (横向)(查询)

    使用一个查询计算表引用。一个查询前缀的横向可以参考列由前公开吗table_reference在相同的条款。这样的构造称为相关或依赖查询。

    横向支持自砖9.0运行时。

  • TABLESAMPLE

    只选择结果集的大小减少抽样的一小部分的行。

  • table_alias

    (可选)指定的标签table_reference。如果table_alias包括column_identifier年代数量必须匹配的列数table_reference

选择在三角洲表

除了标准选择选项,三角洲表支持在这一节中描述的时间旅行的选择。有关详细信息,请参见工作与三角洲湖表的历史

作为语法

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