当我尝试运行查询时,我在BigQuery中收到“错误:意外。请再试一次”消息。它反复发生。
我有两个嵌套的子查询,中间查询使用几个计数(不同的x,),所以我想知道这是不是问题。如果我删除外部查询(但仍然有所有计数区分,它确实工作正常。
答案 0 :(得分:4)
这个错误源于COUNT(DISTINCT)实现中的怪癖,希望很快得到改进。现在,如果在子选择中使用多个COUNT(DISTINCT)和GROUP BY,则需要在外部SELECT中使用全部或不使用COUNT(DISTINCT)输出。
如果这很麻烦,用GROUP BY和SUM()替换COUNT(DISTINCT)可能更容易。例如,如果删除了任何外部字段,则此类查询与您自己的查询将失败:
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);
但是,通过distinct字段分组的等效查询将执行,无论如何:
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);
答案 1 :(得分:0)
我查看了内部错误,这似乎是我们应该做出的错误:
“Scoped Aggregation必须消耗每个独立重复分支中最重复的字段。必须消耗的未使用字段:f6_,f5_,f4_,f3_,f2_,f1 _”
如果这不足以调试查询,请告诉我,我可以添加有关错误的更多说明。