更新数据集属性

本文档介绍了如何在 BigQuery 中更新数据集属性。创建数据集后,您可以更新以下数据集属性:

准备工作

授予为用户提供执行本文档中的每个任务所需权限的 Identity and Access Management (IAM) 角色。

所需权限

如需更新数据集属性,您需要拥有以下 IAM 权限:

  • bigquery.datasets.update
  • bigquery.datasets.setIamPolicy(仅当在 Google Cloud 控制台中更新数据集访问权限控制时才需要)

预定义的 IAM 角色 roles/bigquery.dataOwner 可提供更新数据集属性所需的权限。

此外,如果您拥有 bigquery.datasets.create 权限,则可以更新自己创建的数据集的属性。

如需详细了解 BigQuery 中的 IAM 角色和权限,请参阅预定义的角色和权限

更新数据集说明

您可以通过以下方式更新表的说明:

  • 使用 Google Cloud 控制台。
  • 使用 bq 命令行工具的 bq update 命令。
  • 调用 datasets.patch API 方法。
  • 使用客户端库。

如需更新数据集的说明,请执行以下操作:

控制台

  1. 浏览器面板中,展开您的项目并选择数据集。

  2. 展开 操作选项,然后点击打开

  3. 详细信息面板中,点击 修改详细信息以修改说明文本。

    在显示的修改详细信息对话框中,执行以下操作:

    1. 说明字段中,输入说明或修改现有说明。
    2. 如需保存新的说明文本,请点击保存

SQL

如需更新数据集的说明,请使用 ALTER SCHEMA SET OPTIONS 语句来设置 description 选项。

以下示例为名为 mydataset 的数据集设置说明:

  1. 在 Google Cloud 控制台中,前往 BigQuery 页面。

    转到 BigQuery

  2. 在查询编辑器中,输入以下语句:

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

  3. 点击 运行

如需详细了解如何运行查询,请参阅运行交互式查询

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 属于默认项目。

bq update --description "Description of mydataset" mydataset 

输入以下命令可将 mydataset 的说明更改为“Description of 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.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. 浏览器面板中,展开您的项目并选择数据集。

  2. 展开 操作选项,然后点击打开

  3. 在详细信息面板中,点击数据集信息旁边的铅笔图标以修改到期时间。

  4. 数据集信息对话框的默认表过期时间部分中,输入创建表后的天数的值。

  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. 点击 运行

如需详细了解如何运行查询,请参阅运行交互式查询

bq

如需更新数据集中新创建的表的默认到期时间,请输入带 --default_table_expiration 标志的 bq update 命令。如果您要更新非默认项目中的数据集,请按以下格式将相应项目 ID 添加到数据集名称中:project_id:dataset

bq update \ --default_table_expiration integer \ project_id:dataset

请替换以下内容:

  • integer:新创建的表的默认生命周期(以秒为单位)。最小值为 3600 秒(一小时)。到期时间以当前世界协调时间 (UTC) 加上这个整数值为准。 指定 0 可移除现有到期时间。在数据集中创建的任何表都会在创建之时起的 integer 秒后删除。如果您在创建表时未设置表到期时间,则系统会应用此值。
  • project_id:您的项目 ID。
  • dataset:您要更新的数据集的名称。

示例:

输入以下命令可将在 mydataset 中创建的新表的默认表过期时间设置为从当前时间算起两小时(7200 秒)。该数据集在默认项目中。

bq update --default_table_expiration 7200 mydataset 

输入以下命令可将在 mydataset 中创建的新表的默认表过期时间设置为从当前时间算起两小时(7200 秒)。该数据集属于 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.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. 点击 运行

如需详细了解如何运行查询,请参阅运行交互式查询

bq

如需更新数据集的默认到期时间,请输入带 --default_partition_expiration 标志的 bq update 命令。如果您要更新非默认项目中的数据集,请按以下格式将相应项目 ID 添加到数据集名称中:project_id:dataset

bq update \ --default_partition_expiration integer \ project_id:dataset

请替换以下内容:

  • integer:新创建的分区表中分区的默认生命周期(以秒为单位)。此标志没有最小值。指定 0 可移除现有到期时间。新创建的分区表中的所有分区都会在分区创建日期(按世界协调时间 (UTC) 计算)之时起的 integer 秒后删除。如果您在创建表时未设置分区到期时间,则系统会应用此值。
  • project_id:您的项目 ID。
  • dataset:您要更新的数据集的名称。

示例:

输入以下命令可将在 mydataset 中创建的新分区表的默认分区到期时间设置为 26 小时(93600 秒)。该数据集在默认项目中。

bq update --default_partition_expiration 93600 mydataset 

输入以下命令可将在 mydataset 中创建的新分区表的默认分区到期时间设置为 26 小时(93600 秒)。该数据集属于 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. 浏览器面板中,展开您的项目并选择数据集。
  2. 展开 操作选项,然后点击打开
  3. 详细信息面板中,点击 修改详细信息
  4. 展开高级选项,然后选择要使用的时间旅行窗口
  5. 点击保存

SQL

在更改数据集时,使用带有 max_time_travel_hours 选项的 ALTER SCHEMA SET OPTIONS 语句来指定时间旅行窗口。max_time_travel_hours 值必须是 48(2 天)到 168(7 天)之间以 24 的倍数(48、72、96、120、144、168)表示的整数。

  1. 在 Google Cloud 控制台中,前往 BigQuery 页面。

    转到 BigQuery

  2. 在查询编辑器中,输入以下语句:

    ALTER SCHEMA DATASET_NAME SET OPTIONS(   max_time_travel_hours = HOURS);

    请替换以下内容:

    • DATASET_NAME:您要更新的数据集的名称
    • HOURS 替换为时间旅行窗口的时长(以小时为单位)。

  3. 点击 运行

如需详细了解如何运行查询,请参阅运行交互式查询

bq

在更改数据集时,使用带有 --max_time_travel_hours 标志的 bq update 命令来指定时间窗口。--max_time_travel_hours 值必须是 48(2 天)到 168(7 天)之间以 24 的倍数(48、72、96、120、144、168)表示的整数。

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

请替换以下内容:

  • PROJECT_ID:您的项目 ID
  • DATASET_NAME:您要更新的数据集的名称
  • HOURS 替换为时间旅行窗口的时长(以小时为单位)

API

使用已定义的数据集资源(已在其中为 maxTimeTravelHours 字段指定值)调用 datasets.patchdatasets.update 方法。maxTimeTravelHours 值必须是 48(2 天)到 168(7 天)之间以 24 的倍数(48、72、96、120、144、168)表示的整数。

更新存储结算模式

您可以更改数据集的存储结算模式。您可以将 storage_billing_model 值设置为 PHYSICAL 以在计算存储费用时使用物理字节,或设置为 LOGICAL 以使用逻辑字节。默认值为 LOGICAL

更改数据集的结算模式后,更改需要 24 小时才能生效。

更改数据集的存储空间结算模式后,您必须等待 14 天才能再次更改存储空间结算模式。

控制台

  1. 浏览器面板中,展开您的项目并选择数据集。
  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. 点击 运行

如需详细了解如何运行查询,请参阅运行交互式查询

如需更新项目中所有数据集的存储结算模式,请对数据集所在的每个区域使用以下 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 中数据集的访问权限,请参阅控制对数据集的访问权限。 如需了解数据加密,请参阅静态加密

后续步骤