【发布时间】:2021-09-28 05:06:47
【问题描述】:
我的 Google 项目 project-everest:evr_dataset 中有一个 BigQuery 数据集,我想将其表数据复制到另一个项目 project-alps:alp_dataset 中的另一个 BigQuery 数据集。
我尝试使用 DTS - 数据传输服务来安排每天的摄取作业,但我没有看到任何从另一个项目中选择目标数据集的选项?谁能告诉我如何启用跨项目 DTS?
【问题讨论】:
我的 Google 项目 project-everest:evr_dataset 中有一个 BigQuery 数据集,我想将其表数据复制到另一个项目 project-alps:alp_dataset 中的另一个 BigQuery 数据集。
我尝试使用 DTS - 数据传输服务来安排每天的摄取作业,但我没有看到任何从另一个项目中选择目标数据集的选项?谁能告诉我如何启用跨项目 DTS?
【问题讨论】:
您可以使用下面的python函数来创建大查询数据传输客户端和 通过指定源和目标项目 ID,将数据集从一个项目复制到另一个项目。您还可以安排数据传输。 在下面的方法中,它设置为 24 小时(每天)。
def copy_dataset(override_values={}):
# [START bigquerydatatransfer_copy_dataset]
from google.cloud import bigquery_datatransfer
transfer_client = bigquery_datatransfer.DataTransferServiceClient()
destination_project_id = "my-destination-project"
destination_dataset_id = "my_destination_dataset"
source_project_id = "my-source-project"
source_dataset_id = "my_source_dataset"
# [END bigquerydatatransfer_copy_dataset]
# To facilitate testing, we replace values with alternatives
# provided by the testing harness.
destination_project_id = override_values.get(
"destination_project_id", destination_project_id
)
destination_dataset_id = override_values.get(
"destination_dataset_id", destination_dataset_id
)
source_project_id = override_values.get("source_project_id", source_project_id)
source_dataset_id = override_values.get("source_dataset_id", source_dataset_id)
# [START bigquerydatatransfer_copy_dataset]
transfer_config = bigquery_datatransfer.TransferConfig(
destination_dataset_id=destination_dataset_id,
display_name="Your Dataset Copy Name",
data_source_id="cross_region_copy",
params={
"source_project_id": source_project_id,
"source_dataset_id": source_dataset_id,
},
schedule="every 24 hours",
)
transfer_config = transfer_client.create_transfer_config(
parent=transfer_client.common_project_path(destination_project_id),
transfer_config=transfer_config,
)
print(f"Created transfer config: {transfer_config.name}")
# [END bigquerydatatransfer_copy_dataset]
return transfer_config
【讨论】: