1. 程式人生 > 其它 >Impala系列: Impala常用的功能函式

Impala系列: Impala常用的功能函式

--=======================
檢視內建的函式
--=======================
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)