说一下hive 函数explode
时间: 2023-08-02 11:13:22 浏览: 44
Hive函数`explode`可以将一个包含数组或者Map的列拆分成多行,每行对应数组或Map中的一个元素。`explode`函数的语法如下:
```
explode(array|map);
```
其中,`array`和`map`是要被拆分的列,可以是列名或者是一个表达式。
如果`array`是一个数组,那么`explode`函数将会把数组中的每个元素作为一个新行返回,同时复制原有行的其他列。例如,假设有一张表`my_table`,其中有一列`my_array`包含了一个数组:
```
my_array
-------
[1, 2, 3]
[4, 5]
[6, 7, 8, 9]
```
那么使用`explode`函数可以将`my_array`列拆分成多行:
```
SELECT explode(my_array) AS my_element
FROM my_table;
```
执行上述查询的结果如下:
```
my_element
----------
1
2
3
4
5
6
7
8
9
```
如果`map`是一个Map,那么`explode`函数会将Map中的每个键值对拆分成两个新列`key`和`value`,同时复制原有行的其他列。例如,假设有一张表`my_table`,其中有一列`my_map`包含了一个Map:
```
my_map
-------
{'a': 1, 'b': 2}
{'c': 3, 'd': 4}
{'e': 5, 'f': 6, 'g': 7}
```
那么使用`explode`函数可以将`my_map`列拆分成多行:
```
SELECT explode(my_map) AS (key, value)
FROM my_table;
```
执行上述查询的结果如下:
```
key | value
----+-------
a | 1
b | 2
c | 3
d | 4
e | 5
f | 6
g | 7
```