如何在HiveQL中将查询结果转换为键值表单

时间:2017-12-14 11:12:41

标签: bigdata etl hiveql

我尝试了不同的东西,但都没有成功。我有以下问题,如果有人可以帮助我,我将非常感激。

我将视图中的数据作为数十亿条记录获取,用于不同的衡量标准

A)

| s_c_m1 | s_c_m2 | s_c_m3 | s_c_m4 | s_p_m1 | s_p_m2 | s_p_m3 | s_p_m4 |
|--------+--------+--------+--------+--------+--------+--------+--------|
|   0    |   1    |   2    |   3    |   4    |   5    |   6    |   7    |
|   1    |   2    |   3    |   4    |   5    |   6    |   7    |   8    |
|   2    |   3    |   4    |   5    |   6    |   7    |   8    |   9    |
|--------+--------+--------+--------+--------+--------+--------+--------|

然后我需要按每个度量聚合它。这么久很好。我搞清楚了。

B)

| s_c_m1 | s_c_m2 | s_c_m3 | s_c_m4 | s_p_m1 | s_p_m2 | s_p_m3 | s_p_m4 |
|--------+--------+--------+--------+--------+--------+--------+--------|
|   3    |   6    |   9    |   12   |   15   |   18   |   21   |   24   |
|--------+--------+--------+--------+--------+--------+--------+--------|

然后我需要以下面的形式获取数据。我需要把它变成一个键值形式。

C)

| measure |  c |  p | 
|---------+----+----|
|    m1   |  3 | 15 | 
|    m2   |  6 | 18 | 
|    m3   |  9 | 21 | 
|    m4   | 12 | 24 | 
|---------+----+----|

B)中的前4列将在C)中形成第一列,而后两列将形成另一列。

有一种优雅的方式,可以轻松维护吗?完美的解决方案是,如果在A)和B)中引入另一项措施,则不需要进行修改,它会自动获得差异。

我知道如何在SqlServer和Postgres中完成这项工作,但在这里我错过了实验。

1 个答案:

答案 0 :(得分:0)

我认为你应该使用map