更新資料集屬性

本文說明如何在 BigQuery 中更新資料集屬性。建立資料集之後,您可以更新下列資料集屬性:

事前準備

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

所需權限

如要更新資料集屬性,您必須具備下列 IAM 權限:

  • bigquery.datasets.update
  • bigquery.datasets.setIamPolicy (僅在 Google Cloud 控制台更新資料集存取權控管設定時才需要)

roles/bigquery.dataOwner 預先定義的 IAM 角色包含更新資料集資源所需的權限。

此外,如果您具備 bigquery.datasets.create 權限,就可以更新所建立資料集的屬性。

如要進一步瞭解 BigQuery 中的 IAM 角色和權限,請參閱「預先定義的角色與權限」一文。

更新資料集說明

您可以透過下列方式更新資料集的說明:

  • 使用 Google Cloud 控制台。
  • 使用 bq 指令列工具的 bq update 指令。
  • 呼叫 datasets.patch API 方法
  • 使用用戶端程式庫。

如要更新資料集的說明:

主控台

  1. 在「Explorer」面板中展開專案並選取資料集。

  2. 展開 「動作」選項,然後按一下「開啟」

  3. 在「詳細資料」面板中,按一下 「編輯詳細資料」來編輯說明文字。

    在隨即顯示的「Edit detail」對話方塊中,執行下列操作:

    1. 在「Description」欄位輸入說明或編輯現有說明。
    2. 如要儲存新的說明文字,請按一下「儲存」

SQL

如要更新資料集的說明,請使用 ALTER SCHEMA SET OPTIONS 陳述式設定 description 選項。

以下範例會為名為 mydataset 的資料集設定說明:

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

    前往 BigQuery

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

     ALTER SCHEMA mydataset
     SET OPTIONS (
         description = 'Description of mydataset');
     

  3. 按一下 「Run」

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

bq

發出含有 --description 旗標的 bq update 指令。如果您要更新非預設專案中的資料集,請使用下列格式將專案 ID 新增至資料集名稱:project_id:dataset

bq update \
--description "string" \
project_id:dataset

更改下列內容:

  • string:描述資料集的文字,以引號表示
  • project_id:您的專案 ID
  • dataset:您要更新的資料集名稱

範例:

輸入下列指令,將 mydataset 的說明變更為「Description of mydataset」(mydataset 的說明)。mydataset 在您的預設專案中。

bq update --description "Description of mydataset" mydataset

輸入下列指令,將 mydataset 的說明變更為「Description of mydataset」(mydataset 的說明)。該資料集位於 myotherproject,而非預設專案。

bq update \
--description "Description of mydataset" \
myotherproject:mydataset

API

呼叫 datasets.patch 並更新資料集資源中的 description 屬性。由於 datasets.update 方法會取代整個資料集資源,因此建議使用 datasets.patch 方法。

Go

在嘗試這個範例之前,請先按照 BigQuery 快速入門:使用用戶端程式庫中的 Go 設定說明進行操作。詳情請參閱 BigQuery Go API 參考說明文件

如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。

import (
	"context"
	"fmt"

	"cloud.google.com/go/bigquery"
)

// updateDatasetDescription demonstrates how the Description metadata of a dataset can
// be read and modified.
func updateDatasetDescription(projectID, datasetID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	ds := client.Dataset(datasetID)
	meta, err := ds.Metadata(ctx)
	if err != nil {
		return err
	}
	update := bigquery.DatasetMetadataToUpdate{
		Description: "Updated Description.",
	}
	if _, err = ds.Update(ctx, update, meta.ETag); err != nil {
		return err
	}
	return nil
}

Java

在嘗試這個範例之前,請先按照 BigQuery 快速入門:使用用戶端程式庫中的 Java 設定說明進行操作。詳情請參閱 BigQuery Java API 參考說明文件

如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。

使用 Dataset.toBuilder() 方法,從現有的 Dataset 例項建立 Dataset.Builder 例項。設定資料集製作工具物件。使用 Dataset.Builder.build() 方法建構更新後的資料集,並呼叫 Dataset.update() 方法,將更新內容傳送至 API。
import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Dataset;

public class UpdateDatasetDescription {

  public static void runUpdateDatasetDescription() {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    String newDescription = "this is the new dataset description";
    updateDatasetDescription(datasetName, newDescription);
  }

  public static void updateDatasetDescription(String datasetName, String newDescription) {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      Dataset dataset = bigquery.getDataset(datasetName);
      bigquery.update(dataset.toBuilder().setDescription(newDescription).build());
      System.out.println("Dataset description updated successfully to " + newDescription);
    } catch (BigQueryException e) {
      System.out.println("Dataset description was not updated \n" + e.toString());
    }
  }
}

Node.js

在嘗試這個範例之前,請先按照 BigQuery 快速入門:使用用戶端程式庫中的 Node.js 設定說明進行操作。詳情請參閱 BigQuery Node.js API 參考說明文件

如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。

// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function updateDatasetDescription() {
  // Updates a dataset's description.

  // Retreive current dataset metadata
  const dataset = bigquery.dataset(datasetId);
  const [metadata] = await dataset.getMetadata();

  // Set new dataset description
  const description = 'New dataset description.';
  metadata.description = description;

  const [apiResponse] = await dataset.setMetadata(metadata);
  const newDescription = apiResponse.description;

  console.log(`${datasetId} description: ${newDescription}`);
}

Python

在嘗試這個範例之前,請先按照 BigQuery 快速入門:使用用戶端程式庫中的 Python 設定說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件

如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。

設定 Dataset.description 屬性,並呼叫 Client.update_dataset(),將更新傳送至 API。

from google.cloud import bigquery

# Construct a BigQuery client object.
client = bigquery.Client()

# TODO(developer): Set dataset_id to the ID of the dataset to fetch.
# dataset_id = 'your-project.your_dataset'

dataset = client.get_dataset(dataset_id)  # Make an API request.
dataset.description = "Updated description."
dataset = client.update_dataset(dataset, ["description"])  # Make an API request.

full_dataset_id = "{}.{}".format(dataset.project, dataset.dataset_id)
print(
    "Updated dataset '{}' with description '{}'.".format(
        full_dataset_id, dataset.description
    )
)

更新預設資料表的到期時間

您可以透過以下方式更新資料集的預設資料表到期時間:

  • 使用 Google Cloud 控制台。
  • 使用 bq 指令列工具的 bq update 指令。
  • 呼叫 datasets.patch API 方法
  • 使用用戶端程式庫。

您可以設定資料集層級的預設資料表到期時間,也可以在建立資料表時設定資料表的到期時間。如果您在建立資料表時設定到期時間,系統將會忽略資料集的資料表預設到期時間。如果您未在資料集層級設定資料表的預設到期時間,且未在建立資料表時設定到期時間,則資料表永遠不會過期,您必須手動刪除資料表。資料表到期後,系統會刪除該資料表及其內含的所有資料。

更新資料集的資料表預設到期時間設定時:

  • 如果您將值從 Never 變更為定義好的到期時間,則除非在建立資料表時已為其設定了到期時間,否則資料集中已存在的任何資料表都不會到期。
  • 如果您變更了資料表預設到期時間的值,則任何已存在的資料表都將根據原始的資料表到期時間設定到期。除非您在建立資料表時已為其指定不同的資料表到期時間,否則在資料集中建立的任何新資料表都會套用新的資料表到期時間設定。

資料表預設到期時間的值會依該值的設定位置而有不同的表示方式。請使用可為您提供適當精細層級的方法:

  • 在 Google Cloud 控制台中,到期時間會以天為單位表示。
  • 在 bq 指令列工具中,到期時間會以秒為單位表示。
  • 在 API 中,到期時間會以毫秒為單位表示。

如何更新資料集的預設到期時間:

主控台

  1. 在「Explorer」面板中展開專案並選取資料集。

  2. 展開 「動作」選項,然後按一下「開啟」

  3. 在詳細資料面板中,按一下「Dataset info」旁的鉛筆圖示,即可編輯說明。

  4. 在「Dataset info」(資料集資訊) 對話方塊的「Default table expiration」(預設資料表到期時間) 區段中,輸入「Number of days after table creation」(資料表建立後的天數) 的值。

  5. 按一下 [儲存]

SQL

如要更新預設資料表到期時間,請使用 ALTER SCHEMA SET OPTIONS 陳述式設定 default_table_expiration_days 選項。

以下範例會更新名為 mydataset 的資料集的預設資料表到期時間。

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

    前往 BigQuery

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

     ALTER SCHEMA mydataset
     SET OPTIONS(
         default_table_expiration_days = 3.75);
     

  3. 按一下 「Run」

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

bq

如要更新資料集中新建立之資料表的預設到期時間,請輸入 bq update 指令並加上 --default_table_expiration 旗標。如果您要更新非預設專案中的資料集,請使用下列格式將專案 ID 新增至資料集名稱:project_id:dataset

bq update \
--default_table_expiration integer \
project_id:dataset

更改下列內容:

  • integer:新建資料表的預設生命週期長度 (以秒為單位)。最小值是 3600 秒 (1 小時)。到期時間為目前世界標準時間加整數值。指定 0 即可移除現有的到期時間。在資料集中建立的任何資料表都會在建立時間後 integer 秒刪除。如果您在建立資料表時未設定資料表到期時間,系統就會套用這個值。
  • project_id:您的專案 ID。
  • dataset:您要更新的資料集名稱。

範例:

輸入下列指令,將在 mydataset 中建立之新資料表的預設到期時間設為距離目前時間兩小時 (7,200 秒)。該資料集位於預設專案中。

bq update --default_table_expiration 7200 mydataset

輸入下列指令,將在 mydataset 中建立之新資料表的預設到期時間設為距離目前時間兩小時 (7,200 秒)。該資料集位於 myotherproject,而非預設專案。

bq update --default_table_expiration 7200 myotherproject:mydataset

API

呼叫 datasets.patch 並更新資料集資源中的 defaultTableExpirationMs 屬性。API 中的到期時間是以毫秒為單位表示。由於 datasets.update 方法會取代整個資料集的資源,因此建議您使用 datasets.patch 方法。

Go

在嘗試這個範例之前,請先按照 BigQuery 快速入門:使用用戶端程式庫中的 Go 設定說明進行操作。詳情請參閱 BigQuery Go API 參考說明文件

如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。

import (
	"context"
	"fmt"
	"time"

	"cloud.google.com/go/bigquery"
)

// updateDatasetDefaultExpiration demonstrats setting the default expiration of a dataset
// to a specific retention period.
func updateDatasetDefaultExpiration(projectID, datasetID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	ds := client.Dataset(datasetID)
	meta, err := ds.Metadata(ctx)
	if err != nil {
		return err
	}
	update := bigquery.DatasetMetadataToUpdate{
		DefaultTableExpiration: 24 * time.Hour,
	}
	if _, err := client.Dataset(datasetID).Update(ctx, update, meta.ETag); err != nil {
		return err
	}
	return nil
}

Java

在嘗試這個範例之前,請先按照 BigQuery 快速入門:使用用戶端程式庫中的 Java 設定說明進行操作。詳情請參閱 BigQuery Java API 參考說明文件

如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。

使用 Dataset.toBuilder() 方法,從現有的 Dataset 執行個體建立 Dataset.Builder 執行個體。設定資料集製作工具物件。使用 Dataset.Builder.build() 方法建構經過更新的資料集,並呼叫 Dataset.update() 方法,將更新傳送至 API。

使用 Dataset.Builder.setDefaultTableLifetime() 方法設定預設到期時間。

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Dataset;
import java.util.concurrent.TimeUnit;

public class UpdateDatasetExpiration {

  public static void runUpdateDatasetExpiration() {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    updateDatasetExpiration(datasetName);
  }

  public static void updateDatasetExpiration(String datasetName) {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      // Update dataset expiration to one day
      Long newExpiration = TimeUnit.MILLISECONDS.convert(1, TimeUnit.DAYS);

      Dataset dataset = bigquery.getDataset(datasetName);
      bigquery.update(dataset.toBuilder().setDefaultTableLifetime(newExpiration).build());
      System.out.println("Dataset description updated successfully to " + newExpiration);
    } catch (BigQueryException e) {
      System.out.println("Dataset expiration was not updated \n" + e.toString());
    }
  }
}

Node.js

在嘗試這個範例之前,請先按照 BigQuery 快速入門:使用用戶端程式庫中的 Node.js 設定說明進行操作。詳情請參閱 BigQuery Node.js API 參考說明文件

如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。

// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function updateDatasetExpiration() {
  // Updates the lifetime of all tables in the dataset, in milliseconds.

  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
  // const datasetId = "my_dataset";

  // Retreive current dataset metadata
  const dataset = bigquery.dataset(datasetId);
  const [metadata] = await dataset.getMetadata();

  // Set new dataset metadata
  const expirationTime = 24 * 60 * 60 * 1000;
  metadata.defaultTableExpirationMs = expirationTime.toString();

  const [apiResponse] = await dataset.setMetadata(metadata);
  const newExpirationTime = apiResponse.defaultTableExpirationMs;

  console.log(`${datasetId} expiration: ${newExpirationTime}`);
}

Python

在嘗試這個範例之前,請先按照 BigQuery 快速入門:使用用戶端程式庫中的 Python 設定說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件

如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。

設定 Dataset.default_table_expiration_ms 屬性,並呼叫 Client.update_dataset(),將更新傳送至 API。

from google.cloud import bigquery

# Construct a BigQuery client object.
client = bigquery.Client()

# TODO(developer): Set dataset_id to the ID of the dataset to fetch.
# dataset_id = 'your-project.your_dataset'

dataset = client.get_dataset(dataset_id)  # Make an API request.
dataset.default_table_expiration_ms = 24 * 60 * 60 * 1000  # In milliseconds.

dataset = client.update_dataset(
    dataset, ["default_table_expiration_ms"]
)  # Make an API request.

full_dataset_id = "{}.{}".format(dataset.project, dataset.dataset_id)
print(
    "Updated dataset {} with new expiration {}".format(
        full_dataset_id, dataset.default_table_expiration_ms
    )
)

更新預設的分區到期時間

您可以透過以下方式更新資料集的預設分區到期時間:

  • 使用 bq 指令列工具的 bq update 指令。
  • 呼叫 datasets.patch API 方法
  • 使用用戶端程式庫。

Google Cloud 控制台目前不支援設定或更新資料集的預設分區到期時間。

您可以在資料集層級設定預設分區到期時間,該設定會影響所有新建立的分區資料表,也可以在建立分區資料表時設定個別資料表的分區到期時間。如果您同時在資料集層級設定了預設分區到期時間和預設資料表到期時間,新建立的分區資料表只會套用分區到期時間。也就是說,如果您同時了設定這兩個選項,預設分區到期時間會覆寫預設資料表到期時間。

如果您在建立分區資料表時即設定了分區到期時間,該值會覆寫資料集層級的預設分區到期時間 (如有)。

如果您未設定資料集層級的預設分區到期時間,也未在建立資料表時設定分區到期時間,則分區永遠不會過期,直到您手動刪除分區為止。

當您設定資料集的預設分區到期時間時,到期時間會套用至在資料集中建立之所有分區資料表中的所有分區。當您設定資料表的分區到期時間時,到期時間會套用至在指定資料表中建立的所有分區。您目前無法對同一資料表中不同的分區套用不同的到期時間。

更新資料集的預設分區到期時間設定時:

  • 如果您將值從 never 變更為定義好的到期時間,則除非在建立資料表時已為其設定分區到期時間,否則分區資料集中已存在的任何分區都不會到期。
  • 如果您變更了預設分區到期時間的值,既有分區資料表中的任何分區是否到期都將根據原始的分區到期時間設定到期。除非您在建立資料表時已為其指定不同的分區到期時間,否則在資料集中建立的任何新分區資料表都會套用新的預設分區到期時間設定。

預設分區到期時間的值會依該值的設定位置而有不同的表示方式。請使用可為您提供適當精細層級的方法:

  • 在 bq 指令列工具中,到期時間會以秒為單位表示。
  • 在 API 中,到期時間會以毫秒為單位表示。

如何更新資料集的預設到期時間:

主控台

Google Cloud 目前不支援更新資料集的預設分區到期時間。

SQL

如要更新預設分區到期時間,請使用 ALTER SCHEMA SET OPTIONS 陳述式設定 default_partition_expiration_days 選項。

以下範例會更新名為 mydataset 的資料集的預設分區到期時間:

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

    前往 BigQuery

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

     ALTER SCHEMA mydataset
     SET OPTIONS(
         default_partition_expiration_days = 3.75);
     

  3. 按一下 「Run」

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

bq

如要更新資料集的預設到期時間,請輸入 bq update 指令並加上 --default_partition_expiration 旗標。如果您要更新非預設專案中的資料集,請使用下列格式將專案 ID 新增至資料集名稱:project_id:dataset

bq update \
--default_partition_expiration integer \
project_id:dataset

更改下列內容:

  • integer:新建分區資料表中分區的預設生命週期 (以秒為單位)。此標記沒有最小值。指定 0 即可移除現有的到期時間。新建立分區資料表中的任何分區都會在分區的世界標準時間日期後 integer 秒刪除。如果您在建立資料表時未設定資料表的分區到期時間,系統就會套用這個值。
  • project_id:您的專案 ID。
  • dataset:您要更新的資料集名稱。

範例:

輸入下列指令,將在 mydataset 中建立之新分區資料表的預設分區到期時間設定為 26 小時 (93,600 秒)。該資料集位於預設專案中。

bq update --default_partition_expiration 93600 mydataset

輸入下列指令,將在 mydataset 中建立之新分區資料表的預設分區到期時間設定為 26 小時 (93,600 秒)。該資料集位於 myotherproject,而非預設專案。

bq update --default_partition_expiration 93600 myotherproject:mydataset

API

呼叫 datasets.patch 並更新資料集資源中的 defaultPartitionExpirationMs 屬性。到期時間會以毫秒為單位表示。由於 datasets.update 方法會取代整個資料集資源,因此建議使用 datasets.patch 方法。

更新捨入模式

您可以使用 ALTER SCHEMA SET OPTIONS DDL 陳述式更新資料集的預設捨入模式。以下範例會將 mydataset 的預設捨入模式更新為 ROUND_HALF_EVEN

ALTER SCHEMA mydataset
SET OPTIONS (
  default_rounding_mode = "ROUND_HALF_EVEN");

這會為資料集中新建立的資料表設定預設捨入模式。這不會影響新增至現有資料表的新資料欄。在資料集中設定資料表的預設捨入模式,即可覆寫這個選項。

更新時間回溯期

您可以透過下列方式更新資料集的時間旅行視窗:

如要進一步瞭解時間旅行視窗,請參閱「設定時間旅行視窗」。

如要更新資料集的時間回溯期,請按照下列步驟操作:

主控台

  1. 在「Explorer」面板中展開專案並選取資料集。
  2. 展開 「動作」選項,然後按一下「開啟」
  3. 在「詳細資料」面板中,按一下 「編輯詳細資料」
  4. 展開「進階選項」,然後選取要使用的「時間旅行視窗」
  5. 按一下 [儲存]

SQL

使用 ALTER SCHEMA SET OPTIONS 陳述式搭配 max_time_travel_hours 選項,即可在變更資料集時指定時間旅行視窗。max_time_travel_hours 值必須是整數,以 24 的倍數 (48、72、96、120、144、168) 表示,介於 48 (2 天) 和 168 (7 天) 之間。

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

    前往 BigQuery

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

    ALTER SCHEMA DATASET_NAME
    SET OPTIONS(
      max_time_travel_hours = HOURS);

    更改下列內容:

    • DATASET_NAME:您要更新的資料集名稱
    • HOURS,其中時間回溯期的時間長度以小時為單位。

  3. 按一下 「Run」

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

bq

使用 bq update 指令搭配 --max_time_travel_hours 旗標,即可在變更資料集時指定時間旅行視窗。--max_time_travel_hours 值必須是整數,以 24 的倍數 (48、72、96、120、144、168) 表示,介於 48 (2 天) 和 168 (7 天) 之間。

bq update \
--dataset=true --max_time_travel_hours=HOURS \
PROJECT_ID:DATASET_NAME

請依指示取代下列項目:

  • PROJECT_ID:您的專案 ID
  • DATASET_NAME:您要更新的資料集名稱
  • HOURS 與時間回溯期的時長 (以小時為單位)

API

請呼叫 datasets.patchdatasets.update 方法,搭配您已為 maxTimeTravelHours 欄位指定值的已定義資料集資源maxTimeTravelHours 值必須是整數,以 24 為倍數 (48、72、96、120、144、168),介於 48 (2 天) 和 168 (7 天) 之間。

更新儲存空間計費模式

您可以變更資料集的儲存空間計費模式。將 storage_billing_model 值設為 PHYSICAL,即可在計算儲存空間變化時使用實體位元組;將其設為 LOGICAL,則可使用邏輯位元組。預設為 LOGICAL

變更資料集的計費模式後,變更會在 24 小時後生效。

一旦變更資料集的儲存空間計費模式,就必須等待 14 天,才能再次變更儲存空間計費模式。

主控台

  1. 在「Explorer」面板中展開專案並選取資料集。
  2. 展開 「動作」選項,然後按一下「開啟」
  3. 在「詳細資料」面板中,按一下 「編輯詳細資料」
  4. 展開「進階選項」,然後選取「啟用實體儲存空間計費模式」即可使用實體儲存空間計費模式,取消選取該選項則可使用邏輯儲存空間計費模式。
  5. 按一下 [儲存]

SQL

如要更新資料集的結帳系統模型,請使用 ALTER SCHEMA SET OPTIONS 陳述式並設定 storage_billing_model 選項:

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

    前往 BigQuery

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

    ALTER SCHEMA DATASET_NAME
    SET OPTIONS(
     storage_billing_model = 'BILLING_MODEL');

    更改下列內容:

    • DATASET_NAME 換成您要變更的資料集名稱
    • BILLING_MODEL 與您要使用的儲存空間類型 (LOGICALPHYSICAL)

  3. 按一下 「Run」

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

如要針對專案中的所有資料集更新儲存空間帳單模型,請針對每個資料集所在的區域使用以下 SQL 查詢:

FOR record IN
 (SELECT CONCAT(catalog_name, '.', schema_name) AS dataset_path
 FROM PROJECT_ID.region-REGION.INFORMATION_SCHEMA.SCHEMATA)
DO
 EXECUTE IMMEDIATE
   "ALTER SCHEMA `" || record.dataset_path || "` SET OPTIONS(storage_billing_model = 'BILLING_MODEL')";
END FOR;

更改下列內容:

  • PROJECT_ID 改成您的專案 ID
  • REGION 搭配區域限定條件
  • BILLING_MODEL 與您要使用的儲存空間類型 (LOGICALPHYSICAL)

bq

如要更新資料集的計費模式,請使用 bq update 指令並設定 --storage_billing_model 標記:

bq update -d --storage_billing_model=BILLING_MODEL PROJECT_ID:DATASET_NAME

請依指示取代下列項目:

  • PROJECT_ID:您的專案 ID
  • DATASET_NAME:您要更新的資料集名稱
  • BILLING_MODEL:您要使用的儲存空間類型,可為 LOGICALPHYSICAL

API

使用已定義的資料集資源呼叫 datasets.update 方法,其中已設定 storageBillingModel 欄位。

以下範例說明如何使用 curl 呼叫 datasets.update

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -L -X PUT https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT_ID/datasets/DATASET_ID -d '{"datasetReference": {"projectId": "PROJECT_ID", "datasetId": "DATASET_NAME"}, "storageBillingModel": "BILLING_MODEL"}'

請依指示取代下列項目:

  • PROJECT_ID:您的專案 ID
  • DATASET_NAME:您要更新的資料集名稱
  • BILLING_MODEL:您要使用的儲存空間類型,可為 LOGICALPHYSICAL

更新存取權控管設定

如要控管 BigQuery 資料集的存取權,請參閱「控管資料集存取權」。如要進一步瞭解資料加密,請參閱「靜態資料加密」。

後續步驟

  • 如要進一步瞭解如何建立資料集,請參閱「建立資料集」。
  • 如要進一步瞭解如何管理資料集,請參閱「管理資料集」。