在 BigQuery 中展平嵌套和重复的结构(标准 SQL)
Posted
技术标签:
【中文标题】在 BigQuery 中展平嵌套和重复的结构(标准 SQL)【英文标题】:Flattening a nested and repeated structure in BigQuery (standard SQL) 【发布时间】:2020-12-08 03:43:54 【问题描述】:有很多关于在 BigQuery 中取消嵌套重复字段的帖子 - 但是,对于这个环境,我几乎尝试了所有我发现的代码变体来展平数据文件。但是,如果不在id
字段中创建空白,我似乎无法生成一个。看来我需要展开嵌套变量?
我正在使用属于公共数据集的 COVID 维度数据集。这是一些产生我的问题的最小代码:
SELECT
id,
authors
FROM
`covid-19-dimensions-ai.data.publications`
CROSS JOIN
UNNEST(authors)
LIMIT 1000
而且,这是运行此查询后的 JSON 结构。一切都被我想要的结构展平了,但我不知道如何填写/避免空白 id 变量。
"id": "pub.1130234899",
"authors":
"first_name": "Eric M",
"last_name": "Yoshida",
"initials": null,
"researcher_id": "ur.01071531321.03",
"grid_ids": [
"grid.17091.3e"
],
"corresponding": false,
"raw_affiliations": [
"Division of Gastroenterology, University of British Columbia, Vancouver, British Columbia, Canada"
],
"affiliations_address": [
"grid_id": "grid.17091.3e",
"city_id": "6173331",
"state_code": "CA-BC",
"country_code": "CA",
"raw_affiliation": "Division of Gastroenterology, University of British Columbia, Vancouver, British Columbia, Canada"
]
【问题讨论】:
【参考方案1】:查看对原始查询的小修正
SELECT
id,
author
FROM
`covid-19-dimensions-ai.data.publications`
CROSS JOIN
UNNEST(authors) author
LIMIT 1000
【讨论】:
我复制并粘贴了您的更正,但我仍然会在一组记录中发现偶尔丢失的 id 值。例如,作者将在一行中拥有完整的信息。但是,如果作者有 3 个多个从属关系,则这些从属关系会正确扩展到行,但仅列出第一个从属关系的 id。 什么ID?需要它来解决问题 这些是出版记录。id
代表一个独特的出版物。 author
是字段和数组的集合。当我取消嵌套时,id
值不会填充到所有行中。
我认为您应该更新您的问题以提供更多详细信息!
也许你认为有问题的屏幕截图,以及你想要的样子以上是关于在 BigQuery 中展平嵌套和重复的结构(标准 SQL)的主要内容,如果未能解决你的问题,请参考以下文章