比较相似的配置单元表

vom3gejh  于 2021-05-30  发布在  Hadoop
关注(0)|答案(2)|浏览(292)

我有两个Hive表(t1和t2),我想比较。第二个表中还有5列不在第一个表中。除了五个不相交的字段之外,这两个表应该是相同的。我正在尝试写一个查询来检查这个。到目前为止,我掌握的情况如下:

SELECT * FROM t1 
UNION ALL
select * from t2
GROUP BY some_value
HAVING count(*) == 2

如果表相同,则应返回0条记录。但是,由于第二个表包含5个额外字段,我需要更改第二个select语句来反映这一点。几乎有60个列名,所以我真的不想这样写:

SELECT * FROM t1 
UNION ALL
select field1, field2, field3,...,fieldn from t2
GROUP BY some_value
HAVING count(*) == 2

我环顾四周,我知道那里没有 select * EXCEPT 语法,但是有没有一种方法可以在不必明确地命名我想要包含在最终结果中的每一列的情况下执行此查询?

rqenqsqc

rqenqsqc1#

您可以看看这个python程序,它处理配置单元表的这种比较(比较所有行和列),并在网页中显示可能出现的差异:https://github.com/bolcom/hive_compared_bq
要跳过这5个额外字段,可以使用“--ignorecolumns”选项。

doinxwow

doinxwow2#

你应该用 UNION DISTINCT 对于你所应用的逻辑。
但是,每个 select_statement 必须相同,否则会引发架构错误。

相关问题