【问题标题】:"Error: Unexpected. Please try again" in BigQueryBigQuery 中的“错误:意外。请重试”
【发布时间】:2014-07-27 04:26:18
【问题描述】:

当我尝试运行查询时,我在 BigQuery 中收到“错误:意外。请重试”消息。反复发生。

我有两个嵌套子查询,中间查询使用了几个 count(distinct x, ),所以我想知道这是否是问题所在。如果我删除外部查询(但仍然有所有不同的计数,它确实可以正常工作。

【问题讨论】:

  • 如果谷歌的人看到这个,我的工作 ID 是 realself-main:job_4CBlFODR8i4D7UAOzF1F1OPqP8I。

标签: google-bigquery


【解决方案1】:

此错误源于 COUNT(DISTINCT) 实现中的一个怪癖,有望很快得到改进。目前,如果您在子选择中使用多个 COUNT(DISTINCT) 和 GROUP BY,则需要在外部 SELECT 中使用全部或不使用 COUNT(DISTINCT) 输出。

如果这很麻烦,将 COUNT(DISTINCT) 替换为 GROUP BY 和 SUM() 可能会更容易。例如,如果删除任何外部字段,类似于您自己的查询将失败:

SELECT Cnt_a, Cnt_b
FROM (SELECT COUNT(DISTINCT IF(a > 0, c, NULL)) AS Cnt_a,
             COUNT(DISTINCT IF(b > 0, c, NULL)) AS Cnt_b
      FROM (SELECT 0 AS a, 1 AS b, 2 AS c, 3 as d)
      GROUP BY d);

但按不同字段分组的等效查询将无论如何执行:

SELECT SUM(NonZero_a) AS Cnt_a, SUM(NonZero_b) AS Cnt_b
FROM (SELECT SUM(a) > 0 AS NonZero_a,
             SUM(b) > 0 AS NonZero_b
      FROM (SELECT 0 AS a, 1 AS b, 2 AS c, 3 as d)
      GROUP BY c, d);

【讨论】:

    【解决方案2】:

    我查看了内部错误,似乎应该是外部错误:

    “作用域聚合必须消耗每个独立重复分支中重复次数最多的字段。必须消耗的未使用字段:f6_、f5_、f4_、f3_、f2_、f1_”

    如果这还不足以调试查询,请告诉我,我可以添加有关错误的更多说明。

    【讨论】:

    • 感谢您的回复。如果您能解决错误,那就太好了。如果我的外部查询是 select *,它可以正常工作,但如果我不包含某些字段,则会出现错误。我不明白为什么必须包含某些字段,因为内部查询应该只返回平面数据
    • 任何详细说明将不胜感激。我买了你的新书,但看不到任何相关内容。提前致谢!
    猜你喜欢
    • 2014-07-24
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-30
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多