hive行转列函数stack(int n, v_1, v_2, ..., v_k)

stack()函数时,参数中的键值对应按照一对列名和列值进行排使用列

stack(int n, v_1, v_2, ..., v_k)

功能:把k列数据转换成n行,k/n列,其中n必须是正整数,后面的v_1到v_k必须是元素,不能是列名。(不常用)

sql 复制代码
假设我们有一个名为employees的表,包含以下列:id, name, department, salary。

CREATE TABLE employees (
  id INT,
  name STRING,
  department STRING,
  salary DOUBLE
);

INSERT INTO employees VALUES
  (1, 'John', 'HR', 5000),
  (2, 'Jane', 'Finance', 6000),
  (3, 'Mike', 'IT', 5500);
​
现在我们使用stack()函数将每个员工的信息转换为多列:

SELECT col_index, col_value
FROM (
  SELECT stack(4,
    'id', id,
    'name', name,
    'department', department,
    'salary', salary
  ) AS (col_index, col_value)
  FROM employees
) stacked_data;
​
在这个例子中,我们使用stack()函数将每个键值对转换为多行,其中参数4指定了输出结果的行数(4行)。每个键值对由一个列名和列值组成。

然后,我们将内部查询的结果作为表别名stacked_data的数据源,并选择col_index和col_value两个列作为最终输出结果。

输出结果如下所示:

col_index	col_value
id	1
name	John
department	HR
salary	5000.0
id	2
name	Jane
department	Finance
salary	6000.0
id	3
name	Mike
department	IT
salary	5500.0
每一行表示一个转换后的记录,其中col_index列表示每个记录的列名(键),col_value列表示每个记录的列值。

参考文章

hive表生成函数explode、stack、lateral view和json_tuple、parse_url_tuple示例_hive stack-CSDN博客

相关推荐
TTBIGDATA12 小时前
【Ranger】Ranger Admin 配置 Knox 策略时出现,the trustAnchors parameter must be non-empty
大数据·hadoop·ambari·kerberos·ranger·knox·bigtop
BYSJMG12 小时前
计算机毕设推荐:基于大数据的各省碳排放数据分析与可视化系统实战
大数据·vue.js·hadoop·后端·信息可视化·数据分析·课程设计
市场部需要一个软件开发岗位1 天前
数据仓库相关内容分享
数据库·数据仓库·oracle
BYSJMG1 天前
计算机毕设选题推荐:基于Hadoop的交通事故数据可视化分析系统
大数据·vue.js·hadoop·分布式·后端·信息可视化·课程设计
Gain_chance1 天前
32-学习笔记尚硅谷数仓搭建-DWD层首日数据装载脚本及每日数据装载脚本
大数据·数据仓库·hive·笔记·学习
sheji34161 天前
【开题答辩全过程】以 基于hadoop的空气质量数据分析及可视化系统为例,包含答辩的问题和答案
大数据·hadoop·数据分析
Gain_chance1 天前
29-学习笔记尚硅谷数仓搭建-DWD层交易域下单事务事实表和交易域支付成功事务事实表
数据仓库·hive·笔记·学习·datagrip
Zilliz Planet2 天前
<span class=“js_title_inner“>Spark做ETL,与Ray/Daft做特征工程的区别在哪里,如何选型?</span>
大数据·数据仓库·分布式·spark·etl
TTBIGDATA2 天前
【Ranger】Ambari开启Kerberos 后 ,Ranger 中 Hive 策略里,Resource lookup fail 线程池超时优化
大数据·数据仓库·hive·hadoop·ambari·hdp·ranger
那就学有所成吧(˵¯͒¯͒˵)2 天前
大数据项目(一):Hadoop 云网盘管理系统开发实践
大数据·hadoop·分布式