首页 > 解决方案 > 如何在 Google Bigquery 中触发按需计划查询

问题描述

我在 Google Bigquery 中创建了一个查询,该查询连接到触发云功能的主题。我想安排查询按需运行。一旦我安排了查询,我就无法在 UI 中找到任何选项来运行该特定查询。如果需要更多说明,请告诉我。我只在计划查询 UI 页面中看到以下选项。

在此处输入图像描述

标签: google-cloud-platformgoogle-bigquerygoogle-cloud-functions

解决方案


2021 年 7 月更新:Google 改进了其 UI,因此现在可以按需运行预定查询(有关详细信息,请查看Julio 的答案)。但是,据他介绍,此处描述的命令行选项比 UI 选项运行得更快。


可悲的是,你不能。我不知道这是否是一个错误(可能是一个糟糕的 UI 设计),但您不能通过 UI 运行按需计划查询。

这仅适用于设置为按需运行的计划查询。如果您的查询计划在任何时间范围内运行(每天、每周等),您可以使用“计划回填”选项使其按需运行。此选项要求您提供开始日期和结束日期,因此它会强制所有应该在给定时间窗口内运行的运行(是的,使用此选项运行次数将取决于计划)。也就是说,如果您的查询设置为每天运行,只需提供一天的时间跨度,您的查询将运行一次。

或者,如果您确实需要按需运行它,则需要使用命令行或 API,如下所示。

命令行解决方案(使用 Cloud Shell):

运行命令:

bq mk --transfer_run --run_time "$(date --iso-8601=seconds)" \
  projects/[YOUR_PROJECT]/locations/us/transferConfigs/[YOUR_SCHEDULED_QUERY_GUID]

请注意,这YOUR_SCHEDULED_QUERY_ID是一个 GUID(它不是 Scheduled Query 名称,它看起来像1234a123-1234-1a23-1be9-12ab3c456de7)。您可以从浏览器 URL 复制它或从运行该命令的所有计划查询的列表中获取bq ls --transfer_config --transfer_location='us'

在所有地方,更改us为您可能使用的任何其他位置(例如eu)。

API解决方案

使用与命令行选项相同的参数来使用transferConfigs.startManualRuns API 。

请注意,该参数requestedRunTime是必需的。仅当您在查询中使用参数时,它的值才相关@run_time,否则不使用。如果需要,您甚至可以对日期进行硬编码。因此,只需使用格式中的任何有效日期时间填充它即可2020-08-04T00:00:0Z完成(在命令行解决方案中,我使用 command 填充它date --iso-8601=seconds)。


推荐阅读