我的查询看起来像这样:
SELECT
id,
unique(a) AS un_a,
unique(b) AS un_b,
FROM x.y
GROUP BY id
我想要b(un_b)的(un_a)和唯一值的唯一值。
这个错误如下:
Cannot output multiple independently repeated fields at the same time. Found un_a and un_b
仅使用一个UNIQUE语句运行此查询可以按预期工作。这里发生了什么?我该如何解决?
答案 0 :(得分:1)
实际上它有效!
结果如下所示:
Row id un_a un_b
1 1 1 1
2 2
3 3
5
2 2 5 5
6 6
请注意:BigQuery会自动展平查询结果,因此如果您将查询用作顶级查询,则结果为won't contain repeated fields
。
Use it as subselect
生成中间结果以供同一查询立即使用,save this to table
使用相应选项(允许大结果和未平仓结果)或您需要使用它。
你得到的错误 - 是因为你试图输出两个独立的重复字段而BigQuery没有处理这个。有关更多信息,请参阅Flatten Operator
如果由于某种原因,这不是你想要处理的 - 你可以 使用以下“解决方法”:
下面是潜在的解决方法,假设您需要为un_a中的所有a的每个id列表和un_b中的所有b的列表提供。
SELECT id,
GROUP_CONCAT(STRING(UNIQUE(a))) AS un_a,
GROUP_CONCAT(STRING(UNIQUE(b))) AS un_b,
FROM x.y
GROUP BY id
结果应该是:
Row id un_a un_b
1 1 1,2,3 1,2,3,5
2 2 5,6 5,6