gpt4 book ai didi

hadoop - Apache Hive-我们如何将数组列值与联接中的其他列进行比较

转载 作者:行者123 更新时间:2023-12-02 21:36:02 26 4
gpt4 key购买 nike

我是 hive 新手。谁能帮助解决以下问题。

表1:

Column1 Column2

1 1,2,10
2 11,12,13
3 1,2,14
4 20,1,10
5 11,12,13,14

表2:
Column1 Column2
1 Purchase
2 Product View
10 Cart Open
11 Checkout
12 Cart Add
13 Cart Remove
14 Cart View
20 Campaign View

输出:
加入这些表1,表2之后,输出应如下所示
Column1 Column2 DESC
1 1,2,10 Purchase, Product View, Cart Open
2 11,12,13 Checkout, Cart Add, Cart Remove
3 1,2,14 Purchase, Product View
4 20,1,10 Campaign View, Purchase, Cart Open
5 11,12,13,14 Checkout, Cart Add, Cart Remove, Cart View

问题1:

我们如何比较 table1 column2.1, colum2.2, column2.10 with table2 column1 values(1,2,10,11,12,13,14,20)并在 column中创建新的 table1

最佳答案

您将需要使用以下查询来获得所需的结果:

SELECT table1.column1 as Column1,
table1.column2 as Column2,
collect_set(table2.column2) as DESC
FROM table2,
table1
WHERE (table1.column2 RLIKE CONCAT('^' , table2.column1, ','))
OR (table1.column2 RLIKE CONCAT(',' , table2.column1 , '$'))
OR (table1.column2 RLIKE CONCAT(',' , table2.column1, ','))
GROUP BY table1.column2,
table1.column1
ORDER BY table1.column1

  • 有关collect_set()的更多信息,请引用配置单元文档。 collect_set(col)返回消除了重复元素的一组对象。
  • RLIKE (正则表达式匹配)用于我们想要将模式从table2.column1匹配到table1.column2的文本。两列之间的单个RLIKE将不起作用,因为“12”将匹配值“1”,“2”和“12”。
  • CONCAT 用于3个正则表达式条件:
    开头的数字后面只有逗号。
    中间的数字前后会有逗号。
    末尾的数字前面只有逗号。
  • 不需要连接,只需使用现有的配置单元功能即可对其进行处理。
  • 关于hadoop - Apache Hive-我们如何将数组列值与联接中的其他列进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32181534/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com