2014-09-30 120 views
1

我试图在BigQuery中连接两个表。Bigquery - 加入给出错误的结果

select p.UserId UserId , SessionMonth, LifeCycle, f.NetRev NetRev 
from TABLEA p 
left join each TABLEB f 
on p.UserId = f.UserId 

由于某种原因,f.NetRev在连接中翻了一番。

以下是工作ID:719125837414:job_Kotq0SggPq8xtgUGOu5p6yR9Ag0。

如果有人能够帮忙,那将会很棒。谢谢!

+0

您提供的工作ID来自非常复杂的查询。你能用更简单的查询重现这一点吗?这将使后续更容易。另外,请确保您没有看到左侧的连接键与连接右侧的两个键相匹配,这可能会导致双倍的输出。 – 2014-09-30 18:53:58

回答

1

请确保您加入的表没有任何重复键。也就是说,如果你要加入它有两行的表:

{A, 1} 
{B, 2} 

而且具有

{B, foo} 
{B, bar} 

和你做左连接在第一与第二的第一另一个表两者的列柱,你会比你开始时获得更多的行:

{A, 1, null} 
{B, 2, foo} 
{B, 2, bar} 

(最坏的情况下可能产生的N×M行,其中N是行的第一个表的数量,M是多少在右表中的行)。

如果您确定连接的行为不正确,那么它可能是一个大问题。如果是这样,请添加评论,我们会进一步查看(例如,在日志中查找您的工作ID,看起来您也使用分析功能(LAG()LEAD())。您可以尝试没有这些问题并确保问题仍然复制?)

+0

嘿,我很确定钥匙不会重复。我有另一个查询的外观。看起来如果有不同项目中的表格出现错误的结果,并且没有指定表格的所有项目标识符。以下是两个工作ID:** 719125837414:job_CHo_1hOFMBbxRl2fBLQ9URhjKUg **(无项目ID),** 719125837414:job_mJXH-fpoEEqubrZsRzhOcOUxaaE **(包含所有项目ID)。但是,现在我猜想,将项目ID添加到所有表中应该可以解决问题。谢谢! – Jen 2014-10-01 09:24:59