针对特定场景的 Hive 查询

Hive query for a specific scenario

我有一个想为其编写 Hive 查询的场景。场景在这里:

数据如下:

现在,我期望的输出是:

Null/empty 个要忽略的值。

本质上,我想要列 col1、col2、col3 和 col4 中值的总和并对这些值进行分组。 'id' 列与此处无关,仅供说明之用。

为这种情况编写 HiveQL 查询的任何帮助都会有所帮助。

谢谢。

select val, count(1)
from test_table lateral view explode(array(col1,col2,col3,col4)) t as val
where val is not null
group by val

解释:

test_table 是你的 table 名字。
如果列数超过 4,请将它们放在 array 函数中。

首先,我将您所有的列收集到一个 array.And 中,然后使用 lateral view explode(array) 将数组项作为此列最后一组的 column.At 并进行计数。

在 HIVE 中实现此目的的另一种方法

select e.single_col,count(e.single_col) from (
select stack(4,col1,col2,col3,col4) as single_col from challenge ) e
where e.single_col != ''
group by e.single_col;

挑战是这里使用的table。 数据以逗号分隔的文本格式加载到 table

1,A,B,,D
2,B,C,D,
3,,D,C,
4,,A,A,