BigQuery 中的 S2 Geo 函数?

S2 Geo Functions in BigQuery?

我只是想知道是否有任何计划将 S2 地理库的功能添加到 BigQuery 中?

似乎肯定有很多人在 BQ 中拥有经纬度数据 - 一些 s2 函数可以到达单元格并返回等肯定会非常有用 - 如果还没有功能请求,我们很乐意提交。

我能找到的最佳链接,仅供参考:

http://blog.christianperone.com/2015/08/googles-s2-geometry-on-the-sphere-cells-and-hilbert-curve/ https://godoc.org/github.com/golang/geo/s2 https://docs.google.com/presentation/d/1Hl4KapfAENAOf4gv-pSngKwvS_jwNVHRPZTTDzXXn6Q/view

我确实看到了一些 javascript 库,但不确定它们是否可以在 UDF 中使用

https://www.npmjs.com/package/s2-geometry https://github.com/mapbox/node-s2

我想知道这是不是只能在 UDF 中做的事情?

BigQuery 团队有兴趣为地理空间操作添加某种支持 - 因此您可以提供有关用例的更多信息 - 将更好地为规划和优先级排序提供信息。 与此同时,S2 库确实在 Google 内部广泛使用并取得了很大成功,包括作为 BigQuery 中的 UDF。我不知道你上面链接的 public 到 JavaScript 的端口 - 但我相信应该可以在 BigQuery JS UDF 中利用它。

更新:BigQuery GIS 已发布:https://cloud.google.com/bigquery/docs/gis-intro

正如 Mosha 所说,可以利用 BigQuery JS UDF。

你可以看看github项目jslibs或者直接使用下面的代码作为例子。

SELECT `jslibs.s2.ST_S2`(longitude_centroid, latitude_centroid,5)
FROM `bigquery-public-data.worldpop.population_grid_1km`
WHERE last_updated = "2017-01-01"
LIMIT 1000

免责声明:我是该项目的贡献者之一。

BigQuery 地理空间函数添加了两个用于处理 S2 单元格的本机函数:

S2_CELLIDFROMPOINT(point_geography[, level => cell_level])

S2_COVERINGCELLIDS(
    geography
    [, min_level => cell_level]
    [, max_level => cell_level]
    [, max_cells => max_cells]
    [, buffer => buffer])

https://cloud.google.com/bigquery/docs/reference/standard-sql/geography_functions#s2_cellidfrompoint https://cloud.google.com/bigquery/docs/reference/standard-sql/geography_functions#s2_coveringcellids

也就是说,对于大多数地理空间任务,通常应该使用常规 ST_* 函数集,但 S2 函数可能有助于高级工作负载或与使用 S2 的其他系统的互操作性。