合并同一 Hive 中的两条记录 table

Merge two records in same Hive table

我有一个 table 具有这些值:

objective 是合并两行,只要第一行有 end_date=2020-12-14 并且第二行有相同的 start_date 属于相同的 id。在这种情况下,将会有一个合并行,其中第一行的 start_date 和第二行的 end_date。

可能的输出:

您可以尝试以下操作,它通过将记录左连接到我认为应该是唯一的内容来解决问题。

然后它移动连接 table 以匹配 T1.end_date = T2.start_date,这应该在同一行中获得您需要的记录。

最后,它根据“2020-12-14”日期选择数据来自哪个 table,并排除该日期在 start_date 列中的记录 -

SELECT
 T1.id,
 T1.name,
 T1.dob,
 T1.start_date as ts_start,
 CASE WHEN T1.end_date = '2020-12-14' THEN T2.end_date ELSE T1.end_date END AS ts_end,
 CASE WHEN T1.end_date = '2020-12-14' THEN T2.is_present ELSE T1.is_present END AS is_present
FROM records T1
LEFT JOIN records T2
 ON T1.id= T2.id AND T1.name= T2.name AND T1.dob = T2.dob AND T1.end_date = T2.start_date
WHERE T1.start_date <> '2020-12-14'
ORDER BY ts_end;

我不太熟悉 HIVE 语法,因此您可能需要进行一些编辑,但这应该会产生预期的结果