如何从 BigQuery 中提取嵌套数据?

Posted

技术标签:

【中文标题】如何从 BigQuery 中提取嵌套数据?【英文标题】:How to extract nested data from BigQuery? 【发布时间】:2021-11-30 18:37:25 【问题描述】:

我在 Google Cloud Platform 中有一个使用 BigQuery 和嵌套数据的表,我想将这些数据提取到单行中。

Table

Row title_localized.text title_localized.language title_localized.truncated publication_date
1 Revêtements en polyuréthane bicomposants stables fr false 20210107
Beständige 2k-pur-beschichtungen de false
Resistant 2k-pur coatings en false
2 Revêtements en polyuréthane bicomposants stables fr false 20210507
Resistant 2k-pur coatings en false
Beständige 2k-pur-beschichtungen de false

我想把这张桌子变成非嵌套形式。

Row title_localized.text title_localized.language title_localized.truncated publication_date
1 Revêtements en polyuréthane bicomposants stables fr false 20210107
2 Beständige 2k-pur-beschichtungen de false 20210107
3 Resistant 2k-pur coatings en false 20210107
4 Revêtements en polyuréthane bicomposants stables fr false 20210507
5 Resistant 2k-pur coatings en false 20210507
6 Beständige 2k-pur-beschichtungen de false 20210507

试过了,还是不行:

SELECT
    title_localized,
    publication_date
FROM
    `patents-public-data.patents.publications`,
    UNNEST(title_localized) as test

有什么想法吗?

【问题讨论】:

【参考方案1】:

您的查询几乎是正确的,只是您在查询输出中也包含了数组字段。

此查询不包括未嵌套的数组字段:

SELECT
  test.text,
  test.language,
  test.truncated
  
FROM
  `patents-public-data.patents.publications`,
  UNNEST(title_localized) as test

【讨论】:

【参考方案2】:

考虑以下方法

select publication_number, local_title.*, publication_date
from `patents-public-data.patents.publications`,
unnest(title_localized) local_title            

输出如下

【讨论】:

你试过了吗?它对你有用吗? 是的,我试过了。有效!非常感谢!

以上是关于如何从 BigQuery 中提取嵌套数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何关联多个 BigQuery 数组字段?

如何将每个给定长度的行的 Bigquery 表提取到 Google Storage 中的 csv 文件?

使用 Apache Beam 以 CSV 格式将 BigQuery 结果写入 GCS

使用 BigQuery 取消嵌套 customDimensions

如何从 CIDR BigQuery 获取 From & To IP 地址

为啥在 BigQuery 中取消嵌套两个或多个变量时没有得到任何结果?