Google BigQuery 的限制?
Posted
技术标签:
【中文标题】Google BigQuery 的限制?【英文标题】:Limits of Google BigQuery? 【发布时间】:2018-05-04 23:31:00 【问题描述】:Google BigQuery 有什么限制?我正在尝试对大约 6 GB 的数据运行 SQL 语句,但它似乎需要很长时间(一个多小时),然后当我半天后回来检查时发现错误“请求超时。请重试”。
我假设 6 GB 的数据与其他人可能拥有的数据相比并不算多,但令我惊讶的是,我会这样超时。如果有帮助,我的 SQL 查询会有点复杂,并且本质上会计算滚动窗口唯一计数——我相信这通常需要很长时间。我还检查了添加到目标表并“允许大结果”。
此外,我正在 Google BigQuery 查询编辑器本身(其中显示 Compose Query)中运行查询。
编辑:(下面是我正在使用的实际查询)
SELECT t1.time, t1.x, COUNT(DISTINCT t2.x)
FROM `data` AS t1
JOIN `data` AS t2 ON t2.time
BETWEEN TIMESTAMP_SUB(t1.time, INTERVAL 1 HOUR) AND t1.time
GROUP BY t1.time, t1.x
这是一些示例数据:
X
05:20:19 4 <- 2 (4 and 5 are unique)
05:20:19 5 <- 2 (4 and 5 are unique) * same time as before
05:37:18 7 <- 3 (4, 5 and 7 are unique)
05:45:14 4 <- 3 (4, 5, and 7)
05:56:04 4 <- 3 (4, 5, and 7)
06:18:48 6 <- 4 (now 4, 5, 6, and 7)
06:48:34 3 <- 3 (only checks past hour, so now 3, 4, 6)
07:52:48 1 <- 1 (only time in past hour, so only 1)
我有大约 6GB 的数据
谢谢!
【问题讨论】:
帮助我们 - 您会发布您的查询以及有关您的数据的一些详细信息吗?我相信社区可以对公共数据进行有效查询,从而实现您的目标。 感谢您的建议!刚刚编辑了我的帖子以包含更多详细信息 酷 - 现在如果问题是“如何进行滚动窗口唯一计数” - 请在此处查看我的答案 ***.com/a/49866033/132438 谢谢!我的问题是,在大约 6GB 的数据上运行像我这样的 SQL 查询是否应该花费数小时才能运行,或者我只是没有正确运行它 @dooer 。 . .您本质上是在将一个表与其自身交叉连接。这可以创建一个非常大的中间行集。所以,是的,即使是 BigQuery 也有可能会失败。 【参考方案1】:我看到的查询中的弱点是在 JOIN ON 中执行 TIMESTAMP_SUB() 函数 相反,我会尝试在加入之前预先计算它,如下所示
#standardSQL
SELECT t1.time, t1.x, COUNT(DISTINCT t2.x)
FROM (
SELECT time, x,
TIMESTAMP_SUB(time, INTERVAL 1 HOUR) time_sub_hour
FROM `data`
) AS t1
JOIN `data` AS t2
ON t2.time BETWEEN time_sub_hour AND t1.time
GROUP BY t1.time, t1.x
与此同时,正如其他人所提到的 - 你本质上是与自己交叉加入相当大的表,因此失败的可能性非常高
【讨论】:
【参考方案2】:根据 cmets 的规定:
如果您的问题是“如何进行滚动窗口唯一计数”,请查看https://***.com/a/49866033/132438 的答案。
如果问题是“我可以用 6GB 的数据杀死任何数据库吗”,答案是“是”:
例如,假设您有 500 万行数据。这还不算太多。但是随后您执行了没有过滤器的 CROSS JOIN,并且您想要返回这些行。
500 万行 * 500 万行 = 25 万亿行。
您当然不想要 25 万亿行,如果您想要它们 - 那肯定会花费很多时间。所以请避免爆炸连接。
https://***.com/a/28181650/132438【讨论】:
以上是关于Google BigQuery 的限制?的主要内容,如果未能解决你的问题,请参考以下文章
GoogleApiException:流式传输到 BigQuery 时,Google.Apis.Requests.RequestError 后端错误 [500]
如何将 Spark-BigQuery_connector 用于现有的 spark 环境(不使用 google dataproc)
Google Analytics 4 Bigquery 链接的配额限制是多少