如何从另一个平面/简单配置单元表中使用map [structs]加载配置单元表

库纳尔

我在配置单元中有2个具有Order和Order_Detail的表(具有1:n关系,并在order_id上联接),我试图利用配置单元复杂数据类型-map [struct]加载到单个表中。

假设ORDER具有以下数据,

Order_id total_amount客户

123 10.00 1

456 12.00 2

和ORDER_DETAILS有

Order_id Order_Item_id Item_amount Item_type

123 1 5.00 A

123 2 5.00乙

456 1 6.00 A

456 2 3.00乙

456 3 3.00摄氏度

我想用所有订单列和order_detail列作为结构图创建单个表ORDERS。这有助于我将相关数据和查询结合在一起,从而避免频繁的联接。我尝试使用带有相应Serde的txt / json文件输入来加载具有复杂数据类型的表格,并且效果很好。但是在这种情况下,我想将ORCFile格式的现有2个配置单元表中的数据加载到新表中。已经使用named_struct函数尝试了一些基本的插入操作,但是它分别加载了每一行,并且没有将相同的order_id合并到一行中。

预期输出类似,

123 10.00 1 [1:{5.00,A},2:{5.00,B}]

456 12.00 2 {1:{6.00,A},2:{3.00,B},3:{3.00,C}]

但是我明白了

123 10.00 1 [1:{5.00,A}]

123 10.00 1 [2:{5.00,B}]

456 12.00 2 {1:{6.00,A}]

456 12.00 2 {2:{3.00,B}]

456 12.00 2 {3:{3.00,C}]

请帮助我了解仅通过从2个表中选择INSERT INTO表来实现此目的的方法。提前致谢。

库纳尔

我找到了一种使用map,named_struct函数以及David Worms在to_map UDF博客上发布的自定义UDF to_map的方法这是样本

CREATE TABLE ORDER(
  order_id bigint,
  total_amount bigint,
  customer bigint)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat';

CREATE TABLE ORDER_DETAILS(
  order_id bigint,
  Order_Item_id bigint,
  Item_amount bigint,
  Item_type string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS INPUTFORMAT
  'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat';

CREATE TABLE ORDERS(
  order_id bigint,
  Order_Items map < bigint, struct < Item_amount: bigint, Item_type: string >> ,
  total_amount bigint,
  customer bigint)
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat';

Insert overwrite table ORDERS
select
a.order_id,
  a.order_items,
  b.total_amount,
  b.customer
from
  (select order_id as order_id,
    to_map(order_item_id, named_struct("item_amount", item_amount, "item_type", item_type)) as order_items from ORDER_DETAILS group by order_id) a
JOIN ORDER b ON(a.order_id = b.order_id);

从ORDERS中选择*;

123 {1:{“ Item_amount”:5,“ Item_type”:“ A”},2:{“ Item_amount”:5,“ Item_type”:“ B”}}} 10 1

456 {1:{“ Item_amount”:6,“ Item_type”:“ A”},2:{“ Item_amount”:3,“ Item_type”:“ B”},3:{“ Item_amount”:3,“ Item_type” :“ C”}} 12 2

希望这对大家有帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从另一个平面/简单配置单元表中使用map [structs]加载配置单元表

来自分类Dev

如何使用Powershell访问另一个用户的注册表配置单元?

来自分类Dev

如何对从另一个表创建的未分区的配置单元表进行分区

来自分类Dev

配置单元外部表位置与加载路径

来自分类Dev

在另一个单元格中使用带有工作表名称的公式

来自分类Dev

如何将键值对加载到配置单元表?

来自分类Dev

如何将所有配置单元表从一个数据库复制到另一个数据库

来自分类Dev

使用来自两个配置单元表的值创建一个新的配置单元表

来自分类Dev

删除表配置单元

来自分类Dev

无法将数据加载到配置单元表中

来自分类Dev

创建配置单元表并加载带引号的CSV数据

来自分类Dev

将XML数据加载到配置单元表时出错

来自分类Dev

如何归档配置单元表?

来自分类Dev

循环遍历工作表中的单元并将其加载到另一个

来自分类Dev

使用数据验证更改一个单元格后,如何自动更新单元格以匹配另一个工作表中的值?

来自分类Dev

如何在Rails中使用另一个表验证表

来自分类Dev

如何在MySQL中使用另一个表逐行更新表

来自分类Dev

您如何使用segue创建一个使用核心数据在每个单元格内具有另一个表视图的表视图?

来自分类Dev

如何从配置单元表列表中选择最后一个表?

来自分类Dev

如何使用参考单元格的值对另一个工作表中的excel数据求和

来自分类Dev

Excel / VBA如何在上次使用的单元格之后将数据从一个工作表移动到另一个工作表?

来自分类Dev

如何使用另一个表更新表

来自分类Dev

Excel:如何让IF函数从另一个工作表返回单元格的值

来自分类Dev

如何在Access中使用另一个表的联接从一个表中删除项目?

来自分类Dev

使用VBA将错误单元格分离到另一个工作表

来自分类Dev

使用变量引用另一个工作表中的单元格

来自分类Dev

使用变量引用另一个工作表中的单元格

来自分类Dev

使用间接访问另一个工作表中的单元格范围

来自分类Dev

无法创建配置单元表

Related 相关文章

  1. 1

    如何从另一个平面/简单配置单元表中使用map [structs]加载配置单元表

  2. 2

    如何使用Powershell访问另一个用户的注册表配置单元?

  3. 3

    如何对从另一个表创建的未分区的配置单元表进行分区

  4. 4

    配置单元外部表位置与加载路径

  5. 5

    在另一个单元格中使用带有工作表名称的公式

  6. 6

    如何将键值对加载到配置单元表?

  7. 7

    如何将所有配置单元表从一个数据库复制到另一个数据库

  8. 8

    使用来自两个配置单元表的值创建一个新的配置单元表

  9. 9

    删除表配置单元

  10. 10

    无法将数据加载到配置单元表中

  11. 11

    创建配置单元表并加载带引号的CSV数据

  12. 12

    将XML数据加载到配置单元表时出错

  13. 13

    如何归档配置单元表?

  14. 14

    循环遍历工作表中的单元并将其加载到另一个

  15. 15

    使用数据验证更改一个单元格后,如何自动更新单元格以匹配另一个工作表中的值?

  16. 16

    如何在Rails中使用另一个表验证表

  17. 17

    如何在MySQL中使用另一个表逐行更新表

  18. 18

    您如何使用segue创建一个使用核心数据在每个单元格内具有另一个表视图的表视图?

  19. 19

    如何从配置单元表列表中选择最后一个表?

  20. 20

    如何使用参考单元格的值对另一个工作表中的excel数据求和

  21. 21

    Excel / VBA如何在上次使用的单元格之后将数据从一个工作表移动到另一个工作表?

  22. 22

    如何使用另一个表更新表

  23. 23

    Excel:如何让IF函数从另一个工作表返回单元格的值

  24. 24

    如何在Access中使用另一个表的联接从一个表中删除项目?

  25. 25

    使用VBA将错误单元格分离到另一个工作表

  26. 26

    使用变量引用另一个工作表中的单元格

  27. 27

    使用变量引用另一个工作表中的单元格

  28. 28

    使用间接访问另一个工作表中的单元格范围

  29. 29

    无法创建配置单元表

热门标签

归档