首先让我解释一下这个问题。我有 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
我可以想到两件事:
我已经将 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)
希望这也可以减少您的字符长度限制。
| 归档时间: |
|
| 查看次数: |
6832 次 |
| 最近记录: |