如何在具有时区支持的 BigQuery 中设置计划查询(通过 Python SDK)

Die*_*rro 5 python google-bigquery google-cloud-platform

在 BigQuery UI 中,我可以安排特定时区的查询(如下面的屏幕截图所示)。

通过这些设置,我可以在正确的本地时间安排查询,但是当我尝试使用 Python 自动执行此过程时,我看不到任何指定时区的选项 ( https://cloud.google.com/ bigquery/docs/scheduling-queries

def create_scheduled_query(project_id, dataset_id, query_string, dest_table, write_disposition=WriteDisposition.WRITE_TRUNCATE):
    parent = client.project_path(project_id)

    transfer_config = google.protobuf.json_format.ParseDict(
        {
            "destination_dataset_id": dataset_id,
            "display_name": dest_table,
            "data_source_id": "scheduled_query",
            "params": {
                "query": query_string,
                "destination_table_name_template": dest_table,
                "write_disposition": write_disposition,
                "partitioning_field": "",
            },
            "schedule": "every day 06:00",  # How can add timezones here?
        },
        bigquery_datatransfer_v1.types.TransferConfig(),
    )

    response = client.create_transfer_config(
        parent, transfer_config, authorization_code=authorization_code
    )

    print("Created scheduled query '{}'".format(response.name))
Run Code Online (Sandbox Code Playgroud)

有什么办法可以用Python客户端来完成这个任务吗?谢谢!

Ale*_*aes 2

仔细查看文档后,我得出结论,在 Python 脚本中选择时区是不可能的。

API和参考文档中,您可以在transfer_config中找到您计划的查询的所有可能的参数。调度参数描述为:

数据传输时间表。如果数据源不支持自定义计划,则该字段应为空。如果为空,则将使用数据源的默认值。指定时间采用 UTC 时间。有效格式示例:每月的第一个、第三个星期一 15:30,一月、六月的每周三、星期五 13:15,以及季度的第一个星期日 00:00。

因此,在控制台中,所选时区仅用于显示目的,因为时间会转换为UTC 时间以便运行计划的查询。

此外,作为额外信息,我想指出,在 App Engine 中,您可以使用cron.yaml选择计划作业的时区。您可以在此处查看时区参数。

我希望它能澄清你对此的疑问。