如何从 BigQuery 中的 Array(Struct) 类型数据结构中获取每个键名的值
Posted
技术标签:
【中文标题】如何从 BigQuery 中的 Array(Struct) 类型数据结构中获取每个键名的值【英文标题】:How to get value for every keyname from Array(Struct) type data structre in BigQuery 【发布时间】:2019-07-22 13:08:43 【问题描述】:我们将 Firebase 事件数据存储在 BigQuery 中。有一列 event_params 是 Array(STRUCT)。我们希望将这些结构键值作为 flat(column) 存储在 mysql 表中。我们正在为每个键做 UNNEST,是否有可能以更智能的方式进行。
SELECT event_name, user_prop.value.string_value AS org_id
content_type.value.string_value as page_name , contentId.value.string_value as content_id,
platform, app_info.version AS app_version,
event_date
FROM `table.name`,
UNNEST(user_properties) AS user_prop,
UNNEST(event_params) AS content_type,
UNNEST(event_params) AS contentId
WHERE
user_prop.key = "OrgId"
AND
content_type.key = 'contentType'
AND
contentId.key = 'Id'
【问题讨论】:
不完全确定你在问什么。您有一个WHERE
子句来获取特定的密钥。删除它,您将获得表中的所有项目。
【参考方案1】:
是的,您可以使用数组子查询来做到这一点 例如
SELECT
platform, app_info.version AS app_version,
event_date,
(SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'contentType') AS page_name
FROM `table.name`
【讨论】:
以上是关于如何从 BigQuery 中的 Array(Struct) 类型数据结构中获取每个键名的值的主要内容,如果未能解决你的问题,请参考以下文章
从 json 文件 bigquery 中提取 Json Array 元素