我有以下疑问: SELECT * FROM t1, t2 WHERE t1.a = 10 AND t2.a > 20 AND t1.b=t2.b
应用程序发展到 t1.a
, t2.a
, t1.b
以及 t2.b
数组。
我可以重写 t1.a = 10
至 array_contains(t1.a, 10)
,但我找不到任何有效的支持sql功能,这些功能使我能够重现逻辑比较 t2.a > 20
和列内表比较 t1.b=t2.b
对数组的影响。
有人能帮我重写这个查询吗?它可能需要用户定义的函数吗?
上下文:我使用sparksql查询parquet表。我在sparksql实现许多功能时加入了hive标记。
1条答案
按热度按时间6jjcrrmo1#
你可以自己写
UDF
做比较。很简单:然后,你像这样使用它:
注意到目前为止,
arrayGreater
正在返回一个Boolean
. 你可以让它成为回报Int
--只需返回过滤后的length
而不是检查> 0
: