在查询中使用两个UNIQUE语句的大查询

时间:2016-02-01 10:24:30

标签: google-bigquery

我的查询看起来像这样:

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语句运行此查询可以按预期工作。这里发生了什么?我该如何解决?

1 个答案:

答案 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