基本上我想 return rows 基于一个 column value .如果列包含 non numeric 值,然后从配置单元表返回这些行。任何 UDF 在中提供 Hive ?
return rows
column value
non numeric
UDF
Hive
brccelvz1#
使用 cast(expr as <type>) . 一 null 如果转换未成功,则返回。
cast(expr as <type>)
null
case when cast(col as double) is null then 'N' else 'Y' end as isNumber
或者只需在其中使用布尔表达式: cast(col as double) is not null 您还可以创建isnumber宏:
cast(col as double) is not null
create temporary macro isNumber(s string) cast(s as double) is not null;
并在查询中使用它:
hive> select isNumber('100.100'), isNumber('100'), isNumber('.0'), isNumber('abc'); OK _c0 _c1 _c2 _c3 true true true false
如果需要检查整数,则使用 cast(s as Int) 这种方法适用于负数和小数。
cast(s as Int)
vcudknz32#
我相信Hive支持 rlike (正则表达式)。所以,你可以做:
rlike
where col rlike '[^0-9]'
这将查找任何非数字字符。如果您的数值可能有小数点或逗号,您可以展开它。
2条答案
按热度按时间brccelvz1#
使用
cast(expr as <type>)
. 一null
如果转换未成功,则返回。或者只需在其中使用布尔表达式:
cast(col as double) is not null
您还可以创建isnumber宏:并在查询中使用它:
如果需要检查整数,则使用
cast(s as Int)
这种方法适用于负数和小数。vcudknz32#
我相信Hive支持
rlike
(正则表达式)。所以,你可以做:这将查找任何非数字字符。如果您的数值可能有小数点或逗号,您可以展开它。