google-cloud-platform - 如何在 Google Bigquery 中触发按需计划查询
问题描述
我在 Google Bigquery 中创建了一个查询,该查询连接到触发云功能的主题。我想安排查询按需运行。一旦我安排了查询,我就无法在 UI 中找到任何选项来运行该特定查询。如果需要更多说明,请告诉我。我只在计划查询 UI 页面中看到以下选项。
解决方案
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
)。
推荐阅读
- google-chrome-extension - 在 page_action 上显示弹出窗口
- c# - Razor Pages with EF Core in ASP.NET Core - 更新相关数据 - 7 of 8 with c#
- c# - 如何修复“找不到类型或命名空间 TTransactionKey”错误
- rest - 在不限制客户端的情况下将用户添加到公共 api
- reactjs - 反应-Redux | 产品列表 | 使用 BindActionCreator 添加/删除
- json - 如何使用 JMeter JSON Extractor 获取访问令牌并使用它?
- c++ - 如何在没有复制赋值运算符的情况下交换两个对象?
- c++ - 在 2 个翻译单元中乘以类函数的定义
- mocha.js - 在 WebStorm 中通过 Mocha 运行 WebdriverIO 测试
- swift - swift4 创建用户信息名称、年龄并从火力基地取回数据