2015-10-15 62 views
1

我还没有遇到过BigQuery中需要一分多钟的查询,除了这个出于某种原因之外。任何人都可以阐明为什么这个查询需要这么长时间吗?BigQuery查询花费> 15分钟

如果有任何Google工程师正在查看该作业,则作业ID为job_qHSgmV1CKbJnQeEZpqw1cb1g6f4。

SELECT 
    DATE(s.signdatetime) fts_date, 
    s.passportid, 
    s.lifetime_tracking_source, 
    SUM(if (MONTH(o.optindatetime)=MONTH(s.signdatetime),o.cpl,NULL)) rev_first_month 
FROM 
    tableau.signatures s 
LEFT JOIN EACH tableau.optins o 
ON 
    s.passportid=o.passportid 
WHERE 
    DATE(s.signdatetime) BETWEEN '2015-10-12' 
    AND '2015-10-13' 
    AND s.disposition="accepted" 
    AND s.FTS="Y" 
    AND o.finalstatus="collected" 
    AND DATE(o.optindatetime) BETWEEN '2015-10-12' 
    AND '2015-10-13' 
GROUP BY 
    1, 
    2, 
    3 

回答

3

表格有多大?我建议在进行连接之前过滤数据:

SELECT 
    DATE(s.signdatetime) fts_date, 
    s.passportid, 
    s.lifetime_tracking_source, 
    SUM(if (MONTH(o.optindatetime)=MONTH(s.signdatetime),o.cpl,NULL)) rev_first_month 
FROM (
    SELECT signdatetime, passportid, lifetime_tracking_source, 
    FROM tableau.signatures 
    WHERE DATE(signdatetime) BETWEEN '2015-10-12' AND '2015-10-13' 
    AND disposition="accepted" 
    AND FTS="Y" 
) s 
LEFT JOIN EACH (
    SELECT cpl, optindatetime, passportid 
    FROM tableau.optins 
    WHERE finalstatus="collected" 
    AND DATE(optindatetime) BETWEEN '2015-10-12' AND '2015-10-13' 
) o 
ON 
    s.passportid=o.passportid 
GROUP BY 
    1, 
    2, 
    3 

也尝试GROUP EACH而不是GROUP。

+2

这两个表都是大约30 GB。其中一个有244,549,729条记录,另一个有151,668,971条记录。感谢您的建议,我现在要试一试。 –

+2

修好了!谢谢! –

+1

酷!现在需要多长时间? –