雪花限定查询错误 'Invalid data type [NUMBER(18,0)] for predicate [RANK()'

Snowflake qualify query error 'Invalid data type [NUMBER(18,0)] for predicate [RANK()'

我正在尝试 运行 Snowflake 中的查询,该查询使用 rank() 函数和 qualify 来尝试在两列之间进行最佳匹配(使用 editdistance),我得到以下结果错误:

谓词 [RANK() OVER (PARTITION BY key1 ORDER BY editdistance(name1, name2) ASC NULLS LAST)]

的无效数据类型 [NUMBER(18,0)]

查询如下所示:

select
  key1,
  key2
from
  table
qualify
  rank() over ( 
    partition by key1 order by editdistance(name1, name2) asc
  )

我真的不清楚错误指的是什么数字。 name1/name2都是varchar,key1是varchar。希望有人能给我指点。

谢谢, 杰夫

Dean 在他上面的评论中指出了问题,所以只是将其移至答案以结束此循环:

You need to provide a value for the QUALIFY function so it should be something like: qualify rank() over ( partition by key1 order by editdistance(name1, name2) asc ) = 1

QUALIFY 的工作方式与 WHERE 类似,但它在查询执行期间的不同点进行评估。 QUALIFY 需要一个谓词,它的计算结果应该是布尔值。

QUALIFY:

QUALIFY <predicate>

表达式:

rank() over (partition by key1 order by editdistance(name1, name2))

returns 数字。

将结果与整数进行比较可修复错误:

rank() over (partition by key1 order by editdistance(name1, name2)) = 1 

值得注意的是,数据中可能存在联系,即超过一行的每个键的距离相同,对于这种情况,使用 DENSE_RANK:

更安全
dense_rank() over (partition by key1 order by editdistance(name1, name2)) = 1