【发布时间】:2015-05-15 19:58:32
【问题描述】:
您已经确定了使用交叉连接在边界框/圆内查找区域的解决方案,如下所示:
SELECT A.ID, C.Car
FROM Cars C
CROSS JOIN Areas A
WHERE C.Latitude BETWEEN A.LatitudeMin AND A.LatitudeMax AND
C.Longitude BETWEEN A.LongitudeMin AND A.LongitudeMax
在: How to cross join in Big Query using intervals?
但是,由于基础架构的限制,GBQ 运营团队阻止了对大型数据集使用交叉连接。
因此,我的问题是:如何在另一组边界框 small(table B) 中的大型数据表(表 A)中找到一组 lat,longs?
我的如下查询已被屏蔽:
select a.a1, a.a2 , a.mdl, b.name, count(1) count
from TableMaster a
CROSS JOIN places_locations b
where (a.lat
BETWEEN b.bottom_right_lat AND b.top_left_lat)
AND (a.long
BETWEEN b.top_left_long AND b.bottom_right_long)
group by ....
TableMaster 为 538 GB,有 6,658,716,712 行(已清理/绝对最小值) places_locations 每个查询的大小在 5 到 100kb 左右。
我尝试根据模板调整假联接: How to improve performance of GeoIP query in BigQuery?
但是,查询需要一个小时,并且不会产生任何结果,也不会显示任何错误。
您能找出解决这个难题的可能途径吗?
【问题讨论】:
-
您有数据样本吗?我对places_locations领域特别感兴趣,了解一下拓扑问题。
-
抱歉给Jordi添麻烦了,现在可以了,上周不行,可能是部分区块释放的原因,还是谢谢你
标签: google-bigquery bounding-box