Запланированные запросы являются частью службы передачи данных BigQuery, поэтому вы должны использовать ее API. В частности, метод projects.transferConfigs.list
. Заполните поле dataSourceIds
с scheduled_query
и parent
с projects/PROJECT_ID
. Как указано в комментариях, если вы используете региональное местоположение, такое как европа-запад2, вместо многорегионального (ЕС или США), вы должны использовать projects.locations.transferConfigs.list
. Теперь родительский ресурс будет иметь вид projects/PROJECT_ID/locations/REGIONAL_LOCATION
.
Кроме того, для других переводов вы можете получить соответствующий dataSourceIds
, используя метод projects.dataSources.list
. Вот как я получил scheduled_query
один.
Ответом будет массив запланированных запросов, таких как:
{
"name": "projects/<PROJECT_NUMBER>/locations/us/transferConfigs/<TRANSFER_CONFIG_ID>",
"destinationDatasetId": "<DATASET>",
"displayName": "hacker-news",
"updateTime": "2018-11-14T15:39:18.897911Z",
"dataSourceId": "scheduled_query",
"schedule": "every 24 hours",
"nextRunTime": "2019-04-19T15:39:00Z",
"params": {
"write_disposition": "WRITE_APPEND",
"query": "SELECT @run_time AS time,\n title,\n author,\n text\nFROM `bigquery-public-data.hacker_news.stories`\nLIMIT\n 1000",
"destination_table_name_template": "hacker_daily_news"
},
"state": "SUCCEEDED",
"userId": "<USER_ID>",
"datasetRegion": "us"
}
Пример вызова API с bash и curl
:
#!/bin/bash
# parameter(s)
location=europe-west2
authToken="$(gcloud auth print-access-token)"
projectId=$(gcloud config get-value project 2>\dev\null)
# API call
scheduled_queries=$(curl -H "Authorization: Bearer $authToken" \
https://bigquerydatatransfer.googleapis.com/v1/projects/$projectId/locations/$location/transferConfigs?dataSourceIds=scheduled_query)
# pretty print results
echo $scheduled_queries | python -m json.tool