分割提示 - AWS Clean Rooms

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

分割提示

分割提示控制執行器節點之間的資料分佈。指定多個分割提示時,會將多個節點插入邏輯計畫,但最左邊的提示是由最佳化工具挑選。

COALESCE

將分割區數量減少為指定的分割區數量。

參數:數值 (必要) - 必須是介於 1 和 2147483647 之間的正整數

範例

-- Reduce to 5 partitions SELECT /*+ COALESCE(5) */ employee_id, salary FROM employees;

保留

使用指定的分割表達式,將資料重新分割至指定的分割區數量。使用循環配置分佈。

參數:

  • 數值 (選用) - 分割區數量;必須是介於 1 和 2147483647 之間的正整數

  • 資料欄識別符 (選用) - 要分割的資料欄;這些資料欄必須存在於輸入結構描述中。

  • 如果同時指定兩者,數值必須首先出現

範例

-- Repartition to 10 partitions SELECT /*+ REPARTITION(10) */ * FROM employees; -- Repartition by column SELECT /*+ REPARTITION(department) */ * FROM employees; -- Repartition to 8 partitions by department SELECT /*+ REPARTITION(8, department) */ * FROM employees; -- Repartition by multiple columns SELECT /*+ REPARTITION(8, department, location) */ * FROM employees;

REPARTITION_BY_RANGE

使用指定資料欄上的範圍分割,將資料重新分割至指定數量的分割區。

參數:

  • 數值 (選用) - 分割區數量;必須是介於 1 和 2147483647 之間的正整數

  • 資料欄識別符 (選用) - 要分割的資料欄;這些資料欄必須存在於輸入結構描述中。

  • 如果同時指定兩者,數值必須首先出現

範例

SELECT /*+ REPARTITION_BY_RANGE(10) */ * FROM employees; -- Repartition by range on age column SELECT /*+ REPARTITION_BY_RANGE(age) */ * FROM employees; -- Repartition to 5 partitions by range on age SELECT /*+ REPARTITION_BY_RANGE(5, age) */ * FROM employees; -- Repartition by range on multiple columns SELECT /*+ REPARTITION_BY_RANGE(5, age, salary) */ * FROM employees;

REBALANCE

重新平衡查詢結果輸出分割區,讓每個分割區的大小合理 (不會太小也不會太大)。這是最佳嘗試操作:如果有扭曲, AWS Clean Rooms 會分割扭曲的分割區,使其不會太大。當您需要將查詢結果寫入資料表,以避免檔案太小或太大時,此提示很有用。

參數:

  • 數值 (選用) - 分割區數量;必須是介於 1 和 2147483647 之間的正整數

  • 資料欄識別符 (選用) - 資料欄必須出現在 SELECT 輸出清單中

  • 如果同時指定兩者,數值必須首先出現

範例

-- Rebalance to 10 partitions SELECT /*+ REBALANCE(10) */ employee_id, name FROM employees; -- Rebalance by specific columns in output SELECT /*+ REBALANCE(employee_id, name) */ employee_id, name FROM employees; -- Rebalance to 8 partitions by specific columns SELECT /*+ REBALANCE(8, employee_id, name) */ employee_id, name, department FROM employees;