全部產品
Search
文件中心

Hologres:Dynamic Table支援範圍和限制

更新時間:Nov 30, 2024

您可以使用Dynamic Table實現更高效、低成本的資料自動流動與分層,本文為您介紹Dynamic Table的支援範圍與使用限制。

全量重新整理

如果Dynamic Table設定的是全量重新整理模式,支援的功能和使用限制如下:

支援的功能

  • 基表的支援:與普通Hologres表的功能相同,支援Hologres內部表、外部表格(MaxCompute、DLF和Paimon等)作為Dynamic Table的基表,建立Dynamic Table時需要具備對應基表的存取權限,詳情請參見Dynamic Table許可權

  • Query的支援:當前Hologres支援的函數、SQL運算式、資料類型等,全量重新整理模式都能支援。

  • 重新整理資源的支援:預設使用Serverless資源執行重新整理任務,您也可以調整為本執行個體資源。

使用限制

  • 暫不支援自動建立分區。

  • 不支援將全量重新整理模式轉換為增量重新整理模式。

增量重新整理

如果Dynamic Table設定的是增量重新整理模式,支援的功能和使用限制如下:

支援的功能

  • 基表的支援:僅支援Hologres內部表、Paimon外部表格和Dynamic Table,建立Dynamic Table時需要有對應基表的存取權限。

  • Query的支援:

    • 任意標量運算式。

    • WHERE條件。

    • GROUP BY、CUBE、GROUPING SETS和HAVING語句,支援的彙總函式:COUNT、SUM、MIN/MAX、COUNT DISTINCT。

    • Agg Filter。

    • 子查詢、CTE。

    • UNION ALL/UNION。

    • UNNEST。

    • 維表等值JOIN(INNER JOIN/LEFT JOIN),且必須使用FOR SYSTEM_TIME AS OF PROCTIME()的方式。

  • 重新整理資源的支援:預設使用Serverless資源執行重新整理任務,可以調整為本執行個體資源。

  • 支援將增量重新整理轉換為全量重新整理。

使用限制

  • 基表的限制:建立增量Dynamic Table時,基表必須開啟Binlog,維表無需開啟。開啟Binlog的操作請參見訂閱Hologres Binlog

  • Query的限制:

    • 不支援非維表JOIN,即OLAP中的普通JOIN,或者Flink中的雙流JOIN。

      說明

      維表JOIN的語義是:對每條資料,只會關聯當時維表的最新版本資料,即JOIN行為只發生在處理時間(Processing Time)。如果JOIN行為發生後,維表中的資料發生了變化(新增、更新或刪除),則已關聯的維表資料不會被同步更新。

    • 不支援視窗函數。

    • 不支援IN 子查詢。

    • 不支援EXISTS或NOT EXISTS。

    • 不支援EXCEPT或INTERSECT。

    • 不支援ORDER BY。

    • 不支援LIMIT或OFFSET。

    • 不支援RoaringBitmap相關函數。

  • 對於分區Dynamic Table,暫不支援自動建立分區。

通用限制

Dynamic Table本身的限制

  • Hologres執行個體必須為V3.0及以上版本。

  • Dynamic Table表屬性的限制:不支援設定主鍵、欄位預設值,引擎會自動推導表的索引,您也可以根據業務情況自行設定。

  • 僅支援全量重新整理和增量重新整理兩種模式,不同模式的支援範圍和使用限制不同,具體請參見全量重新整理增量重新整理

對Dynamic Table執行DDL、DML等操作的限制

操作

是否支援

CREATE DYNAMIC TABLE

RENAME DYNAMIC TABLE

RENAME DYNAMIC TABLE Column

SELECT

Refresh

  • 支援Refresh非分區表和分區子表。

  • 不支援Refresh分區父表。

DROP DYNAMIC TABLE

DROP DYNAMIC TABLE Column

TRUNCATE DYNAMIC TABLE

DML(INSERT/UPDATE/DELETE) DYNAMIC TABLE

ADD Column

Resharding

CREATE TABLE AS/LIKE

使用Dynamic Table的相關許可權要求

操作

許可權要求

CREATE DYNAMIC TABLE

  • Create Table許可權。

  • 基表的Select許可權。

ALTER DYNAMIC TABLE

  • Create Table許可權。

  • 基表的Select許可權。

DROP DYNAMIC TABLE

Dynamic Table的表Owner。

SELECT DYNAMIC TABLE

Dynamic Table的Select許可權。

REFRESH DYNAMIC TABLE

Dynamic Table的DML許可權。

說明

不支援Refresh分區父表。

對Dynamic Table的授權,詳情請參見Hologres許可權模型概述

基表操作對Dynamic Table的影響

基表操作

Dynamic Table的表現

RENAME <basetable_name>

  • 查詢Dynamic Table正常執行。

  • Refresh報錯。

RENAME <基表中Dynamic Table未使用的列名>

  • 查詢Dynamic Table正常執行。

  • Refresh正常執行。

RENAME <基表中Dynamic Table使用的列名>

  • 查詢Dynamic Table正常執行。

  • Refresh正常執行。

DROP <basetable_name>

  • DROP報錯。

  • Dynamic Table正常執行。

DROP <basetable_name> CASCADE

Dynamic Table一併被刪除,任務也被取消。

DROP <基表中Dynamic Table未使用的列>

  • 查詢Dynamic Table正常執行。

  • Refresh正常執行。

DROP <基表中Dynamic Table使用的列>

DROP報錯。

TRUNCATE <basetable_name>

  • 在Dynamic Table執行Refresh前TRUNCATE 基表,查詢Dynamic Table有資料。

  • 在Dynamic Table執行Refresh後TRUNCATE 基表,查詢Dynamic Table沒資料。

INSERT/DELETE/UPDATE/UPSERT <basetable_name>

INSERT/DELETE/UPDATE/UPSERT Dynamic Table。