基本上我想return rows基于一个column value.
如果列包含non numeric值,则从hive表返回这些行.
任何UDF可用的Hive?
Gor*_*off 15
我相信Hive支持rlike(正则表达式).所以,你可以这样做:
where col rlike '[^0-9]'
Run Code Online (Sandbox Code Playgroud)
这会查找任何非数字字符.如果您的数值可能包含小数点或逗号,则可以展开它.
你正在寻找的功能是cast(expr as <type>).null如果转换不成功,则返回A.
case when cast(col as double) is null then 'N' else 'Y' end as isNumber
Run Code Online (Sandbox Code Playgroud)
或者只是在WHERE中使用布尔表达式: cast(col as double) is not null
您还可以创建isNumber宏:
create temporary macro isNumber(s string)
cast(s as double) is not null;
Run Code Online (Sandbox Code Playgroud)
并在您的查询中使用它:
hive> select isNumber('100.100'), isNumber('100'), isNumber('.0'), isNumber('abc');
OK
_c0 _c1 _c2 _c3
true true true false
Run Code Online (Sandbox Code Playgroud)
如果您只需要检查Integer,那么使用cast(s as Int)
此方法,此方法可以正确地使用负数.
| 归档时间: |
|
| 查看次数: |
17703 次 |
| 最近记录: |