Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 配置单元中跨行求和或平均(聚合)数组_Arrays_Hive_Sum_Aggregate_Multirow - Fatal编程技术网

Arrays 配置单元中跨行求和或平均(聚合)数组

Arrays 配置单元中跨行求和或平均(聚合)数组,arrays,hive,sum,aggregate,multirow,Arrays,Hive,Sum,Aggregate,Multirow,这是我的问题,我在配置单元中有一个表,有两列,id和一个双值数组。我想为给定的用户跨行添加双值。这就是数据的样子。每个数组的长度都相同,大于100,但为了简单起见,我在这里只给出了3 +--------+-------------------------- | id | value | +--------+--------------------------+ | 1 | [0.03,0.15,-0.03] | | 1 | [-0.2,0

这是我的问题,我在配置单元中有一个表,有两列,id和一个双值数组。我想为给定的用户跨行添加双值。这就是数据的样子。每个数组的长度都相同,大于100,但为了简单起见,我在这里只给出了3

+--------+--------------------------
| id  |         value         | 
+--------+--------------------------+
| 1      | [0.03,0.15,-0.03]  |
| 1      | [-0.2,0.11,-0.16]  |
| 1      | [0.03,0.15,-0.03]  | 
| 2      | [0.02,0.01,0.05]   | 
| 2      | [0.1,0.03,0.3]     | 
+--------+--------------------------+
我期待的答案是

+--------+--------------------
| id  |         value         | 
+--------+---------------------
| 1      | [0.4,0.41,-0.22]   |
| 2      | [0.12,0.04,0.35]   | 
+--------+---------------------
如何使用配置单元查询执行此操作? 提前谢谢

更新:以下是我用来获得解决方案的方法。但我正在寻找更好的解决方案

SELECT id, concat_ws(',', collect_list(CAST(val_new AS STRING))) as val_fin FROM (SELECT id, avg(valueid) as val_new from (SELECT id, valueid, index from user_interest_profiles.clicked_articles LATERAL VIEW POSEXPLODE(split(vector,'\\,')) value AS index, valueid )x GROUP BY id, index)x GROUP BY id;
我使用的实现是:

  • 使用索引分解数组
  • 使用group by id和索引平均值
  • 使用collect\u list跨行连接值

请展示您迄今为止所做的尝试。我已更新了我的实施。请看一看。谢谢