如何解决BIGQUERY-查询超出资源限制
我正在运行以下查询以将两个表连接起来,并基于模糊逻辑(Levenshtein距离)获得某些记录
f(x)
此查询将返回
Project_Id(Dr_NBR)
来自第一个表格和
Project_area(LotSizeSqFt)
从第二张表开始,基于末尾的Levenshtein得分过滤器。
此查询导致以下错误
任何建议如何优化上述查询?
我正在使用的距离来自以下功能
WITH main_table as (
select *
from
`project.data.Roof_Address`
),reference_table as (
select *
from `project.data.DATA_TREE_Address`
)
select
DR_NBR,ARRAY_AGG(
STRUCT(n.LotSizeSqFt)
ORDER BY EDIT_DISTANCE(l.ordered_fullname,n.ordered_fullname) LIMIT 1
)[OFFSET(0)].*,ARRAY_AGG(
EDIT_DISTANCE(l.ordered_fullname,n.ordered_fullname) LIMIT 1
)[OFFSET(0)] distance_score
FROM main_table l
CROSS JOIN reference_table n
GROUP BY 1
having ARRAY_AGG(
EDIT_DISTANCE(l.ordered_fullname,n.ordered_fullname) LIMIT 1
)[OFFSET(0)] < 10
Roof_Address表的快照
DATA_TREE_Address的快照
解决方法
主要查询成本很可能是:
中的ORDER byARRAY_AGG(
STRUCT(n.LotSizeSqFt)
ORDER BY EDIT_DISTANCE(l.ordered_fullname,n.ordered_fullname) LIMIT 1
)[OFFSET(0)].*,
我看到您只为每个array_agg返回一条记录。
我建议删除ARRAY_AGG,并对EDIT_DISTANCE的结果进行MAX或MIN运算。 MAX或MIN比ORDERING ALL记录并获取第一个或最后一个便宜得多。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。