如何使用 Python API 创建覆盖目标表的 BigQuery TransferConfig
How to create a BigQuery TransferConfig that overwrites the destination tables using the Python API
我想使用 Python Client API 自动创建 BigQuery DataTransfer。我已经能够成功创建它并触发它。但是,我的问题是我想将标志 overwrite_destination_table
设置为 True。我可以在 TransferConfig UI 中手动执行此操作,但是,我无法找到任何通过客户端传递此标志的方法 API。
问题,有人知道在代码中为 BigQuery DataTranfer 设置标志 overwrite_destination_table
的方法吗?
您可以使用 params
指定选项:
import os
import datetime
from google.cloud import bigquery_datatransfer, bigquery_datatransfer_v1
transfer_client = bigquery_datatransfer.DataTransferServiceClient()
project_id = os.getenv('PROJECT_ID')
dataset_id = os.getenv('BIGQUERY_DATASET')
service_account_name = os.getenv('BIGQUERY_SERVICE_ACCOUNT')
display_name = os.getenv('SCHEDULE_NAME')
query_string = """
SELECT * FROM demo_bq_dataset.demo_table;
"""
parent = transfer_client.common_project_path(project_id)
transfer_config = bigquery_datatransfer.TransferConfig(
destination_dataset_id=dataset_id,
display_name=display_name,
data_source_id="scheduled_query",
params={
"query": query_string,
"destination_table_name_template": "demo_destination_table",
"overwrite_destination_table": True,
},
schedule="every 4 hours synchronized",
schedule_options=bigquery_datatransfer_v1.types.ScheduleOptions(
start_time=datetime.datetime.now(datetime.timezone.utc)
)
)
transfer_config = transfer_client.create_transfer_config(
bigquery_datatransfer.CreateTransferConfigRequest(
parent=parent,
transfer_config=transfer_config,
service_account_name=service_account_name,
)
)
print("Created scheduled query '{}'".format(transfer_config.name))
我想使用 Python Client API 自动创建 BigQuery DataTransfer。我已经能够成功创建它并触发它。但是,我的问题是我想将标志 overwrite_destination_table
设置为 True。我可以在 TransferConfig UI 中手动执行此操作,但是,我无法找到任何通过客户端传递此标志的方法 API。
问题,有人知道在代码中为 BigQuery DataTranfer 设置标志 overwrite_destination_table
的方法吗?
您可以使用 params
指定选项:
import os
import datetime
from google.cloud import bigquery_datatransfer, bigquery_datatransfer_v1
transfer_client = bigquery_datatransfer.DataTransferServiceClient()
project_id = os.getenv('PROJECT_ID')
dataset_id = os.getenv('BIGQUERY_DATASET')
service_account_name = os.getenv('BIGQUERY_SERVICE_ACCOUNT')
display_name = os.getenv('SCHEDULE_NAME')
query_string = """
SELECT * FROM demo_bq_dataset.demo_table;
"""
parent = transfer_client.common_project_path(project_id)
transfer_config = bigquery_datatransfer.TransferConfig(
destination_dataset_id=dataset_id,
display_name=display_name,
data_source_id="scheduled_query",
params={
"query": query_string,
"destination_table_name_template": "demo_destination_table",
"overwrite_destination_table": True,
},
schedule="every 4 hours synchronized",
schedule_options=bigquery_datatransfer_v1.types.ScheduleOptions(
start_time=datetime.datetime.now(datetime.timezone.utc)
)
)
transfer_config = transfer_client.create_transfer_config(
bigquery_datatransfer.CreateTransferConfigRequest(
parent=parent,
transfer_config=transfer_config,
service_account_name=service_account_name,
)
)
print("Created scheduled query '{}'".format(transfer_config.name))