【问题标题】:How to create a one-time Dataset Copy (no scheduled recurring) using CLI bq command如何使用 CLI bq 命令创建一次性数据集副本(无计划重复)
【发布时间】:2021-03-10 06:23:15
【问题描述】:

我想使用 bash 脚本在 BigQuery 中制作一次性数据集副本,从 source_dataset_Atarget_dataset_B

这个操作在 BigQuery Console 中很容易做到,像这样

但是,如果我像下面这样使用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 中进行一次性数据集复制?

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    我花了一段时间才弄清楚该怎么做,但需要的是正确设置 bq 中的三个 schedule 标志。

    --schedule:数据传输时间表。如果数据源不支持自定义计划,这应该是空的。如果为空,将使用数据源的默认值。指定的时间以 UTC 为单位。有效格式示例:每月第 1、第 3 个星期一 15:30,每周三、周五 1 月、6 月 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)。 通过这样做,传输作业将仅触发一次且仅一次运行。

    【讨论】:

      猜你喜欢
      • 2021-04-01
      • 2022-06-14
      • 2017-10-08
      • 2012-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-01
      • 2014-03-23
      相关资源
      最近更新 更多