几个小时前我在Google BigQuery上运行了一个查询,但查询仍在运行。我点击了“放弃”,但似乎没有办法停止查询。我能做什么?我可以以某种方式联系Google,以便他们停止查询吗?
我一直在为一家使用BigQuery分析Google Analytics数据的公司开展一个项目,所以我不想把它们当作一大笔账单。 (也许StackOverflow不是问这个问题的合适的地方,但是我试图找到另一个地方,但我不能。在BigQuery支持页面上,据说应该在这里询问问题,google-bigquery标签,所以我这样做。)
我写了一个查询(我不想在这里粘贴或描述,因为有人可能会滥用它来阻止BigQuery或其他东西,我不知道)。我们只是说它包括内连接。在我编写之后,在运行它之前,控制台消息就像“这将分析674KB的数据”,看起来没问题,因为该表只有10,000行。点击“放弃”查询后,我收到了相同的消息,例如“你可以放弃这个,但你仍然会收到674KB的数据”。
我非常努力地确保我所做的不会给某人带来麻烦,所以我实际上在BigQuery的本地PostgreSQL数据库(具有完全相同的数据 - 10,000行)上运行该查询,并且查询在一两秒内结束。
如何取消此查询,是否可以(我为之工作的公司)收取超过674KB数据的费用?
答案 0 :(得分:1)
目前,无法通过Web界面或API调用启动BigQuery作业。
根据this,此功能可能会在将来添加。
由于BigQuery会将查询分成多个计算机,因此即使是大型查询(TeraByte级别)也不会对单个计算机产生很大影响,更不用说674KB的查询了。但是,根据this,this是您需要支付的金额。
以下是一些在BigQuery中省钱的技巧。
首先要知道的是,与传统的RDBMS不同,BigQuery是基于列的,您将按列中的数据量而不是行中的数据来收费。
这意味着,不要在查询中包含您不需要的列。这可能听起来微不足道,但有时来自RDBMS的人可能会写这样的查询:
SELECT
COUNT(*), user_id
FROM
[Dataset.Table]
查询绝对正确,但Google实际上只会为整个表收取此查询的费用,而不是只收取user_id列的大小。因此,明确指定列名称是个好主意。
将表分成更小的块。不是使用包含所有数据的单个表,而是根据日期拆分表,并在查询期间使用table wildcard functions将表拼接在一起,这是一个好主意。在这种情况下,您不会被您不需要的行收费。
答案 1 :(得分:1)