我想使用 bash 脚本在 BigQuery 中制作一次性数据集复制,来自source_dataset_A
to target_dataset_B
This operation is easy to do in BigQuery Console, like this
但是,如果我使用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(使用前将#替换为@)