针对特定场景的 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,
我有一个想为其编写 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,