表引用

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