建立分區資料表

本頁面說明如何在 BigQuery 中建立分區資料表。如需分區資料表的總覽,請參閱分區資料表簡介一文。

事前準備

授予身分與存取權管理 (IAM) 角色,讓使用者取得執行本文各項工作所需的權限。

所需權限

必要的角色

如要取得建立資料表所需的權限,請要求管理員授予您下列 IAM 角色:

  • 如果您要透過載入資料或將查詢結果儲存至資料表來建立資料表,請在專案中指派 BigQuery Job User (roles/bigquery.jobUser)。
  • 資料集的「BigQuery 資料編輯者」 (roles/bigquery.dataEditor),您要在該資料集建立資料表。

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

這些預先定義的角色具備建立表格所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

所需權限

如要建立資料表,您必須具備下列權限:

  • bigquery.tables.create 在要建立資料表的資料集上。
  • bigquery.tables.getData 如果您要將查詢結果儲存為資料表,則必須擁有查詢參照的所有資料表和檢視區塊的存取權。
  • bigquery.jobs.create 專案,如果您是透過載入資料或將查詢結果儲存至資料表來建立資料表。
  • bigquery.tables.updateData 資料表,如果您要使用查詢結果附加或覆寫資料表,就需要這個權限。

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

建立空白分區資料表

在 BigQuery 中建立分區資料表的步驟,與建立標準資料表類似,但您需要指定分區選項,以及任何其他資料表選項。

建立時間單位資料欄分區資料表

如何使用結構定義建立空白時間單位資料欄分區資料表:

控制台

  1. 前往 Google Cloud 控制台的「BigQuery」頁面。

    前往 BigQuery

  2. 點選左側窗格中的 「Explorer」
  3. 在「Explorer」窗格中展開專案,按一下「Datasets」(資料集),然後選取資料集。
  4. 在「資料集資訊」部分,按一下 「建立資料表」
  5. 在「建立資料表」窗格中,指定下列詳細資料:
    1. 在「來源」部分,從「建立資料表來源」清單中選取「空白資料表」
    2. 在「目的地」部分,指定下列詳細資料:
      1. 在「Dataset」(資料集) 部分,選取要建立資料表的資料集。
      2. 在「Table」(資料表) 欄位中,輸入要建立的資料表名稱。
      3. 確認「資料表類型」欄位已設為「原生資料表」
    3. 在「Schema」(結構定義) 區段中,輸入結構定義。結構定義必須包含 DATETIMESTAMPDATETIME 資料欄,做為分區資料欄。詳情請參閱指定結構定義。 你可以使用下列任一方法手動輸入結構定義資訊:
      • 選項 1:按一下「以文字形式編輯」,然後以 JSON 陣列的形式貼上結構定義。如果您使用 JSON 陣列,可透過與建立 JSON 結構定義檔一樣的程序產生結構定義。您可以輸入下列指令,查看現有資料表的 JSON 格式結構定義:
            bq show --format=prettyjson dataset.table
            
      • 選項 2:按一下 「新增欄位」,然後輸入表格結構定義。指定每個欄位的「Name」(名稱)、「Type」(類型) 和「Mode」(模式)
    4. 在「Partition and cluster settings」(分區與叢集設定) 區段的「Partitioning」(分區) 清單中,選取「Partition by field」(依欄位分區),然後選擇分區資料欄。只有在結構定義包含 DATETIMESTAMPDATETIME 資料欄時,才能使用這個選項。
    5. 選用:如要要求所有查詢都必須使用分區篩選器,請選取「Require partition filter」(需要分區篩選器) 核取方塊。分區篩選器可降低費用並提升效能。詳情請參閱「設定分區篩選器規定」。
    6. 選取「Partitioning type」
    7. 選用步驟:如要使用客戶自行管理的加密金鑰,請在「Advanced options」(進階選項) 部分選取「Use a customer-managed encryption key (CMEK)」(使用客戶自行管理的加密金鑰 (CMEK)) 選項。根據預設,BigQuery 會使用 Google-owned and Google-managed encryption key加密靜態儲存的客戶內容
    8. 點選「建立資料表」。

SQL

如要建立時間單位資料欄分區資料表,請使用 CREATE TABLE DDL 陳述式,並搭配 PARTITION BY 子句

下列範例會根據 transaction_date 資料欄,建立每日分區的資料表:

  1. 前往 Google Cloud 控制台的「BigQuery」頁面。

    前往「BigQuery」

  2. 在查詢編輯器中輸入下列陳述式:

    CREATE TABLE
      mydataset.newtable (transaction_id INT64, transaction_date DATE)
    PARTITION BY
      transaction_date
      OPTIONS (
        partition_expiration_days = 3,
        require_partition_filter = TRUE);

    使用 OPTIONS 子句設定資料表選項,例如分區到期時間分區篩選器要求

  3. 按一下「執行」

如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。

DATE 欄的預設分區類型為每日分區。如要指定其他分割類型,請在 PARTITION BY 子句中加入 DATE_TRUNC 函式。舉例來說,下列查詢會建立每月分區的資料表:

CREATE TABLE
  mydataset.newtable (transaction_id INT64, transaction_date DATE)
PARTITION BY
  DATE_TRUNC(transaction_date, MONTH)
  OPTIONS (
    partition_expiration_days = 3,
    require_partition_filter = TRUE);

您也可以指定 TIMESTAMPDATETIME 資料欄做為分區資料欄。在這種情況下,請在 PARTITION BY 子句中加入 TIMESTAMP_TRUNCDATETIME_TRUNC 函式,指定分割區類型。舉例來說,下列陳述式會根據 TIMESTAMP 資料欄建立每日分區的資料表:

CREATE TABLE
  mydataset.newtable (transaction_id INT64, transaction_ts TIMESTAMP)
PARTITION BY
  TIMESTAMP_TRUNC(transaction_ts, DAY)
  OPTIONS (
    partition_expiration_days = 3,
    require_partition_filter = TRUE);