Google Big Query:SQL 请求长度限制

问题描述 投票:0回答:1

我有一个关于 GBQ 以及一次查找大量行的可能性的问题。我的 GBQ 表包含 3 亿行和 50 列(例如品牌、型号、颜色)。另外,我有一个 70K 行的 CSV 文件,仅包含 brandmodel。我需要使用 GBQ 表来丰富这个 CSV 文件。像这样的长查询:

SELECT * FROM table_name WHERE ... or ... or ...
对我没有帮助,因为GBQ无法处理这么长的查询(只能处理2500个CSV行)。是否可以重新设计查找引擎(丰富引擎),使其正常工作并从 CSV 中为我的 70k 行中的每一行找到 50 列?
Left Join
也没有帮助,因为它处理的时间太长了。谢谢!

附注现在我正在使用 Python 引擎通过将大请求分离为大量小请求来丰富 CSV 文件。

python sql csv google-bigquery bigdata
1个回答
0
投票
按照 BigQuery 的标准,300M x 50 并不是什么大问题。这绝对应该可以在单个查询中处理。

首先,您要将 70k 行 CSV 作为表格上传到 BigQuery。我们称其为

brand_model

接下来您想要执行 LEFT JOIN 来丰富数据。

SELECT full_table.*, FROM your_dataset.brand_model LEFT JOIN your_dataset.full_table ON brand_model.brand = full_table.brand AND brand_model.model = full_table.model
这应该返回 70k 行,其中选择了 

full_table

 中的所有列(假设在 
both 表中 - 对于品牌和型号的每种组合只有一行)。

返回也不应该花费很长时间(如果需要,可以通过对品牌和型号的完整表进行聚类来加快速度)。


如果此方法不适合您,请提供有关您的性能要求的更多详细信息,并详细解释您进行查询的上下文(例如,这是通过 UI 进行的手动查询还是通过通过 API 从已部署的系统进行自动查询?)。

© www.soinside.com 2019 - 2024. All rights reserved.