python-3.x - 从 Cloud Function 触发 Bigquery 计划查询
问题描述
我需要按需运行一些计划查询。我相信由 Pubsub 事件触发的 Cloud Functions 是一种提供良好解耦的解决方案。
但是,我找不到可靠的解决方案。
此解决方案使BigQuery + Cloud Functions崩溃 :
这个只适用于文档页面 方法:transferConfigs.startManualRuns
从云功能触发按需计划查询的最佳方法是什么?
解决方案
我知道您不想要计划查询,您希望查询可以轻松调用,而无需重写。
我可以提出2个解决方案:
- 将您的查询存储在 Cloud Storage 上的文件中。当您调用 Cloud Function 时,您会读取文件内容并对其执行 bigQuery 作业。
- PRO:您只需更新文件内容即可更新查询。
- 缺点:您需要从存储中读取文件,然后调用 BigQuery -> 2 API 来调用和查询文件来管理
- 使用存储过程
- 首先,创建您的存储过程
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:只需更新存储过程即可更新查询。可以执行复杂的查询
- 缺点:您没有查询历史记录(您可以在之前的解决方案中为此激活存储桶版本)
它们是可接受的解决方案吗?
推荐阅读
- r - R plotly将颜色填充到下一个仅上限值
- node.js - 在不接受请求正文中以快递形式发布请求
- reactjs - TypeError: state.auth is undefined error because I added redux reducers
- django - Django 测试不使用主键
- javascript - 蓝图 DateInput 组件未正确呈现
- html - 将 flexbox 容器的宽度限制为视口宽度,无论 flex 项的宽度有多大
- java - 是否可以在不使用任何导入的情况下打开文件?
- chatbot - 如何使用实体查询数据库?
- r - dplyr 以编程方式过滤多个逻辑列的最佳实践
- javascript - 在 Laravel 8 项目中找不到 Javascript