如何在 Google Bigquery 中触发按需计划查询

Vip*_*ngh 11 google-bigquery google-cloud-platform google-cloud-functions

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

在此处输入图片说明

Die*_*roz 9

2021 年 7 月更新:Google 改进了其用户界面,因此现在可以按需运行预定查询(查看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]
Run Code Online (Sandbox Code Playgroud)

请注意,这YOUR_SCHEDULED_QUERY_ID是一个 GUID(它不是计划查询名称,它看起来像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完成(在命令行解决方案中,我使用命令填充它date --iso-8601=seconds)。


Jul*_*lio 7

聚会有点晚了,但是,您可以通过单击“安排回填”来按需运行它,在弹出窗口中填写从昨天到今天的日期,仅此而已。这适用于不依赖于当前日期的查询(连接、副本等)。

更新:现在更容易了,他们实现了一个按钮来直接运行一次。尽管如此,我认为使用Diego Queiroz 的解决方案更快,因为它的运行速度比这种方式快 2 倍。

预定查询