# #python #google-bigquery #google-cloud-functions #google-cloud-data-transfer
Вопрос:
Я пытаюсь запустить запланированный запрос через облачную функцию в GCP. Я попытался следовать нескольким учебным пособиям и примерам, а также просмотрел документацию, но с новой версией API google-cloud-bigquery-datatransfer==3.1.1
я не могу найти ничего, показывающего правильную процедуру.
Вы найдете ниже мой текущий код :
from google.cloud import bigquery_datatransfer_v1
def triggerQuery (parent, requested_run_time):
client = bigquery_datatransfer_v1.DataTransferServiceClient()
project_id = '###' # Enter your projectID here
location_id = 'europe' # Enter your locationID here
transfer_id = '###' # Enter your transferId here
transfer_config = {...}
path = f"projects/{project_id}/locations/{location_id}/transferConfigs/{transfer_id}"
parent = client.transfer_config_path(project_id, transfer_id)
response = client.start_manual_transfer_runs(path)
print(response)
Я пытался перейти на client.start_manual_transfer_runs
» или path
» или parent
«или», но я получаю :
TypeError: Invalid constructor input for StartManualTransferRunsRequest: 'projects/###/locations/europe/transferConfigs/###'
Мне также нужно указать, что Облачная функция связана с соответствующей учетной записью службы, которая имеет права на выполнение запросов в BigQuery.
Помощь была бы очень признательна !
Комментарии:
1. Можете ли вы попробовать ввести формат
location_id
в регионе? Например,europe-west1
Ответ №1:
Вам необходимо ввести параметры ручной передачи, выполняемой в формате словаря. Приведенный ниже код работает для меня:
import time
from google.cloud import bigquery_datatransfer_v1
from google.protobuf.timestamp_pb2 import Timestamp
client = bigquery_datatransfer_v1.DataTransferServiceClient()
project_id = 'your-project-id'
transfer_config_id = 'config-id-can-be-found-in-ui'
location = 'location-of-your-transfer-config'
start_time = Timestamp(seconds=int(time.time() 20))
parent = f'projects/{project_id}/locations/{location}/transferConfigs/{transfer_config_id}'
response = client.start_manual_transfer_runs({"parent": parent, "requested_run_time": start_time})
print(response)