YDB中多值列讲解

《《《《《《《 大棒槌QAQ 》》》》》》》

- YDB多值列介绍

在一个列里可以存储多个值。比如,可以将一个人 的多个标签值 存储在一个记录里面,一个人的每天的行为数据 放在一个记录里面。

- 适用场景

有一个表存储学生的一些特征数据例如,姓名、年龄、体重、身高等。
如下图所示
这里写图片描述

- 多值列类型

多值列所有数据类型均为按列存储

这里写图片描述

- 多值列支持的数据格式

①支持以空格分割的数据
例如:11 22 33 44

②支持指定的json数据
例如:[“1111”,”22222”,”33333”,”44444”]

③支持以特殊字符分割的数据
例如:ab#cd#ef#gg (以’#’号分割)
1b2b3 (以小写字母’b’分割)
1.1P1.2P1.3 (以大写字母’P’分割)
50^Y30^Y40 (以不可见字符’\u0019’分割)
a&b (以’&’号分割)
c%d (以’%’号分割)
22:33:44 (以英文’:’号分割)

- 多值列注意点

①多值列,返回的值的无序,并且是排重的。
②如果传递的是空值,会当做null处理。
③默认传递的数值是按照空格分割的,若以其他字符分割需特殊处理。
④以特殊字符分割的数值需要将特殊字符进行url转码。
以下是一些特殊字符的转码表:
这里写图片描述

  • -

多值列使用例

数据样例:字段间以’\t’分割,^Y为不可见字符’\u009’
1 Gb#QPt 105b82 10.50P8.20 105^Y82 Gb&QPt Gb QPt [“105”,”82”]

①创建多值列类型表

create  ydbtable mvdtest(id int,
one y_string_idm,
two y_tlong_idm,
three  y_tdouble_idm,
four y_tlong_idm,
five y_string_idm,
six y_string_idm,
seven y_string_idm
)

②向多值列表中导入数据

sh  ydbimport.sh   -local -ov -t mvdtest -p one -tp txt -f /root/testdata/shtest/mvd.txt -sp '\t' -fl id,one,two,three,four,five,six,seven  -mvsplit  one  %23 utf-8 -mvsplit  two  b utf-8 -mvsplit  three  P utf-8 -mvsplit  four  %19 utf-8 -mvsplit  five  %26 utf-8 

③查询语句

select * from mvdtest where ydbpartition='one' limit 10;

④单列group by

select two,count(*)  from mvdtest where ydbpartition='one'    group by  two  limit 10;

⑤普通列与多值列group by

select id,two,count(*) from mvdtest where ydbpartition='one'    group by id, two  limit 10;

⑥双列多值列group by

select one,two,count(*) from mvdtest where ydbpartition='one'    group by one, two  limit 10;

好了大概就这么多了,有不理解或者有觉得不妥当的地方。欢迎联系延云进行交流。

更多的用法,感兴趣的童鞋可以去延云官网了解一下

延云YDB咨询电话:400-188-4800

延云官方QQ技术交流群:521648211

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值