Impala 数值函数大全

Impala数学函数

Impala中数学函数用来执行数值计算,比如基本加法,减法,乘法和除法及更复杂的运算

函数列表

abs(numeric_type a)

返回参数的绝对值

--得到-12的绝对值
[master:21000] > select abs(-12) as abs;
+-----+
| abs |
+-----+
| 12  |
+-----+
--得到-12.5的绝对值
[master:21000] > select abs(-12.5) as abs;
+------+
| abs  |
+------+
| 12.5 |
+------+
bin(bigint a)

返回整数的二进制表示形式,即0和1位数字符串。

--得到15的二进制字符串
[master:21000] > select bin(15) as bin;
+------+
| bin  |
+------+
| 1111 |
+------+
ceil(double a)
ceiling(double a)
dceil(double a)

返回大于或等于参数的最小整数

--使用ceil得到大于12.5的最小整数
[master:21000] > select ceil(12.5) as ceil;
+------+
| ceil |
+------+
| 13   |
+------+
--使用ceiling得到大于12.5的最小整数
[master:21000] > select ceiling(12.5) as ceiling;
+---------+
| ceiling |
+---------+
| 13      |
+---------+
--使用dceil得到大于12.5的最小整数
[master:21000] > select dceil(12.5) as dceil;
+-------+
| dceil |
+-------+
| 13    |
+-------+
conv(bigint num,int from_base,int to_base)
conv(string num,int from_base,int to_base)

将输入值进行基底转换并返回(进制转换)。

--将16进制的A转换为2进制
[master:21000] > select conv('A',16,2) as conv;
+------+
| conv |
+------+
| 1010 |
+------+
--将16进制的5转换为2进制
[master:21000] > select conv(5,16,2) as conv;
+------+
| conv |
+------+
| 101  |
+------+
e()

返回数学常量e

[master:21000] > select e() as e;
+-------------------+
| e                 |
+-------------------+
| 2.718281828459045 |
+-------------------+

exp(double a)
dexp(double a)

返回常数e的n次方

--通过exp返回e的2次方
[master:21000] > select exp(2) as exp;
+------------------+
| exp              |
+------------------+
| 7.38905609893065 |
+------------------+
--通过dexp返回e的2次方
[master:21000] > select dexp(2) as dexp;
+------------------+
| dexp             |
+------------------+
| 7.38905609893065 |
+------------------+
factorial(integer_type a)

返回整数的的阶乘

--返回10的阶乘
[master:21000] > select factorial(10) as factorial;
+-----------+
| factorial |
+-----------+
| 3628800   |
+-----------+
floor(double a)
dfloor(double a)

返回小于或等于参数的最大整数

--通过floor返回小于12.5的最大整数
[master:21000] > select floor(12.5) as floor;
+-------+
| floor |
+-------+
| 12    |
+-------+
--通过dfloor返回小于12.5的最大整数
[master:21000] > select dfloor(12.5) as dfloor;
+--------+
| dfloor |
+--------+
| 12     |
+--------+
fmod(double a, double b)
mod(numeric_typea, numeric_typeb)

求余数

--5除以2求余
[master:21000] > select fmod(5,2) as fmod;
+------+
| fmod |
+------+
| 1    |
+------+
--5除以2求余
[master:21000] > select mod(5,2) as mod;
+-----+
| mod |
+-----+
| 1   |
+-----+
fnv_hash(type v)

得到任意值的64位哈希值

--得到字符串hello的哈希值
[master:21000] > select fnv_hash('hello') as fnv_hash;
+---------------------+
| fnv_hash            |
+---------------------+
| 6414202926103426347 |
+---------------------+
greatest(some-type a,[some-type b...])

返回表达式列表中的最大值

-从整数5、16、2中得到最大值
[master:21000] > select greatest(5,16,2) as greatest;
+----------+
| greatest |
+----------+
| 16       |
+----------+
-从字符a、b、c中得到最大值
[master:21000] > select greatest('a','b','c') as greatest;
+----------+
| greatest |
+----------+
| c        |
+----------+
least(bigint a,[bigint b])

返回表达式列表中的最小值

-从整数5、16、2中得到最小值
[master:21000] > select least(5,16,2) as least;
+-------+
| least |
+-------+
| 2     |
+-------+
-从字符a、b、c中得到最小值
[master:21000] > select least('a','b','c') as least;
+-------+
| least |
+-------+
| a     |
+-------+
hex(bigint a)
hex(string a)

将整数或字符串中的字符转换为十六进制并返回

--返回整数15的十六进制值
[master:21000] > select hex(15) as hex;
+-----+
| hex |
+-----+
| F   |
+-----+
--返回字符a的十六进制值
[master:21000] > select hex('a') as hex;
+-----+
| hex |
+-----+
| 61  |
+-----+
unhex(string a)

将16进制字符串转换为字符串输出

[master:21000] > select unhex('61') as unhex;
+-------+
| unhex |
+-------+
| a     |
+-------+
is_inf(double a)

判断一个值是否等于无穷大并返回

--判断8是不是等于无穷大
[master:21000] > select is_inf(8) as is_inf;
+--------+
| is_inf |
+--------+
| false  |
+--------+
--判断1/0是不是等于无穷大的值Inf
[master:21000] > select is_inf(1/0) as is_inf;
+--------+
| is_inf |
+--------+
| true   |
+--------+

is_nan(double a)

测试值是否等于不存在的值NaN

--判断8是不是不存在的值NaN
[master:21000] > select is_nan(8) as is_nan;
+--------+
| is_nan |
+--------+
| false  |
+--------+
--判断-1的平方根是不是不存在的值NaN
[master:21000] > select is_nan(pow(-1,0.5)) as is_nan;
+--------+
| is_nan |
+--------+
| true   |
+--------+
ln(double a)
dlog1(double a)

返回数值的对数

--通过ln返回e的对数
[master:21000] > select ln(e()) as ln;
+----+
| ln |
+----+
| 1  |
+----+
--通过dlog1返回e的对数
[master:21000] > select dlog1(e()) as dlog1;
+-------+
| dlog1 |
+-------+
| 1     |
+-------+
log(double base, double a)

以数值base为基底返回a的对数

--返回以2为底,4的对数
[master:21000] > select log(2,4) as log;
+-----+
| log |
+-----+
| 2   |
+-----+
negative(numeric_type a)

返回数值的负数,负负得正

--返回5的相反数
[master:21000] > select negative(5) as negative;
+----------+
| negative |
+----------+
| -5       |
+----------+
--返回-5的相反数
[master:21000] > select negative(-5) as negative;
+----------+
| negative |
+----------+
| 5        |
+----------+
pi()

返回圆周率π的值

[master:21000] > select pi() as pi;
+-------------------+
| pi                |
+-------------------+
| 3.141592653589793 |
+-------------------+
pmod(bigint a, bigint b)
pmod(double a, double b)

返回数字的余数的绝对值


[master:21000] > select pmod(-5,2) as pmod;
+------+
| pmod |
+------+
| 1    |
+------+
positive(numeric_type a)

返回与输入值相同

[master:21000] > select positive(-5) as positive;
+----------+
| positive |
+----------+
| -5       |
+----------+
pow(double a, double p)
power(double a, double p)
dpow(double a, double p)
fpow(double a, double p)

返回数值a的p次方

--通过pow返回2的3次方
[master:21000] > select pow(2,3) as pow;
+-----+
| pow |
+-----+
| 8   |
+-----+
--通过power返回2的3次方
[master:21000] > select power(2,3) as power;
+-------+
| power |
+-------+
| 8     |
+-------+
--通过dpow返回2的3次方
[master:21000] > select dpow(2,3) as dpow;
+------+
| dpow |
+------+
| 8    |
+------+
--通过fpow返回2的3次方
[master:21000] > select fpow(2,3) as fpow;
+------+
| fpow |
+------+
| 8    |
+------+
quotient(bigint numerator, bigint denominator)
quotient(double numerator, double denominator)

求商(去掉余数)

[master:21000] > select quotient(5,2) as quotient;
+----------+
| quotient |
+----------+
| 2        |
+----------+
radians(double a)

将参数值从度数转换为弧度

[master:21000] > select radians(90) as radians;
+-------------------+
| radians           |
+-------------------+
| 1.570796326794897 |
+-------------------+
rand([int seed])
random([int seed])

返回0和1之间的随机值,不同参数返回不同值

[master:21000] > select rand() as rand;
-不加参数时将返回同一个值
+-----------------------+
| rand                  |
+-----------------------+
| 0.0004714746030380365 |
+-----------------------+
[master:21000] > select random() as random;
+-----------------------+
| random                |
+-----------------------+
| 0.0004714746030380365 |
+-----------------------+
[master:21000] > select random(10) as random;
+--------------------+
| random             |
+--------------------+
| 0.2185320766728986 |
+--------------------+
round(double a,[int d])
dround(double a,[int d])

截取数值,四舍五入

--数值2.1求整
[master:21000] > select round(2.1) as round;
+-------+
| round |
+-------+
| 2     |
+-------+
--数值2.123保留两位小数
[master:21000] > select round(2.123,2) as round;
+-------+
| round |
+-------+
| 2.12  |
+-------+
--数值2.1求整
[master:21000] > select dround(2.1) as dround;
+--------+
| dround |
+--------+
| 2      |
+--------+
--数值2.123保留两位小数
[master:21000] > select dround(2.123,2) as dround;
+--------+
| dround |
+--------+
| 2.12   |
+--------+
scale(numeric_expression)

求小数的位数

--求数值2.1的小数位数
[master:21000] > select scale(2.1) as scale;
+-------+
| scale |
+-------+
| 1     |
+-------+
sign(double a)

返回参数值的符号,判断正负以及是否为0

[master:21000] > select sign(2.1) as sign;
+------+
| sign |
+------+
| 1    |
+------+
[master:21000] > select sign(-2.1) as sign;
+------+
| sign |
+------+
| -1   |
+------+
[master:21000] > select sign(0) as sign;
+------+
| sign |
+------+
| 0    |
+------+
sqrt(double a)
dsqrt(double a)

求参数的平方根

[master:21000] > select sqrt(4) as sqrt;
+------+
| sqrt |
+------+
| 2    |
+------+
[master:21000] > select dsqrt(4) as dsqrt;
+-------+
| dsqrt |
+-------+
| 2     |
+-------+
truncate(double_or_decimal a,[digits_to_leave])
dtrunc(double_or_decimal a,[digits_to_leave])

删除所有小数点以后的数或删除N位小数

[master:21000] > select truncate(3.45);
+----------------+
| truncate(3.45) |
+----------------+
| 3              |
+----------------+
[master:21000] > select truncate(3.45,1);
+-------------------+
| truncate(3.45, 1) |
+-------------------+
| 3.4               |
+-------------------+
[master:21000] > select dtrunc(3.45);
+--------------+
| dtrunc(3.45) |
+--------------+
| 3            |
+--------------+
[master:21000] > select dtrunc(3.45,1);
+-----------------+
| dtrunc(3.45, 1) |
+-----------------+
| 3.4             |
+-----------------+
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,458评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,030评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,879评论 0 358
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,278评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,296评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,019评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,633评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,541评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,068评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,181评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,318评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,991评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,670评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,183评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,302评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,655评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,327评论 2 358

推荐阅读更多精彩内容

  • Hive函数 Hive函数 一、关系运算: 等值比较: = 语法:A=B操作类型:所有基本类型描述:如果表达式A与...
    依天立业阅读 834评论 0 8
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,825评论 0 38
  • LanguageManual UDF - Apache Hive - Apache Software Founda...
    葡萄喃喃呓语阅读 1,021评论 0 0
  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,459评论 0 13
  • 游客不遵守秩序,被老虎咬死的消息成为热点已经不是第一次了。同上次一样,我的第一反应也是游客自作自受,怨不得别人。 ...
    中华田园喵阅读 356评论 0 3