首页 > 解决方案 > 从 Cloud Function 触发 Bigquery 计划查询

问题描述

我需要按需运行一些计划查询。我相信由 Pubsub 事件触发的 Cloud Functions 是一种提供良好解耦的解决方案。

但是,我找不到可靠的解决方案。

此解决方案使BigQuery + Cloud Functions崩溃 :

这个只适用于文档页面 方法:transferConfigs.startManualRuns

从云功能触发按需计划查询的最佳方法是什么?

标签: python-3.xgoogle-bigquerygoogle-cloud-functions

解决方案


我知道您不想要计划查询,您希望查询可以轻松调用,而无需重写。

我可以提出2个解决方案:

  1. 将您的查询存储在 Cloud Storage 上的文件中。当您调用 Cloud Function 时,您会读取文件内容并对其执行 bigQuery 作业。
  • PRO:您只需更新文件内容即可更新查询。
  • 缺点:您需要从存储中读取文件,然后调用 BigQuery -> 2 API 来调用和查询文件来管理
  1. 使用存储过程
  • 首先,创建您的存储过程
CREATE OR REPLACE PROCEDURE `my_project.my_dataset.my_procedure`() 
BEGIN
  SELECT * FROM `my_project.my_dataset.my_table`;
  .......
END;
  • 然后在您的云函数中调用它(这是对 BigQuery 的查询
CALL `my_project.my_dataset.my_procedure`();
  • PRO:只需更新存储过程即可更新查询。可以执行复杂的查询
  • 缺点:您没有查询历史记录(您可以在之前的解决方案中为此激活存储桶版本)

它们是可接受的解决方案吗?


推荐阅读