本文主要是介绍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必须是元素,不能是列名。(不常用)
假设我们有一个名为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博客
这篇关于hive行转列函数stack(int n, v_1, v_2, ..., v_k)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!