不平坦化结果时NEST上的内部错误

时间:2015-07-28 21:04:29

标签: google-bigquery

我正在尝试GROUP并将重复的字段返回到新表

SELECT url, NEST(label) AS labels
FROM [mytable]
GROUP EACH BY url

当我选中“展平结果”复选框时,它会起作用。当我取消选中该框时,我收到“错误:发生了内部错误,无法完成请求。”

本体的知识-图表:job_qD7a2Wrq9uCTqZrMbvwdy3v9Vtg

3 个答案:

答案 0 :(得分:4)

遗憾的是,{p> NEST与未展开的结果不兼容,如http://doctrine-orm.readthedocs.org/en/latest/reference/working-with-associations.html#filtering-collections所述。

可能适用于您的解决方法是使用SPLIT(GROUP_CONCAT(label))而不是NEST。如果您的标签字段是字符串类型,那应该有效。如果您的标签包含逗号,则可能需要为GROUP_CONCAT选择显式分隔符,但我认为此解决方案应该可行。

答案 1 :(得分:3)

最近找到了解决此问题的方法:

尝试

SELECT url, labels 
FROM (
  SELECT url, NEST(label) AS labels
  FROM [mytable]
  GROUP EACH BY url
) as a
CROSS JOIN (SELECT 1) as b  

注意,您必须在Allow Large Results开启且Flatten Results关闭

的情况下将结果写入表格

答案 2 :(得分:1)

来自NEST()的“Query Reference”:

BigQuery会自动展平查询结果,因此如果您在顶级查询中使用NEST函数,结果将不会包含重复的字段。使用产生中间结果的子选择时,请使用NEST函数,以供同一查询立即使用。

所以如果你想在这里得到一个非平坦的结果,你需要从你的其他选择中做一个select *我认为