1

lateral view

复制代码
在 Hive 中,使用 `LATERAL VIEW` 可以实现行转列的操作,通常与 `explode` 函数结合使用。下面是一个示例,展示如何通过 `LATERAL VIEW` 将行转为列。

### 示例场景

假设我们有一个名为 `movies` 的表,包含影视作品及其类型,类型是以逗号分隔的字符串。

### 1. 创建基础表

首先,我们创建一个名为 `movies` 的基础表:

```sql
CREATE TABLE movies (
    title STRING,
    genres STRING
);
```

### 2. 插入数据

接下来,向 `movies` 表中插入一些示例数据:

```sql
INSERT INTO TABLE movies VALUES 
('《疑犯追踪》', '悬疑, 动作, 科幻, 剧情'),
('《Lie to Me》', '悬疑, 警匪, 动作, 心理, 剧情'),
('《战狼2》', '战争, 动作, 灾难');
```

### 3. 使用 `LATERAL VIEW` 进行行转列

现在,我们可以使用 `LATERAL VIEW` 和 `explode` 函数将 `genres` 列中的类型行转为列。以下是一个查询示例:

```sql
SELECT 
    title,
    genre
FROM 
    movies
LATERAL VIEW explode(split(genres, ', ')) exploded_genres AS genre;
```

### 4. 查询结果

执行上述查询后,结果将如下所示:

| title         | genre   |
|---------------|---------|
| 《疑犯追踪》  | 悬疑    |
| 《疑犯追踪》  | 动作    |
| 《疑犯追踪》  | 科幻    |
| 《疑犯追踪》  | 剧情    |
| 《Lie to Me》 | 悬疑    |
| 《Lie to Me》 | 警匪    |
| 《Lie to Me》 | 动作    |
| 《Lie to Me》 | 心理    |
| 《Lie to Me》 | 剧情    |
| 《战狼2》     | 战争    |
| 《战狼2》     | 动作    |
| 《战狼2》     | 灾难    |

### 总结

- 使用 `LATERAL VIEW` 和 `explode` 函数可以将以逗号分隔的字符串转为多行。
- 通过 `split` 函数将字符串分割为数组,然后使用 `explode` 将数组中的每个元素转为单独的行。

如果你有其他问题或需要更多示例,请告诉我!
复制代码

 

posted @   萌哥-爱学习  阅读(42)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2021-09-12 HIVE 与impala
2018-09-12 MongoDB
点击右上角即可分享
微信分享提示