bigquery 是正确的选择吗?

Posted

技术标签:

【中文标题】bigquery 是正确的选择吗?【英文标题】:is bigquery the right choice? 【发布时间】:2014-01-27 05:47:13 【问题描述】:

我在谷歌电子表格上有一个表格,需要分析..

我查看了大查询,这似乎是我需要的......

我仍处于测试阶段,所以我的桌子非常小.. 因为我的桌子只有 40x10,我想知道它是否有点矫枉过正..

但我确实需要立即获得结果,它每分钟运行大约 7 到 8 小时,每天 .. 每周 5 天..

Google 还表示,前处理的 100gb 是免费的。

即使启用了计费,我也将保持在我的限制范围内,对吗?我不想像某些人所面临的那样被收取 4k$ 的费用......所以想了解这是如何运作的......

对于 40x10 的桌子.. 一个表最多 10 个查询(每分钟).. 一天7小时。。 每周 5 天..

我会保持在我的极限范围内,对吧?是的,我正在使用应用程序脚本(目前)来启动并运行它。

【问题讨论】:

【参考方案1】:

我会使用ScriptDB,因为您的数据库非常小。

其工作原理的简短示例(带有收件箱示例):

function checkMessages(name) 
var db = ScriptDb.getMyDb();
var msgs = db.query(table: "messages", IDto: name, statusreceiving: db.not("read"));
var infoMessages = [];
var messagesCount = msgs.getSize();
var stateMessages = false;
var idMessages = [];

while (msgs.hasNext()) 
var me = msgs.next();
  idMessages.push(me.messageID);
  me.statusreceiving = "received";
  db.save(me);
  
if (messagesCount>0) 
stateMessages = true;

infoMessages.push(stateMessages,messagesCount,idMessages);
return infoMessages;

【讨论】:

我意识到对于基本操作 scriptDb 绰绰有余,但我需要对行进行排序和过滤,可能最多 5 次,直到我得到我想要的结果。我非常怀疑 scriptDB 是否能够处理所有这些。另外,我需要非常快速的结果。 scriptDB 肯定很快。此外,对于排序,您可以使用类似: var team = db.query(table: "availableTeam").sortBy("teamID") 和过滤您有上面的 db.query 语法。对于您的需要,scriptDB 是正确的选择。 如果它如您所说,它将帮助我获得一个最小版本并运行。一定会试一试,然后就该先生回复您。但就我所知,我会超出我的免费大查询配额吗?【参考方案2】:

不,BigQuery 可能不适合您的用例。

首先,BigQuery 无法直接查询 Google 电子表格中的数据。

其次,BigQuery 经过优化,旨在查询海量数据,因此使用它查询 40x10 的表在速度或效率方面并不理想。

第三,每个查询至少需要 1 MB 的数据,无论您的表有多小(请参阅定价详情 here)。以每分钟 10 次查询、每天 8 小时、每周 5 天计算,您将在 30 天的一个月内达到大约 100 GB 的数据,并且很可能不时超出您的免费配额。

如果您只是运行一个不需要经常更改的查询,那么直接在 AppsScript 中对其进行编码似乎是一种合理的方法。

【讨论】:

以上是关于bigquery 是正确的选择吗?的主要内容,如果未能解决你的问题,请参考以下文章

服务帐户是在 node.js 中查询 google bigquery 的正确凭据吗?

bigquery中的GA4流量源数据不正确

如何正确迭代所有 BigQuery 结果行?

BigQuery 会将记录移动到正确的分区中吗?

数据流:我可以使用批处理作业连续写/流写入BigQuery吗?

在 Bigquery 中,如何将结构的字符串化数组转换为正确的数组?