在 BigQuery 中查询双嵌套数组 [重复]

Posted

技术标签:

【中文标题】在 BigQuery 中查询双嵌套数组 [重复]【英文标题】:Query double nested array in BigQuery [duplicate] 【发布时间】:2021-02-24 20:34:30 【问题描述】:

我正在尝试查询包含多个嵌套记录数组的 BigQuery 表。

表格如下所示:

enter image description here

所以我确实有一个个人资料 ID,对于一个 ID,我有多个 Collaborator_Type 和 Permission。 对于每一个 Collaborator_Type,我都有一个 Params.name 和 Params.value 数组。

如何构建一个生成类似于以下最终输出的查询:

profileId ---- Collaborator_Type ----Collaborator.Permission ----primary_event ---- billable... 后面是 Params.name 中的每个字段作为列的标题和 Params 中的相应字段.value 作为列中的结果)

任何帮助将不胜感激! 谢谢!

【问题讨论】:

如果你能提供帮助,避免代码/结构的图像有助于可访问性。尝试将您的数据表创建为格式化的 ASCII 表。此外,您应该为您的图片添加说明。 在 SO 上已经回答了很多类似(如果不相同)的问题。例如搜索pivot 【参考方案1】:

您必须使用子查询手动提取它们:

SELECT
  profileId,
  Collaborator_Type,
  Collaborator_Permission,
  (SELECT value FROM t.Params WHERE name = 'primary_event') AS primary_event,
  (SELECT value FROM t.Params WHERE name = 'billable') AS billable
FROM mytable t

【讨论】:

我觉得,这行不通。最简单的解决方法是使用FROM t.Params 而不是FROM Params 并显然将别名t 添加到FROM mytable,所以它将是FROM mytable t

以上是关于在 BigQuery 中查询双嵌套数组 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 BigQuery 中使用双数组取消嵌套 STRUCT

在 BigQuery 中嵌套查询结果 [重复]

如何在 BigQuery 中取消嵌套重复记录,一个数组给出列名,另一个给出列值?

从 BigQuery 中的重复嵌套列中获取参数数组

如何查询非规范化 BigQuery 表以输出嵌套和重复的字段

bigquery 嵌套和重复字段查询