比较类似的配置单元表



我想比较两个蜂巢表(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语法,但是有没有办法执行此查询,而不必明确命名我想包含在最终结果中的每列?

您应该

对要应用的逻辑使用UNION DISTINCT

但是,每个select_statement返回的列的数量和名称必须相同,否则将引发架构错误。

你可以

看看这个Python程序,它处理Hive表的这种比较(比较所有行和所有列),并在网页中向你显示可能出现的差异:https://github.com/bolcom/hive_compared_bq

要跳过 5 个额外的字段,您可以使用"--忽略列"选项。

相关内容

  • 没有找到相关文章