--=======================
查看内置的函数--=======================hive 不需要进入什么内置数据库, 即可使用 show functions 命令列出所有内置的函数. show functions; -- hive仅显示函数的名称, 没有参数和返回值信息. desc function function_name ; -- 该命令能显示函数的具体用途. impala 支持java/c++编写udf, impala也内置了很多udf, 查看内置udf的方法是, 先进入 _impala_builtins 数据库, 再使用 show functions 命令. use _impala_builtins;show functions;implala 的 show functions 会显示完整的函数签名信息. --=======================几个常用的功能函数--=======================cast(expr AS type), 类型转换函数, 比如将number转成string, 或相反. typeof(), 该函数可以用来检查其他函数返回值类型, hive 没有对应的函数. version(), 返回 impalad 的版本. pid(), client 连接到 impalad 的 pid. user(), 返回连接连接 impalad 的 linux username. effective_user(), 一般情况下和和 user() 结果相同, 如果启用了 delegation, effective_user() 返回代理 user id. uuid(), 返回一个唯一的 guid 值. impala 没有 sequence 概念, 但我们可以使用 concat(cast(unix_timestamp() as string),uuid()), 前面加上了时间戳, 可以保证大概的顺序.
--=======================
常用条件函数--=======================coalesce(type v1, type v2, ...) --返回第一个非null的参数decode() -- 同Oracle的decode()函数if(boolean condition, type ifTrue, type ifFalseOrNull) --如果第一参数为true,结果为第2个参数, 否则为第三个参数. ifnull(type a, type ifNull) -- 同nvl(). isnull(type a, type ifNull) --同nvl(). nullif(expr1,expr2) -- 如果两参数相等, 返回null.nullifzero(numeric_expr) --如果参数为0, 返回null.nullvalue(expression) --如果为null, 返回true.nvl(type a, type ifNull) --如果第一个参数为null, 结果为第二个参数, 否则为第一个参数.nvl2(type a, type ifNull, type ifNotNull) --如果第一个参数为null, 结果为第2个参数, 否则为第3个参数. zeroifnull(numeric_expr) nonnullvalue(expression)isfalse(boolean)isnotfalse(boolean)isnottrue(boolean)istrue(boolean)