【发布时间】:2021-04-11 09:45:01
【问题描述】:
我在一个项目中,我们需要使用 BigQuery、PubSub、Logs explorer 和 Cloud Functions。
项目:
每次发生特定事件(例如用户接受 cookie)时,系统都会向 BigQuery 中插入一个新查询,其中包含许多列(参数),例如:utm_source、utm_medium、consent_cookies 等...
在我的表中有这个新查询后,我需要读取列并获取要在云函数中使用的值。
在云函数中,我想使用这些值进行 api 调用。
到目前为止我能做到的事情:
我创建了一个日志路由接收器,用于过滤新条目并将日志发送到我的 PubSub 主题。
我被困在哪里:
我想创建一个 Cloud 函数,该函数在每次有新日志进入时触发,并且在该函数中我想访问日志中包含的信息,例如 utm_source、utm_medium、consent_cookies 等...并使用进行 api 调用的值。
有人可以帮助我吗?非常感谢!
我做了一个项目来说明流程:
- 我想做的是触发一个关于这个主题的函数,并使用我在查询中的值来执行调用 api 等操作......
到目前为止,我能够编写此代码:
"use strict";
function main() {
// Import the Google Cloud client library
const { BigQuery } = require("@google-cloud/bigquery");
async function queryDb() {
const bigqueryClient = new BigQuery();
const sqlQuery = `SELECT * FROM \`mydatatable\``;
const options = {
query: sqlQuery,
location: "europe-west3",
};
// Run the query
const [rows] = await bigqueryClient.query(options);
rows.forEach((row) => {
const username = row.user_name;
});
}
queryDb();
}
main();
现在我又被卡住了,我不知道如何从我创建的接收器中获取正确的查询并使用这些信息来拨打我的电话...
【问题讨论】:
-
(又是我 :) ) 你有日志中的数据详细信息吗?如果不是,为什么写入 BigQuery 的进程也没有使用正确的参数写入 PubSub?
-
嘿@guillaumeblaquiere 非常感谢您的时间和耐心!我添加了所有带有图像的步骤,以便更好地理解我正在尝试做的事情
-
好的,很清楚。我现在可以重现并提出您的一段代码。你喜欢什么语言(如果可以的话,我会用它做例子)
-
我习惯使用 node.js。太感谢了! Python 不是问题,哪一个最适合你的英雄!谢谢
-
@guillaumeblaquiere 我已经设法编写了一些代码,我是正确的道路吗?谢谢漂亮!
标签: google-bigquery google-cloud-functions google-cloud-pubsub google-login