Hive 从配置单元中的文本字符串获取特定值
我需要从配置单元表中下面的文本字符串中获取值Hive 从配置单元中的文本字符串获取特定值,hive,hiveql,Hive,Hiveql,我需要从配置单元表中下面的文本字符串中获取值5。出于某种原因,我使用的floor和split函数可以获得值“0”和“3”,但我不知道如何在第一个“/”前面获得第一个值: 使用0值而不是1,那么您将得到5值 hive> Select floor(split('5/0/3/0/4/4/143504', '[/]')[0]) as draws; +--------+--+ | draws | +--------+--+ | 5 | +-----
5
。出于某种原因,我使用的floor和split函数可以获得值“0”和“3”,但我不知道如何在第一个“/”前面获得第一个值:
使用0值而不是1,那么您将得到5值
hive> Select floor(split('5/0/3/0/4/4/143504', '[/]')[0]) as draws;
+--------+--+
| draws |
+--------+--+
| 5 |
+--------+--+
下面的语句演示了您记录中的下限(0,1,2)的结果
hive> Select floor(split('5/0/3/0/4/4/143504', '[/]')[0]) as draws,floor(split('5/0/3/0/4/4/143504', '[/]')[1]),floor(split('5/0/3/0/4/4/143504', '[/]')[2]) losses;
+--------+------+---------+--+
| draws | _c1 | losses |
+--------+------+---------+--+
| 5 | 0 | 3 |
+--------+------+---------+--+
蜂巢split()
函数接受两个参数(字符串,正则表达式模式)
,并根据regex
拆分字符串。拆分将以数组的形式返回
可以通过数组索引访问每个拆分。您需要索引为0的5
因此,查询应为:
Select
floor(split('5/0/3/0/4/4/143504', '[/]')[0]) as draws,
floor(split('5/0/3/0/4/4/143504', '[/]')[1]) as losses;
--Output:
draws losses
5 0
为了扩展本例,以下是所有拆分:
Select
floor(split('5/0/3/0/4/4/143504', '[/]')[0]) as e0,
floor(split('5/0/3/0/4/4/143504', '[/]')[1]) as e1,
floor(split('5/0/3/0/4/4/143504', '[/]')[2]) as e2,
floor(split('5/0/3/0/4/4/143504', '[/]')[3]) as e3,
floor(split('5/0/3/0/4/4/143504', '[/]')[4]) as e4,
floor(split('5/0/3/0/4/4/143504', '[/]')[5]) as e5,
floor(split('5/0/3/0/4/4/143504', '[/]')[6]) as e6;
--Output
e0 e1 e2 e3 e4 e5 e6
5 0 3 0 4 4 143504
Select
floor(split('5/0/3/0/4/4/143504', '[/]')[0]) as e0,
floor(split('5/0/3/0/4/4/143504', '[/]')[1]) as e1,
floor(split('5/0/3/0/4/4/143504', '[/]')[2]) as e2,
floor(split('5/0/3/0/4/4/143504', '[/]')[3]) as e3,
floor(split('5/0/3/0/4/4/143504', '[/]')[4]) as e4,
floor(split('5/0/3/0/4/4/143504', '[/]')[5]) as e5,
floor(split('5/0/3/0/4/4/143504', '[/]')[6]) as e6;
--Output
e0 e1 e2 e3 e4 e5 e6
5 0 3 0 4 4 143504