首页 > 解决方案 > bigquery 中的 UNNEST 不起作用,出现“无法访问 ARRAY 类型值的字段”

问题描述

新手到 bigquery,但我需要从 crashlytics 中查询一个简单的项目,该项目转储到 bigquery 中。

在一个完美的世界中......这个查询对我来说很有意义,但exceptions它是一种更复杂的类型,需要取消嵌套?

SELECT exceptions.exception_message
FROM `rollertoaster-235.firebase_crashlytics.com_rollertoaster_app_ANDROID`
WHERE STARTS_WITH(issue_title, 'MyCrashFile.java') LIMIT 1000

异常在表模式中定义如下:

在此处输入图像描述

我想要做的就是得到一个异常消息的结果列表,但它不喜欢 UNNEST。阅读一些文档和其他 SO 问题......看起来我需要“UNNEST”。但我得到一个类似的错误。

SELECT asdf
FROM `rollertoaster-235.firebase_crashlytics.com_rollertoaster_app_ANDROID`,
UNNEST(exceptions.exception_message) AS asdf
WHERE STARTS_WITH(issue_title, 'MyCrashFile.java') LIMIT 1000

错误:

Cannot access field exception_message on a value with type ARRAY<STRUCT<type STRING, exception_message STRING, nested BOOL, ...>> at

标签: google-bigquery

解决方案


看起来您正在尝试取消嵌套结构数组中的字段,而不是数组本身。尝试这样的事情,它取消嵌套数组并投影未嵌套记录/结构的字段:

SELECT ex.exception_message
FROM `your.table`,
UNNEST(exceptions) as ex
WHERE STARTS_WITH(issue_title, 'MyCrashFile.java') LIMIT 1000

推荐阅读