如何使用 CLI bq 命令创建一次性数据集副本(无计划重复)

2024-05-13

我想使用 bash 脚本在 BigQuery 中制作一次性数据集复制,来自source_dataset_A to target_dataset_B

This operation is easy to do in BigQuery Console, like this enter image description here

但是,如果我使用bq mk --transfer_config如下所示,它将创建一个具有定期计划(“每 24 小时”)的数据集复制传输作业。

bq mk --transfer_config --project_id=data-project --data_source=cross_region_copy \
  --display_name='one-time-dataset-copy' \
  --target_dataset=target_dataset_B \
  --params='{"source_dataset_id":"source_dataset_A","source_project_id":"source_project","overwrite_destination_table":"true"}' \

如何在 BigQuery 中进行一次性数据集复制?


我花了一段时间才弄清楚如何做到这一点,但需要的是设置三个schedule标志在bq适当地。

--schedule:数据传输时间表。如果数据源不支持自定义计划,则该字段应为空。如果为空,则将使用数据源的默认值。指定时间采用 UTC 时间。有效格式示例:每月的第一个、第三个星期一 15:30,一月、六月的每周三、星期五 13:15,以及季度的第一个星期日 00:00。

--schedule_end_time:停止给定传输配置调度传输运行的时间。如果为空,则结束时间的默认值将用于无限期地安排运行。时间戳的格式为 RFC3339 UTC“Zulu”。

--schedule_start_time:为给定传输配置开始调度传输运行的时间。如果为空,则将使用开始时间的默认值立即开始运行。时间戳的格式为 RFC3339 UTC“Zulu”。

要制作一次性副本,您需要设置具有正确开始和结束时间的计划,使其仅运行一次。

所以你可以这样做

bq mk --transfer_config --project_id=data-project --data_source=cross_region_copy \
  --display_name='one-time-dataset-copy' \
  --target_dataset=target_dataset \
  --params='{"source_dataset_id":"source_dataset","source_project_id":"source_project","overwrite_destination_table":"true"}' \
  --schedule_end_time=$(date -u -d '5 mins' +%Y-%m-%dT%H:%M:%SZ)

这意味着每 24 小时设置一次数据集复制传输作业(--schedule默认),计划立即开始--schedule_start_time default,以及从现在起 5 分钟后结束的时间表(--schedule_end_time)。 通过这样做,传输作业将仅触发一次且仅一次运行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 CLI bq 命令创建一次性数据集副本(无计划重复) 的相关文章

随机推荐