2015-10-15 36 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

酷!現在需要多長時間? –