关于Hive常用的字符串处理函数:
函数 | 参数格式 | 解释 |
---|---|---|
round | round(DOUBLE a, INT d) | 将 a精确到d位小数,d为可选参数,d空缺时精确到整数位(精确方式为四舍五入) |
bround | bround(DOUBLE a, INT d) | 将 a使用HALF_EVEN方式精确到d位小数,d为可选参数(HALF_EVEN的方式使末尾数字为偶数)。例如:bround(8.25, 1) = 8.2, bround(8.35, 1) = 8.4 |
floor | floor(DOUBLE a) | 返回小于等于a的最大整数值 |
ceil | ceil(DOUBLE a) | 返回大于等于a的最小整数值 |
rand | rand(INT seed) | 返回服从0~1的均匀分布的随机数,seed为可选值,用于设定随机数种子 |
exp | exp(DOUBLE a) | 返回exp(a) |
ln | ln(DOUBLE a) | 返回A的自然对数 |
log10 | log10(DOUBLE a) | 返回以10为底的a的对数值 |
log2 | log2(DOUBLE a) | 返回以2为底的a的对数值 |
log | log(DOUBLE base, DOUBLE a) | 返回以base为底的a的对数值 |
pow | pow(DOUBLE a, DOUBLE p) | 返回a的p次方 |
sqrt | sqrt(DOUBLE a) | 返回a开方值 |
bin | bin(BIGINT a) | 返回a的二进制值 |
hex | hex(BIGINT|STRING|BINARY a) | 如果参数是整数或二进制数字,hex以十六进制格式将数字作为字符串返回。如果数字是字符串,则将每个字符转换为十六进制表示形式并返回结果字符串。 |
conv | conv(BIGINT num, INT from_base, INT to_base) | 将num从from_base进制转换为to_base进制。例如:conv(3,10,2)返回11 |
abs | abs(DOUBLE a) | 返回a的绝对值 |
pmod | pmod(INT|DOUBLE a, INT|DOUBLE b) | 返回a/b的模,即a%b。经测试使用mod(a,b)效果一样 |
sin | sin(DOUBLE|DECIMAL a) | 返回a的正弦函数。(注意:a为弧度) |
asin | asin(DOUBLE|DECIMAL a) | sin的逆函数,返回已a为正弦值的弧度(注意a的值域为[-1,1]) |
cos | cos(DOUBLE|DECIMAL a) | 返回a的余弦函数。(注意:a为弧度) |
acos | acos(DOUBLE|DECIMAL a) | cos的逆函数,返回已a为余弦值的弧度(注意a的值域为[-1,1]) |
tan | tan(DOUBLE|DECIMAL a) | 返回a的正切函数。(注意:a为弧度) |
atan | atan(DOUBLE|DECIMAL a) | tan的逆函数,返回已a为正切值的弧度 |
degrees | degrees(DOUBLE|DECIMAL a) | 将弧度值a转换为角度值 |
radians | degrees(DOUBLE|DECIMAL a) | 将角度值a转换为弧度值 |
positive | positive(INT|DOUBLE a) | 返回a |
negative | negative(INT|DOUBLE a) | 返回-a |
sign | sign(DOUBLE|DECIMAL a) | 符号函数,返回a的符号。如果a>0返回1.0,如果a<0返回-1.0,否则返回0.0 |
e | e() | 返回自然常数 e e e的值 |
pi | pi() | 返回 π \pi π的值 |
factorial | factorial(INT a) | 返回a的阶乘a! |
cbrt | cbrt(DOUBLE a) | 返回a的立方根 |
shiftleft | shiftleft(BIGINT a, INT b) | 将a按位左移b位。例如:shiftleft(2,3)=16(解释:因为2的二进制为10,左移三位为10000,即为16) |
shiftright | shiftright(BIGINT a, INT b) | 将a按位右移b位。例如:shiftright(4,2)=1(解释:因为4的二进制为110,左移二位为1,即为1) |
shiftrightunsigned | shiftrightunsigned(BIGINT a, INT b) | 将a按位无符号右移b位 |
greatest | greatest(T v1, T v2, …) | 返回所给的列表值中的最大值。例如:greatest(4,5),返回5 |
least | least(T v1, T v2, …) | 返回所给的列表值中的最小值。例如:greatest(4,5),返回4 |
width_bucket | width_bucket(NUMERIC expr, NUMERIC min_value, NUMERIC max_value, INT num_buckets) | 可以根据输入参数创建等长的段。范围MIN到MAX被分为num_buckets节,每节有相同的大小。返回expr所在的那一节。如果expr小于MIN,将返回0,如果expr大于或等于MAX,将返回num_buckets+1。不理解的,可以看看hash_map的思想,和hive中buckets概念 |