'HiveQL - How to find the column value is numeric or not using any UDF?
Basically i would like to return rows based on one column value.
If the column contains non numeric values, then return those rows from a hive table.
Any UDF is available in Hive?
Solution 1:[1]
Use cast(expr as <type>). A null is returned if the conversion does not succeed.
case when cast(col as double) is null then 'N' else 'Y' end as isNumber
or simply use Boolean expression in the WHERE: cast(col as double) is not null
Also you can create isNumber macro:
create temporary macro isNumber(s string)
cast(s as double) is not null;
And use it in your queries:
hive> select isNumber('100.100'), isNumber('100'), isNumber('.0'), isNumber('abc');
OK
_c0 _c1 _c2 _c3
true true true false
If you need to check for Integer then use cast(s as Int)
This approach works correctly with negative and fractional numbers.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 |
