Phoenix的数据类型和操作符、函数
来源:互联网 发布:攻破网站数据库 编辑:程序博客网 时间:2024/06/06 20:45
其实官方文档已经有这些东西了,如下:
http://phoenix.apache.org/language/functions.html
http://phoenix.apache.org/language/index.html
不过官网的某些编排确实有点反人类的意味,比如为了拼接一个字符串,我硬是找了老半天最终才找到,所以还是稍微整理一下。
数据类型:
1、数字类型
类型
长度(byte)
备注integer
4
8
tinyint
1
smaillint
2
float
4
double
8
举个例子,有一个tinyint的56,正常的二进制表示为00111000,然而在这里表示为10111000,这样,就保证了在hbase中,这些数作为rowkey的时候,负数在正数前面,以保证rowkey有序。
如果想使用正常版本的数字(毕竟有时候需要直接从hbase操作),可以使用它们的unsigned版本,如下:
类型
长度(byte)
备注
unsigned_int
4
unsigned_long
8
unsigned_tinyint
1
unsigned_smallint
2
unsigned_float
4
unsigned_double
8
然后还有一个decimal type,对应于java.math.BigDecimal,可以查看java的api获取详细的描述
decimal(precision,scale)
scale
2、布尔型
Boolean type就没什么可说的了,用一个byte表示真假
3、时间类型
Phoenix中时间类型跟数字型没什么区别,就是显示方面的问题,因此,它也有取反的问题(虽然时间戳其实没什么负数的,不知道为什么这么设计)。
因此,它也有unsinged版本,如下:
类型
长度(byte)
精度
time
8
毫秒
date
8
毫秒
timestamp
12
纳秒
unsigned_time
8
毫秒
unsigned_date
8
毫秒
unsigned_timestamp
12
纳秒
4、字符串与二进制类型
类型
长度备注
varchar
可变
char(len)
len
binary(len)
len
varbinary
可变
5、集合类型
当前只支持array
函数和操作符:
1、数字类型
实际上,时间类型也是数字类型,但由于他们有一些特殊性,单独列出。
操作符或函数
描述
举例
+ - * / %
基本操作符
round
保留小数,原则是最接近,可以视为四舍五入round(2.34,1) = 2.3
ceil
保留小数,进一法
round(3.14,0) = 4
floor
保留小数,去尾法
floor(3.14, 0) = 3
trunc
和floor一样
to_number
将字符串或者时间类型转换为数字,使用java.text.DecimalFormat规定的类型rand
随机数
sign abs sqrt cbrt exp power ln log
常用数学函数
2、时间类型
操作符或函数
描述
举例
+
以天为单位进行加一个数字类型
-
以天为单位,如果参数是数字类型,结果就是时间类型;如果参数是事件类型,结果就是数字类型
to_date
从字符串输入时间round
保留一定的精确度,保留最接近的
round(to_date('2015-05-01 12:30:06'),'YEAR') =
2015-05-02 00:00:00.000
ceil
保留精确度到下一个单位
ceil(to_date('2015-05-01 12:30:06'),'YEAR') =
2015-05-02 00:00:00.000
floor
保留精确度到上一个单位
floor(to_date('2015-05-01 12:30:06'),'YEAR') =
2015-05-01 00:00:00.000
trunc
和floor一样
current_date current_time now
当前时间
year month week dayofmonth hour minute second
求时间的一部分
convert_tz
转换时区timezone_offset
求时差
3、字符串函数
upper
大写
lower
小写
reverse
反置lpad
改变长度,用特殊字符填充,默认是空格
lpad('a', 30)trim ltrim rtrim
去掉两边(或者单边)的空格
regexp_replace
替换字符串
||
字符串拼装
substr instr length regexp_substr
常用字符串函数
to_char
将数字或者时间类型转换成字符串
encode
将数字按照格式转换成字符串
ENCODE(myNumber, 'BASE62')
decode
将字符串按照格式转化为数字
DECODE('000000008512af277ffffff8', 'HEX')
4、数组函数
array_elem array_length array_append array_prepend array_cat array_fill array_to_string
这些看名字就知道怎么用了。
any
测试是否存在满足条件的值1 = Any(my_array)
all
测试是否都满足某个条件
1 = ALL(my_array)
5、其他
md5 invert
阅读全文
0 0
- Phoenix的数据类型和操作符、函数
- Phoenix的数据类型和操作符、函数
- Phoenix 的数据类型
- Phoenix学习笔记 --- phoenix支持的数据类型
- Apache Phoenix的Join操作和优化
- tensorflow | 操作函数 和 数据类型
- javascript的数据类型和操作符
- HBase和Phoenix的整合
- phoenix的一些操作以及注意点
- 【python 】数据类型和返回数据类型的函数
- Apache Phoenix数据类型
- MongoDB数据库的数据类型和$type操作符
- MongoDB数据库的数据类型和$type操作符
- phoenix操作注意点
- PHOENIX操作HBASE
- phoenix索引操作
- phoenix基本操作
- Phoenix操作hbase
- 【java数据结构】快速排序
- mongodb常用命令
- 花书学习笔记(1) 范数、特征分解、奇异值分解、伪逆、自信息
- Flomerics Floemc 6.1(lic carcak) 电磁兼容性的分析
- MapReduce计数器
- Phoenix的数据类型和操作符、函数
- [LintCode]371.用递归打印数字
- 面向对象 时钟
- 记npm包开发全过程
- IO补充
- rem 等比例样式
- HDU 6106-Classes
- 原生js实现数组去重的5种方法
- 华为抢了腾讯的利益,腾讯却拿用户数据说事