bigQuery - 加入

时间:2015-12-01 08:26:53

标签: join google-bigquery

我试图在ID上加入两个数据库。关于报价的第一个数据库没有网站上的数据,所以我想从日志数据库中加入它。但是,在日志数据库中,ID不是唯一的,而是ID的第一个按时间顺序排列的外观 - 这是正确的网站。 当我运行下面的查询时,我得到:

  

查询执行期间超出资源。

因此,我不知道问题是代码还是其他问题。

由于

SELECT ID, user,busWeek, count(*) as num FROM [datastore.quotes] 

Join (
select objectID, first(website) from (
select objectID, website, date from [datastore.allLogs] 
order by date) group by objectID)
as Logs

on ID = objectID

group by ID,user,busWeek

2 个答案:

答案 0 :(得分:0)

你可以尝试:

SELECT ID, user,busWeek, count(*) as num FROM [datastore.quotes] 

Join EACH (
select objectID, first(website) from (
select objectID, website, date from [datastore.allLogs] 
order by date) group EACH by objectID)
as Logs

on ID = objectID

group by ID,user,busWeek

请注意'EACH' - 将来不再需要该关键字,但它今天仍然有用。

答案 1 :(得分:0)

我认为问题出在ORDER BY上。这会将所有计算带到一个节点,导致超出资源"信息。我知道你需要它为每个对象带来第一个(按日期)网站 尝试重写此分区选择(内部联接)。 例如,使用具有OVER(PARTITION BY ... ORDER BY)的窗口函数 在这种情况下,我认为,你有机会并行实现这个目标

见以下参考文献
Window Functions