Google bigquery BigQuery查询获取>;15分钟

Google bigquery BigQuery查询获取>;15分钟,google-bigquery,Google Bigquery,在BigQuery中,我没有遇到一个需要一分钟左右时间的查询,除了出于某种原因的这个查询。有人能解释一下为什么这个问题需要这么长时间吗 如果任何谷歌工程师正在查看此内容,作业ID为job_qHSgmV1CKbJnQeEZpqw1cb1g6f4 SELECT DATE(s.signdatetime) fts_date, s.passportid, s.lifetime_tracking_source, SUM(if (MONTH(o.optindatetime)=MONTH(s.s

在BigQuery中,我没有遇到一个需要一分钟左右时间的查询,除了出于某种原因的这个查询。有人能解释一下为什么这个问题需要这么长时间吗

如果任何谷歌工程师正在查看此内容,作业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 

这些桌子有多大?我建议在执行加入之前过滤数据:

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 

还可以尝试将每个表分组,而不是仅分组。

这两个表的容量都约为30 GB。一个有244549729条记录,另一个有151668971条记录。谢谢你的建议,我现在就去试试。这就解决了问题!非常感谢。现在查询需要8.3秒!我将把这个作为bigquery提示发布:)@FelipeHoffa——你在哪里发布这些提示?