ST_INTERSECTS 问题 BigQuery Waze
Posted
技术标签:
【中文标题】ST_INTERSECTS 问题 BigQuery Waze【英文标题】:ST_INTERSECTS issue BigQuery Waze 【发布时间】:2020-07-22 19:55:26 【问题描述】:我正在使用以下代码来查询基于多边形的数据集:
SELECT *
FROM `waze-public-dataset.partner_name.view_jams_clustered`
WHERE ST_INTERSECTS(geo, ST_GEOGFROMTEXT("POLYGON((-99.54913355822276 27.60526592074579,-99.52673174853038 27.60526592074579,-99.52673174853038 27.590813604291416,-99.54913355822276 27.590813604291416,-99.54913355822276 27.60526592074579))")) IS TRUE
验证消息显示“此查询在运行时将处理 1 TB”。
好像没有问题。但是,当我删除“WHERE INTERSECTS”函数时,验证消息说的完全相同:“此查询在运行时将处理 1 TB”,相同的 1 TB,所以我猜测 ST_INTERSECTS 函数不起作用。
【问题讨论】:
在许多情况下,回答极其简单的问题要比真正复杂的问题复杂得多。让我试试 - 关于处理的消息只是简单地说,无论(分区表除外)您要应用何种过滤方式和何种过滤方式,都将处理表中的多少数据以获得结果 - 您仍然需要处理相同的数量数据的。使用和不使用该过滤器会有什么不同 - 是作为查询结果返回的数据量。希望这会有所帮助 @MikhailBerlyant 非常感谢。我很困惑,因为当我按列过滤时,这个“1 TB”实际上发生了变化。所以我要运行这个查询来看看会发生什么。非常感谢。 【参考方案1】:当您实际运行此查询时,收取的费用通常应该少得多,这与空间聚簇表的预期一样。我已经使用一个合作伙伴数据集运行 select count(*) ...
查询,虽然编辑器 UI 在运行查询之前宣布 9TB,但查询报告在运行后处理了大约 150MB。
节省来自聚簇表 - 但与过滤器中使用的多边形相交的特定集群取决于表中的实际数据以及集群的创建方式。只有在查询运行时才能确定集群以及查询的成本。在这种情况下,编辑器 UI 显示查询的最大可能成本。
【讨论】:
以上是关于ST_INTERSECTS 问题 BigQuery Waze的主要内容,如果未能解决你的问题,请参考以下文章
在 Snowflake 中使用 ST_Intersects 与点和多面体有技巧吗?
在 PostgreSQL(PostGIS) 中优化 ST_Intersects