为什么隐含的UNNEST不能像文档所说的那样工作?

时间:2016-10-12 18:40:50

标签: google-bigquery

根据BigQuery docs

  

在隐式取消中,array_path必须解析为ARRAY,UNNEST关键字是可选的。

     

示例:

     

SELECT * FROM mytable.struct_typed_column.array_typed_field1;

然而,当我在通过StackDriver导出的真实的appengine日志上尝试这个时:

SELECT *
FROM log_stream.appengine_googleapis_com_request_log_20160928.protoPayload.line

我收到错误:

  

表名无效:log_stream.appengine_googleapis_com_request_log_20160928:protoPayload.line

为了澄清我想要完成的任务,如果有帮助,此查询将返回我正在尝试UNNEST的行:

SELECT protoPayload.line
FROM log_stream.appengine_googleapis_com_request_log_20160928
WHERE ARRAY_LENGTH(protoPayload.line) > 0
LIMIT 10

我错过了什么?

1 个答案:

答案 0 :(得分:1)

我针对我们的文档提交了一个(内部)错误,根据您的反馈澄清了这一部分,希望我们能尽快解决。在此期间,迁移指南的This section会更有帮助。

假设line重复这样做你想要的:

SELECT line
FROM log_stream.appengine_googleapis_com_request_log_20160928 AS t,
  t.protoPayload.line AS line
LIMIT 10;

或者,如果protoPayload重复,则会:

SELECT protoPayload.line
FROM log_stream.appengine_googleapis_com_request_log_20160928 AS t,
  t.protoPayload AS protoPayload
LIMIT 10;