BigQuery 最大查询长度字符解决方法

use*_*884 5 google-bigquery

首先让我解释一下这个问题。我有 500 个独立用户。来自每个用户的数据被拆分为更小的 gzip 文件(假设每个用户平均有 25 个文件)。我们在 BiqQuery 中将每个拆分的 gzip 文件加载为一个单独的表。因此,我们的数据集中有 13000 个表。

现在,我们必须运行时间范围查询来检索每个用户的一些数据。我们有来自单个用户的大约 500-1000 个不同的时间范围。我们想将所有这些时间范围组合成一个带有逻辑 OR 和 AND 的查询

  WHERE (timestamp >2 and timestamp <3) OR (timestamp >4 and timestamp <5) OR .............. and so on 1000 times
Run Code Online (Sandbox Code Playgroud)

并在 13000 个表上运行它们

我们自己的测试表明 Bigquery 的查询长度限制为 10000 个字符?

如果我们将条件拆分为多个查询,我们将超过 20,000 个每日配额限制。

是否有任何解决方法,以便我们可以在不达到每日配额限制的情况下运行这些查询?

谢谢

JR

小智 5

当我在 WHERE 条件下传递一个大数组列表时,我遇到了类似的 Big Query SQL 查询长度限制为 1024K 个字符的问题。

为了解决这个问题,我使用了参数化查询。https://cloud.google.com/bigquery/docs/parameterized-queries


Wan*_*iar 3

我可以想到两件事:

  • 尝试减少数据集中的表数量。如果它们共享相同的模式,它们是否能够组合(非规范化)到一个表中,或者至少更少数量的表?

我已经将 500000+ JSON gzip 文件加载到一张表中,查询更加容易。

  • 有了时间戳,你可以尝试使用更短的公分母。

例如代替

WHERE (timestamp > "2014-06-25:00:00:00" AND timestamp < "2014-06-26:00:00:00")
Run Code Online (Sandbox Code Playgroud)

你可以表达

WHERE LEFT(timestamp,10) = "2014-06-25"
Run Code Online (Sandbox Code Playgroud)

希望这也可以减少您的字符长度限制。