簡體   English   中英

如何使用 Python API 創建覆蓋目標表的 BigQuery TransferConfig

[英]How to create a BigQuery TransferConfig that overwrites the destination tables using the Python API

我想使用Python 客戶端 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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM