hivesql行转列
时间: 2023-11-02 13:07:40 浏览: 42
在HiveSQL中,可以使用LATERAL VIEW和explode函数将行转列。具体操作如下:
假设有以下表格:
```
id name courses
1 Alice Math,Science
2 Bob English,History
```
可以使用以下语句将courses列转换为多行:
```
SELECT id, name, course
FROM table_name
LATERAL VIEW explode(split(courses, ',')) courses_table AS course;
```
输出结果为:
```
id name course
1 Alice Math
1 Alice Science
2 Bob English
2 Bob History
```
相关问题
hive sql 行转列
Hive SQL 中可以使用 `LATERAL VIEW` 和 `explode()` 函数将行转列。假设有如下表 `table1`:
```
id name colors
1 John red,green,blue
2 Sarah yellow,orange
```
我们可以使用以下语句将 `colors` 列转换为多行:
```
SELECT id, name, color
FROM table1
LATERAL VIEW explode(split(colors,',')) colors_table AS color;
```
输出结果为:
```
id name color
1 John red
1 John green
1 John blue
2 Sarah yellow
2 Sarah orange
```
这里的 `split()` 函数用于将 `colors` 列按逗号进行分割,生成一个数组。`explode()` 函数用于将数组展开为多行,然后使用 `LATERAL VIEW` 将展开后的表与原表进行连接。最终输出结果即为行转列后的表格。
hive sql行转列
在Hive中,可以使用`LATERAL VIEW`和`explode`函数来实现行转列的功能。
假设有如下表格`test`:
```
id name value
1 John 1,2,3
2 Mary 4,5
3 Bob 6
```
要将每行中的`value`列转换为多行,可以使用以下SQL语句:
```
SELECT id, name, v
FROM test
LATERAL VIEW explode(split(value,',')) tbl AS v;
```
执行以上SQL语句后,得到的结果如下:
```
id name v
1 John 1
1 John 2
1 John 3
2 Mary 4
2 Mary 5
3 Bob 6
```
其中`LATERAL VIEW`和`explode(split(value,','))`将`value`列按照逗号分隔成多个行,每个行包含一个`v`值,然后使用`SELECT`语句将`id`、`name`和`v`列查询出来。