gpt4 book ai didi

hadoop - hive 加入以获得日期明智的图片

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

我正在尝试使用表B中的 a键和日期以及联接时来自表A 的先前最近的日期记录,键和日期来联接HIVE中的2个表。例如:以下是2个输入表

<----------TABLE A------------->            <------------TABLE B------------>
A_id A_date changed_col B_id B_date B_value A_id
**** ****** *********** **** ****** ******* *****
A01 2017-03-20 ABC B01 2017-04-02 200 A01
A01 2017-04-01 XYZ B01 2017-04-04 500 A01
A01 2017-04-05 LLL B02 2017-04-07 900 A02
A02 2017-04-06 KKK B02 2017-04-30 800 A02
A02 2017-04-12 JJJ

但是,当我将表B与表A联接时,它应该为相同的键(A_id)寻找表A中最接近的最低日期。以下是预期的输出表:
B_id    B_date          A_id        A_date      changed_col   B_value
**** ****** **** ****** *********** *******
B01 2017-02-04 A01 2017-01-04 XYZ 200
B01 2017-04-04 A01 2017-01-04 XYZ 500
B02 2017-04-07 A02 2017-04-06 KKK 900
B02 2017-04-30 A02 2017-04-12 JJJ 800

任何帮助深表感谢。谢谢

最佳答案

自己弄清楚查询

select * from 
(select b.*, a.*,
row_number() over (partition by b.a_id, b.b_date
order by b.b_date, datediff(to_date(b.b_date), to_date(a.a_date)) ) as rnk
FROM b JOIN a
ON b.a_id= a.a_id
WHERE a.a_date <= b.b_date
) j1 where j1.rnk = 1

B_id B_date B_value A_id A_date changed_col rnk
B01 2017-04-02 200 A01 A01 2017-04-01 XYZ 1
B01 2017-04-04 500 A01 A01 2017-04-01 XYZ 1
B02 2017-04-07 900 A02 A02 2017-04-06 KKK 1
B02 2017-04-30 800 A02 A02 2017-04-12 JJJ 1

您可以在第1行中选择所需的列。到目前为止,我已经从A和B中选择了所有列,包括排名。

关于hadoop - hive 加入以获得日期明智的图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43460773/

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