安排查询

本页面介绍如何在 BigQuery 中安排周期性查询。

您可以计划查询定期运行。计划查询必须使用标准 SQL 编写,其中可包括数据定义语言 (DDL)数据操纵语言 (DML) 语句。您可以通过参数化查询字符串和目标表来按日期和时间组织查询结果。

准备工作

计划查询使用 BigQuery Data Transfer Service 的功能。验证您已完成启用 BigQuery Data Transfer Service 中要求的所有操作。

所需权限

在安排查询之前,请先做好以下准备:

  • 确保创建转移作业的人员在 BigQuery 中拥有以下所需权限:

    • 创建转移作业所需的 bigquery.jobs.createbigquery.transfers.update 权限。
    • 执行计划查询所需的 bigquery.jobs.create
    • 针对目标数据集的 bigquery.datasets.update 权限。

    预定义的 IAM 角色 bigquery.jobUser 包含 bigquery.jobs.create 权限。如需详细了解 BigQuery 中的 IAM 角色,请参阅预定义的角色和权限

在修改计划查询之前,请先做好以下准备:

  • 确保修改计划查询的人员在 BigQuery 中拥有以下所需权限:
    • bigquery.jobs.create 权限(并且该人员必须是时间表的创建者)。
    • bigquery.transfers.update 权限。

配置选项

查询字符串

查询字符串必须有效,且必须使用标准 SQL 编写。计划查询每次运行时,都会收到以下查询参数

如需在计划查询之前使用 @run_time@run_date 参数手动测试查询字符串,请使用 bq 命令行工具。

可用参数

参数 标准 SQL 类型
@run_time TIMESTAMP 以世界协调时间 (UTC) 表示。对于定期运行的计划查询,run_time 表示预期执行时间。例如,如果计划查询设置为“每 24 小时”,则连续两次查询之间的 run_time 差值将正好为 24 小时,虽然实际的执行耗时可能略有不同。
@run_date DATE 表示逻辑日历日期。

示例

以下示例查询名为 hacker_news.stories 的公共数据集,其中 @run_time 参数是查询字符串的一部分。

SELECT @run_time AS time,
  title,
  author,
  text
FROM `bigquery-public-data.hacker_news.stories`
LIMIT
  1000

目标表

在您设置计划查询时,如果结果的目标表不存在,BigQuery 会尝试为您创建表。

如果您使用的是 DDL 或 DML 查询,请在 Cloud Console 中选择处理位置或区域。创建目标表的 DDL 或 DML 查询需要具有处理位置。

如果目标表存在,BigQuery 可以根据查询结果更新目标表的架构。为此,请使用 ALLOW_FIELD_ADDITION 添加列,或使用 ALLOW_FIELD_RELAXATION 将列的模式从 REQUIRED 放宽为 NULLABLE。否则,如果表架构在多轮运行之间发生更改,则会导致计划查询失败。

查询可以引用不同项目和不同数据集中的表。配置计划查询时,无需在表名称中包括目标数据集。您可以单独指定目标数据集。

写入偏好设置

您选择的写入偏好设置决定了将查询结果写入现有目标表的方式。

  • WRITE_TRUNCATE:如果相关表已存在,BigQuery 会覆盖表数据。
  • WRITE_APPEND:如果相关表已存在,BigQuery 会向此表附加数据。

如果您使用的是 DDL 或 DML 查询,则无法使用“写入偏好设置”选项。

仅当 BigQuery 能够成功完成查询时,才会创建、截断或附加目标表。作业完成时,创建、截断或附加操作会作为原子更新发生。

聚簇

当使用 DDL CREATE TABLE AS SELECT 语句创建表时,计划查询只能在新表上创建聚簇。请参阅使用数据定义语言语句页面上的基于查询结果创建聚簇表

分区选项

计划查询可以创建分区或非分区目标表。Cloud Console、bq 命令行工具和 API 设置方法中提供了分区功能。如果您使用的是带分区功能的 DDL 或 DML 查询,请将目标表分区字段留空。

BigQuery 中有两种类型的表分区:

  • 按提取时间分区的表:根据计划查询的运行时间分区的表。
  • 按列分区的表:根据 TIMESTAMPDATE 列分区的表。

对于按列分区的表,当您设置计划查询时,请在 Cloud Console 中的目标表分区字段中指定该列的名称。

对于提取时间分区表,请将目标表分区字段留空,并在目标表名称中指明日期分区。如需了解详情,请参阅参数模板语法

分区示例

  • 没有分区的表
    • 目标表:mytable
    • 分区字段:留空
  • 提取时间分区表
    • 目标表:mytable$YYYYMMDD
    • 分区字段:留空
  • 列分区表
    • 目标表:mytable
    • 分区字段:用于对表进行分区的 TIMESTAMPDATE 列的名称

可用参数

设置计划查询时,您可以使用运行时参数指定对目标表进行分区的方式。

参数 模板类型
run_time 带格式的时间戳 采用世界协调时间 (UTC),按照时间表来设置。对于定期运行的计划查询,run_time 表示预期执行时间。例如,如果计划查询设置为“每 24 小时”,则连续两次查询之间的 run_time 差值将正好为 24 小时,虽然实际的执行耗时可能略有不同。

请参阅 TransferRun.runTime
run_date 日期字符串 run_time 参数的日期格式为 %Y%m%d,例如 20180101。此格式与提取时间分区表兼容。

模板系统

计划查询支持通过模板语法在目标表名称中采用运行时参数。

参数模板语法

模板语法支持基本的字符串模板和时间偏移量设置。您可以采用以下格式来引用参数:

  • {run_date}
  • {run_time[+\-offset]|"time_format"}
参数 用途
run_date 此参数将替换成格式为 YYYYMMDD 的日期。
run_time 此参数支持以下属性:


offset
按小时 (h)、分钟 (m) 和秒 (s) 的顺序表示的时间偏移量。
不支持天 (d)。
允许使用小数,例如 1.5h

time_format
带格式的字符串。最常见的格式参数是年 (%Y)、月 (%m) 和日 (%d)。
对于分区表,YYYYMMDD 是必需的后缀,等效于“%Y%m%d”。

详细了解带格式的 datetime 元素

使用说明
  • run_time、offset 和 time_format 之间不允许有空格。
  • 如需在字符串中包含文本大括号,您可以将其转义为 ‘\{‘ and ‘\}’
  • 如需在 time_format 中包含文本引号或竖线(例如 “YYYY|MM|DD”),您可以在格式字符串中将其转义为 ‘\”’‘\|’

参数模板示例

以下示例演示了如何使用不同的时间格式指定目标表名称,以及如何设置运行时间的偏移量。
run_time (UTC) 模板化参数 输出目标表名称
2018-02-15 00:00:00 mytable mytable
2018-02-15 00:00:00 mytable_{run_time|"%Y%m%d"} mytable_20180215
2018-02-15 00:00:00 mytable_{run_time+25h|"%Y%m%d"} mytable_20180216
2018-02-15 00:00:00 mytable_{run_time-1h|"%Y%m%d"} mytable_20180214
2018-02-15 00:00:00 mytable_{run_time+1.5h|"%Y%m%d;%H"}

mytable_{run_time+90m|"%Y%m%d;%H"}
mytable_2018021501
2018-02-15 00:00:00 {run_time+97s|"%Y%m%d"}_mytable_{run_time|"%H%M%s"} 20180215_mytable_000137

使用服务帐号

您可以设置计划查询来使用服务帐号进行身份验证。服务帐号是与您的 Google Cloud 项目关联的 Google 帐号。服务帐号可以使用自己的服务凭据(而不是最终用户的凭据)运行作业(例如计划查询或批处理流水线)。

要详细了解使用服务帐号进行身份验证,请阅读身份验证简介

  • 您可以在设置计划查询中的高级选项下,使用服务帐号设置计划查询。

  • 您可以通过 bq 命令行工具使用服务帐号的凭据更新现有计划查询。请参阅更新计划查询的凭据

  • Cloud Console 当前不支持更新计划查询以使用服务帐号凭据。

设置计划查询

控制台

  1. 在 Cloud Console 中打开 BigQuery 页面。

    转到 BigQuery 页面

  2. 运行所需查询。如果您对结果感到满意,请点击计划查询创建新的计划查询

    在 Cloud Console 中创建新的计划查询。

  3. 计划查询选项在新建计划查询窗格中打开。

  4. 新建计划查询窗格上:

    • 对于计划查询的名称,请输入一个名称,例如 My scheduled query。计划查询的名称可以是您以后在需要修改查询时可识别的任何值。
    • (可选)在计划选项部分,您可以保留默认值每日一次(基于创建时间,每 24 小时一次),或点击计划开始时间更改时间。您还可以将间隔时间更改为“每周”、“每月”或“自定义”。如果选择“自定义”,则需采用类似 Cron 作业使用的时间规范,例如 every 3 hours。允许的最短时长为 15 分钟。如需了解更多有效的 API 值,请参阅 TransferConfig 下的 schedule 字段。

      设置新计划查询的时间表。

  5. 对于标准 SQL SELECT 查询,请提供目标数据集的相关信息。

    • 对于数据集名称,请选择适当的目标数据集。
    • 对于表名称,请输入目标表的名称。
      • 对于 DDL 或 DML 查询,不显示此选项。
    • 对于目标表的写入设置,请选择 WRITE_TRUNCATE 覆盖目标表的数据,或选择 WRITE_APPEND 向其附加数据。

      • 对于 DDL 或 DML 查询,不显示此选项。

      新的计划查询目标。

  6. (可选)高级选项

    • (可选)CMEK:如果您使用客户管理的加密密钥,您可以选择高级选项下的客户管理的密钥。系统会显示一系列可用的 CMEK 供您选择。

    • (可选)使用服务帐号进行身份验证:如果您有一个或多个服务帐号与 Google Cloud 项目关联,则可以将服务帐号与计划查询相关联,而不是使用用户凭据。在计划查询凭据下,点击菜单可查看可用服务帐号列表。

      计划查询的高级选项

  7. 其他配置:

    • (可选)勾选发送电子邮件通知,让系统在转移作业运行失败时发送电子邮件通知。

    • 对于 DDL 和 DML 查询,请选择处理位置或区域。

    • (可选)在 Pub/Sub 主题部分,请输入您的 Pub/Sub 主题名称,例如,projects/myproject/topics/mytopic

      新的计划查询 DDL 和 DML。

  8. 点击计划按钮。

bq

方法 1:使用 bq query 命令。

要创建计划查询,请将选项 destination_table(或 target_dataset)、--schedule--display_name 添加到您的 bq query 命令。

bq query \
--display_name=name \
--destination_table=table \
--schedule=interval

替换以下内容:

  • name。计划查询的显示名。显示名可以是您以后在需要修改查询时可识别的任何值。
  • table。查询结果的目标表。
    • 使用 DDL 和 DML 查询时,您还可以使用 --target_dataset 为查询结果命名目标数据集。
    • 请使用 --destination_table--target_dataset,但不要同时使用这两者。
  • interval:与 bq query 一起使用时,可将查询设为周期性计划查询。需要有关查询运行频率的计划。示例:
    • --schedule='every 24 hours'
    • --schedule='every 3 hours'

可选标志:

  • --project_id 是项目 ID。如果未指定 --project_id,系统会使用默认项目。

  • --replace 会截断目标表,并在计划查询每次运行时写入新结果。

  • --append_table 会将结果附加到目标表。

例如,以下命令会使用简单查询 SELECT 1 from mydataset.test 创建名为 My Scheduled Query 的计划查询。目标表是数据集 mydataset 中的 mytable。计划查询将在默认项目中创建:

    bq query \
    --use_legacy_sql=false \
    --destination_table=mydataset.mytable \
    --display_name='My Scheduled Query' \
    --schedule='every 24 hours' \
    --replace=true \
    'SELECT
      1
    FROM
      mydataset.test'


方法 2:使用 bq mk 命令。

计划查询是一种转移作业。如需计划查询,您可以使用 bq 命令行工具创建转移作业配置。

拟安排的计划查询必须使用 StandardSQL 方言。

输入 bq mk 命令并提供转移作业创建标志 --transfer_config。此外,还必须提供以下标志:

  • --data_source
  • --target_dataset(对于 DDL 和 DML 查询,此标志是可选的)
  • --display_name
  • --params

可选标志:

  • --project_id 是项目 ID。如果未指定 --project_id,系统会使用默认项目。

  • --schedule 是您希望查询运行的频率。如果未指定 --schedule,则默认基于创建时间“每 24 小时运行一次”。

  • 对于 DDL 和 DML 查询,您还可以提供 --location 标志以指定要处理的特定区域。如果未指定 --location,则使用全局 Google Cloud 位置。

  • --service_account_name 用于通过服务帐号而不是您的个人用户帐号对计划查询进行身份验证。

bq mk \
--transfer_config \
--project_id=project_id \
--target_dataset=dataset \
--display_name=name \
--params='parameters' \
--data_source=data_source

替换以下内容:

  • dataset。转移作业配置的目标数据集。
    • 对于 DDL 和 DML 查询,此参数是可选的。所有其他查询都必须设置此参数。
  • name。转移作业配置的显示名。显示名可以是您以后在需要修改查询时可识别的任何值。
  • parameters。包含所创建转移作业配置的参数(采用 JSON 格式),例如:--params='{"param":"param_value"}'
    • 对于计划查询,您必须提供 query 参数。
    • destination_table_name_template 参数是您的目标表的名称。
      • 对于 DDL 和 DML 查询,此参数是可选的。所有其他查询都必须设置此参数。
    • 对于 write_disposition 参数,您可以选择使用 WRITE_TRUNCATE 截断(覆盖)目标表,或选择使用 WRITE_APPEND 将查询结果附加到目标表。
      • 对于 DDL 和 DML 查询,此参数是可选的。所有其他查询都必须设置此参数。
    • (可选)destination_table_kms_key 参数用于客户管理的加密密钥
    • (可选)--service_account_name 参数用于通过服务帐号而不是个人用户帐号进行身份验证。
  • data_source。数据源:scheduled_query

例如,以下命令会使用简单查询 SELECT 1 from mydataset.test 创建名为 My Scheduled Query 的计划查询转移作业配置。目标表 mytable 会在每次写入时被截断,而目标数据集为 mydataset。计划查询将在默认项目中创建,并使用服务帐号进行身份验证:

bq mk \
--transfer_config \
--target_dataset=mydataset \
--display_name='My Scheduled Query' \
--params='{"query":"SELECT 1 from mydataset.test","destination_table_name_template":"mytable","write_disposition":"WRITE_TRUNCATE"}' \
--data_source=scheduled_query \
--service_account_name=abcdef-test-sa@abcdef-test.iam.gserviceaccount.com

首次运行此命令时,您会收到如下消息:

[URL omitted] Please copy and paste the above URL into your web browser and follow the instructions to retrieve an authentication code.

请按照该消息中的说明操作,并将身份验证代码粘贴到命令行中。

API

使用 projects.locations.transferConfigs.create 方法并提供一个 TransferConfig 资源实例。

Java

如需了解如何安装和使用 BigQuery 客户端库,请参阅 BigQuery 客户端库。 如需了解详情,请参阅 BigQuery Java API 参考文档

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.CreateTransferConfigRequest;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.ProjectName;
import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
import com.google.protobuf.Struct;
import com.google.protobuf.Value;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

// Sample to create a scheduled query
public class CreateScheduledQuery {

  public static void runCreateScheduledQuery() {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    String datasetId = "MY_DATASET_ID";
    String query =
        "SELECT CURRENT_TIMESTAMP() as current_time, @run_time as intended_run_time, @run_date as intended_run_date, 17 as some_integer";
    Map<String, Value> params = new HashMap<>();
    params.put("query", Value.newBuilder().setStringValue(query).build());
    params.put(
        "destination_table_name_template",
        Value.newBuilder().setStringValue("my_destination_table_{run_date}").build());
    params.put("write_disposition", Value.newBuilder().setStringValue("WRITE_TRUNCATE").build());
    params.put("partitioning_field", Value.newBuilder().build());
    TransferConfig transferConfig =
        TransferConfig.newBuilder()
            .setDestinationDatasetId(datasetId)
            .setDisplayName("Your Scheduled Query Name")
            .setDataSourceId("scheduled_query")
            .setParams(Struct.newBuilder().putAllFields(params).build())
            .setSchedule("every 24 hours")
            .build();
    createScheduledQuery(projectId, transferConfig);
  }

  public static void createScheduledQuery(String projectId, TransferConfig transferConfig) {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      ProjectName parent = ProjectName.of(projectId);
      CreateTransferConfigRequest request =
          CreateTransferConfigRequest.newBuilder()
              .setParent(parent.toString())
              .setTransferConfig(transferConfig)
              .build();
      TransferConfig config = dataTransferServiceClient.createTransferConfig(request);
      System.out.print("Scheduled query created successfully." + config.getName());
    } catch (IOException | ApiException ex) {
      System.out.print("Scheduled query was not created." + ex.toString());
    }
  }
}

Python

如需了解如何安装和使用 BigQuery 客户端库,请参阅 BigQuery 客户端库。 如需了解详情,请参阅 BigQuery Python API 参考文档

from google.cloud import bigquery_datatransfer_v1
import google.protobuf.json_format

client = bigquery_datatransfer_v1.DataTransferServiceClient()

# TODO(developer): Set the project_id to the project that contains the
#                  destination dataset.
# project_id = "your-project-id"

# TODO(developer): Set the destination dataset. The authorized user must
#                  have owner permissions on the dataset.
# dataset_id = "your_dataset_id"

# TODO(developer): The first time you run this sample, set the
# authorization code to a value from the URL:
# https://www.gstatic.com/bigquerydatatransfer/oauthz/auth?client_id=433065040935-hav5fqnc9p9cht3rqneus9115ias2kn1.apps.googleusercontent.com&scope=https://www.googleapis.com/auth/bigquery%20https://www.googleapis.com/auth/drive&redirect_uri=urn:ietf:wg:oauth:2.0:oob
#
# authorization_code = "_4/ABCD-EFGHIJKLMNOP-QRSTUVWXYZ"
#
# You can use an empty string for authorization_code in subsequent runs of
# this code sample with the same credentials.
#
# authorization_code = ""

# Use standard SQL syntax for the query.
query_string = """
SELECT
  CURRENT_TIMESTAMP() as current_time,
  @run_time as intended_run_time,
  @run_date as intended_run_date,
  17 as some_integer
"""

parent = client.project_path(project_id)

transfer_config = google.protobuf.json_format.ParseDict(
    {
        "destination_dataset_id": dataset_id,
        "display_name": "Your Scheduled Query Name",
        "data_source_id": "scheduled_query",
        "params": {
            "query": query_string,
            "destination_table_name_template": "your_table_{run_date}",
            "write_disposition": "WRITE_TRUNCATE",
            "partitioning_field": "",
        },
        "schedule": "every 24 hours",
    },
    bigquery_datatransfer_v1.types.TransferConfig(),
)

response = client.create_transfer_config(
    parent, transfer_config, authorization_code=authorization_code
)

print("Created scheduled query '{}'".format(response.name))

查看计划查询的状态

控制台

如需查看计划查询的状态,请点击导航窗格中的计划查询。刷新页面即可查看计划查询的更新状态。点击计划查询可获取详细信息。

列出计划查询。

bq

计划查询是一种转移作业。如需显示计划查询的详细信息,您可以先使用 bq 命令行工具列出转移作业配置。

输入 bq ls 命令并提供转移作业标志 --transfer_config。此外,还必须提供以下标志:

  • --transfer_location

例如:

bq ls \
--transfer_config \
--transfer_location=us \

如需显示单个计划查询的详细信息,请输入 bq show 命令并提供该计划查询/转移作业配置的 transfer_path

例如:

bq show \
--transfer_config \
projects/862514376110/locations/us/transferConfigs/5dd12f26-0000-262f-bc38-089e0820fe38 \

API

使用 projects.locations.transferConfigs.list 方法并提供一个 TransferConfig 资源实例。

更新计划查询的凭据

如果您计划的是现有查询,则可能需要更新该查询的用户凭据。对于新的计划查询,凭据会自动更新到最新状态。

以下是可能需要更新凭据的一些其他情况:

  • 您希望通过计划查询来查询云端硬盘数据
  • 当您尝试计划查询时,收到 INVALID_USER 错误:

    Error code 5 : Authentication failure: User Id not found. Error code: INVALID_USERID

控制台

如需刷新计划查询的现有凭据,请执行以下操作

  1. 查找并查看计划查询的状态

  2. 点击更多按钮并选择更新凭据

    更新计划查询凭据。

  3. 更改需要 10 到 20 分钟的时间才会生效。您可能需要清除浏览器的缓存。

bq

计划查询是一种转移作业。如需更新计划查询的凭据,您可以使用 bq 命令行工具更新转移作业配置。

输入 bq update 命令并提供转移作业标志 --transfer_config。此外,还必须提供以下标志:

  • --update_credentials

可选标志:

  • --service_account_name 用于通过服务帐号而不是您的个人用户帐号对计划查询进行身份验证。

例如,下列命令会更新计划查询转移作业配置以使用服务帐号进行身份验证:

bq update \
--transfer_config \
--update_credentials \
--service_account_name=abcdef-test-sa@abcdef-test.iam.gserviceaccount.com projects/862514376110/locations/us/transferConfigs/5dd12f26-0000-262f-bc38-089e0820fe38 \

设置历史日期的手动运行

除了计划要在将来运行的查询外,您还可以手动触发即刻运行。如果查询使用 run_date 参数,并且在先前的运行期间存在问题,则必须触发即刻运行。

例如,您每天 09:00 查询源表,以查找与当前日期匹配的行。但是,您发现过去三天的数据未添加到源表中。在此情况下,您可以设置对指定日期范围内的历史数据运行查询。运行查询时结合使用 run_daterun_time 参数,它们与计划查询中配置的日期相对应。

设置计划查询后,您可以根据以下说明,使用历史日期范围运行查询:

控制台

点击计划保存计划查询后,点击计划查询按钮可查看包含当前计划查询的列表。 点击任何显示名可查看查询计划的详细信息。在页面右上角,点击安排回填可指定历史日期范围。

“安排回填”按钮。

所选的运行时均在您选择的范围内(包括第一个日期,不包括最后一个日期)。

设置历史日期

示例 1

您设置了在 every day 09:00(太平洋时间)运行您的计划查询。但是您缺少了 1 月 1 日、1 月 2 日和 1 月 3 日的数据。选择以下历史日期范围:

Start Time = 1/1/19
End Time = 1/4/19

您的查询将使用与以下时间相对应的 run_daterun_time 参数运行:

  • 19/1/1 09:00 太平洋时间
  • 19/1/2 09:00 太平洋时间
  • 19/1/3 09:00 太平洋时间

示例 2

您设置了在 every day 23:00(太平洋时间)运行您的计划查询。但是您缺少了 1 月 1 日、1 月 2 日和 1 月 3 日的数据。选择以下历史日期范围(选择较晚的日期,是因为太平洋时间 23:00 已经是 UTC 的次日):

Start Time = 1/2/19
End Time = 1/5/19

您的查询将使用与以下时间相对应的 run_daterun_time 参数运行:

  • 19/1/2 09:00 UTC,或 2019/1/1 23:00 太平洋时间
  • 19/1/3 09:00 UTC,或 2019/1/2 23:00 太平洋时间
  • 19/1/4 09:00 UTC,或 2019/1/3 23:00 太平洋时间

设置手动运行后,刷新页面即可在运行列表中查看它们。

bq

如需在历史日期范围内手动运行查询,请执行以下操作:

输入 bq mk 命令并提供转移运行标志 --transfer_run。此外,还必须提供以下标志:

  • --start_time
  • --end_time
bq mk \
--transfer_run \
--start_time='start_time' \
--end_time='end_time' \
resource_name

替换以下内容:

  • start_timeend_time。 以 Z 结尾或包含有效时区偏移量的时间戳。示例:
    • 2017-08-19T12:11:35.00Z
    • 2017-05-25T00:00:00+00:00
  • resource_name。计划查询(或转移作业)的资源名称。资源名称也称为转移作业配置。

例如,以下命令会为计划查询资源(或转移作业配置)安排回填: projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7

  bq mk \
  --transfer_run \
  --start_time 2017-05-25T00:00:00Z \
  --end_time 2017-05-25T00:00:00Z \
  projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7

API

使用 projects.locations.transferConfigs.scheduleRun 方法并提供 TransferConfig 资源的路径。

配额

计划查询使用创建者的凭据和项目来执行,就像您自己在执行查询一样。

虽然计划查询使用 BigQuery Data Transfer Service 的功能,但它们不是转移作业,并且不受加载作业配额的约束。计划查询与手动查询受相同的 BigQuery 配额和限制约束。

价格

计划查询与手动 BigQuery 查询的价格相同。

支持的区域

以下位置支持计划查询。

区域位置

区域说明 单区域名称
美洲
拉斯维加斯 us-west4
洛杉矶 us-west2
蒙特利尔 northamerica-northeast1
北弗吉尼亚 us-east4
俄勒冈 us-west1
盐湖城 us-west3
圣保罗 southamerica-east1
南卡罗来纳 us-east1
欧洲
比利时 europe-west1
芬兰 europe-north1
法兰克福 europe-west3
伦敦 europe-west2
荷兰 europe-west4
苏黎世 europe-west6
亚太地区
香港 asia-east2
雅加达 asia-southeast2
孟买 asia-south1
大阪 asia-northeast2
首尔 asia-northeast3
新加坡 asia-southeast1
悉尼 australia-southeast1
台湾 asia-east1
东京 asia-northeast1

多区域位置

多区域说明 多区域名称
欧盟成员国的数据中心1 EU
美国的数据中心 US

1 位于 EU 多区域的数据不会存储在 europe-west2(伦敦)或 europe-west6(苏黎世)数据中心中。