比较 BigQuery 中的表



我将如何比较两个表(Table1Table2)并找到Table2中的所有新条目或更改。

使用SQL Server我可以使用

Select * from Table1
Except
Select * from Table2

这是我想要的样本

表1

 A   |  1
 B   |  2
 C   |  3

表2

 A   |  1
 B   |  2
 C   |  2
 D   |  4

因此,如果我比较两个表格,我希望我的结果显示以下内容

C   |   2
D   |   4

我尝试了一些陈述,但没有运气。

现在我有了实际的示例数据集,我可以编写一个查询,在一个表中查找不在另一个表上的每个域:

https://bigquery.cloud.google.com/table/inbound-acolyte-377:demo.1024 有 24,729,816 行。 https://bigquery.cloud.google.com/table/inbound-acolyte-377:demo.1025 有 24,732,640 行。

让我们看看 1025 中不在 1024 中的所有内容:

SELECT a.domain
FROM [inbound-acolyte-377:demo.1025] a
LEFT OUTER JOIN EACH [inbound-acolyte-377:demo.1024] b
ON a.domain = b.domain
WHERE b.domain IS NULL

结果:39,629 行。(8.1 秒已过,已处理 2.04 GB)

要获取差异(假设 tkey 是您的唯一行标识符):

SELECT a.tkey, a.name, b.name
FROM [your.tableold] a
JOIN EACH [your.tablenew] b
ON a.tkey = b.tkey
WHERE a.name != b.name
LIMIT 100

对于新行,一种方法是您提出的方法:

SELECT col1, col2
FROM table2
WHERE col1 NOT IN
  (SELECT col1 FROM Table1)

(当 Table1 变得太大时,您必须切换到 JOIN EACH)

相关内容

  • 没有找到相关文章

最新更新