我有三个Hive表:
- Control_table,包含已知数据
- New_table,包含需要检查的数据
- Result_table,用于插入New_table与Control_table中值不同的记录
这三个表都具有相同的列名(出于安全原因,我不会展示列名)和列数,它们分别是:
c1, c2, c3, c4, c5, c6, c7
c1是主键。
现在我需要编写HIVE的SQL查询来比较两个表(control_table和new_table),并将具有不同值的行移动到结果表中。现在,结果表与new_table或control_table具有相同数量的列。如果可能,我希望只填充实际不同的列。
例如:
Control_table: c1 | c2 | c3 | c4 | c5 | c6 | c7 |
With a values: 11 | 22 | 33 | 44 | 55 | 66 | 77 |
New_table: c1 | c2 | c3 | c4 | c5 | c6 | c7 |
With values: 11 | 21 | 33 | 44 | 54 | 66 | 87 |
将它们进行比较并将结果插入到result_table中,那么result_table将会如下所示:
Result_table: c1 | c2 | c3 | c4 | c5 | c6 | c7 |
With values: 11 | 21 | -- | -- | 54 | -- | 87 |
只有实际差值的列才会被填充。
我对SQL一窍不通,尝试了几种方法并在这里提问,但从未得到好的答案。以下是我的先前答案链接,其中还包含SQL示例: 如何比较两个表并返回具有HIVE差异的行 注:可能无法实现,因为我没有使用NoSQL的经验。