Google bigquery 超过BigQuery截止日期,运行时异常

Google bigquery 超过BigQuery截止日期,运行时异常,google-bigquery,Google Bigquery,当我运行一个查询时,我确信结果集没有那么大。我一直遇到这个错误,有人能解释一下是什么导致了这个错误,以及我如何更改查询以避免这个错误(除了选择更少的数据,因为我无法为此查询更改数据) 准备子查询时出错:com.google.storage.megastore.exception.deadlineExcependedRuntimeException:已超过截止日期:截止日期 我的查询基本上是选择一个月的数据,然后应用case子句和groupby。没有连接 这是我的查询的清理版本。大多数列只是字符串

当我运行一个查询时,我确信结果集没有那么大。我一直遇到这个错误,有人能解释一下是什么导致了这个错误,以及我如何更改查询以避免这个错误(除了选择更少的数据,因为我无法为此查询更改数据)

准备子查询时出错:com.google.storage.megastore.exception.deadlineExcependedRuntimeException:已超过截止日期:截止日期

我的查询基本上是选择一个月的数据,然后应用case子句和groupby。没有连接

这是我的查询的清理版本。大多数列只是字符串

select
counted,
CONCAT(user_id,"_",string(index)) as user_id,
name,
-- We want to give each event an alias here, so the first event in the funnel would be called step1
case when name="16" and param7 = "b" then 'step1'
when name="71" then 'step2'
when name="73" then 'step3'
when name="10" and param7= "b" and param1="a" then 'step4'
when name="18" then 'step5'
when name="31" then 'step6'
else 'na'
end as step
from (TABLE_DATE_RANGE([tablename_],TIMESTAMP('2016-04-01'),TIMESTAMP('2016-05-01')))
-- selects all of the 6 steps in the funnel.
WHERE (name = "16" AND param7 = "b") OR (name = "71") OR (name = "73") OR (name="10" AND param7 = "b" AND  param1 = "a") OR (name = "18") OR (name = "31")

根据你的评论,你应该试试

SELECT * FROM (
  SELECT
    counted,
    CONCAT(user_id,"_",STRING(index)) AS user_id,
    name,
    -- We want to give each event an alias here, so the first event in the funnel would be called step1
    CASE 
      WHEN name="16" AND param7 = "b" THEN 'step1'
      WHEN name="71" THEN 'step2'
      WHEN name="73" THEN 'step3'
      WHEN name="10" AND param7= "b" AND param1="a" THEN 'step4'
      WHEN name="18" THEN 'step5'
      WHEN name="31" THEN 'step6'
      ELSE 'na'
    END AS step
  FROM (TABLE_DATE_RANGE([tablename_],TIMESTAMP('2016-04-01'),TIMESTAMP('2016-05-01')))
)
-- leave only those 6 steps in the funnel.
WHERE step != 'na'

同事提出的另一种可能性是我正在使用这个函数 TABLE DATE RANGE会弄乱查询的某些内容,导致查询失败,他建议键入每个表,因此在本例中为30个表,它也消除了错误,我注意到查询速度也更快。不知道为什么,而且有一个巨大的查询是一件痛苦的事情,因为在FROM子句中要查询的每个日期都必须有一行

FROM (TABLE_DATE_RANGE([tablename_],TIMESTAMP('2016-04-01'),TIMESTAMP('2016-05-01')))

你能把你的疑问贴出来吗?它是否在ga_会话默认表上运行?这是发生在你所有的查询中,还是只发生在这个特定的查询中?你的查询成功的时间是一天还是一个月?一天*有时有效。似乎是case子句导致了这种情况。我删除了它,添加了一堆原始列来显示,并将时间范围增加到两个月,从那以后我再也没有遇到过错误。这真的很奇怪,因为case子句只是一个短字符串求值。-也许它正在消亡,因为它正在选择数据并在同一阶段使用case子句对其进行操作/测试?因此,如果我先选择,然后环绕它,然后执行case子句,会更好吗?这只是一个理论。是的,我就是这么做的,而且一直都在工作。这真是个奇怪的虫子。有人建议这可能是因为Tabel-DaDay-Lead没有正确工作,我需要列举所有的日期,但我不认为这是原因。至少,它是有效的,我认为你可以考虑接受答案并投票表决。有关更多信息,请参阅中的at和Upvote部分