重复字段的 BigQuery 记录
Posted
技术标签:
【中文标题】重复字段的 BigQuery 记录【英文标题】:BigQuery record of repeated fields 【发布时间】:2018-03-12 08:18:06 【问题描述】:我有一个 Bigquery 表,其中(从概念上讲)一个包含重复记录的字段。
但是,此字段存储为重复字段的记录。这是由 AppEngine DataStore 的导出(使用 Mache)或数据的表示(使用 Objectify 3)引起的;我不知道。
所以我有一个字段 (exercises
),看起来像这样:
exercises RECORD NULLABLE exercises
exercises.id INTEGER REPEATED id
exercises.weight FLOAT REPEATED weight
exercises.duration STRING REPEATED duration
而不是
exercises RECORD REPEATED exercises
exercises.id INTEGER NULLABLE id
exercises.weight FLOAT NULLABLE weight
exercises.duration STRING NULLABLE duration
后者可以使用FLATTEN
(旧版SQL)或UNNEST
(标准SQL)轻松查询。但是,对于我现在拥有的架构,我似乎被卡住了。
我想我必须以某种方式将exercises
字段从数组记录转换为记录数组。
exercises
的子字段始终具有相同的长度,所以这应该不是问题。
如何查询和选择该字段?
【问题讨论】:
【参考方案1】:我试过UNNEST WITH OFFSET
,正如here建议的那样:
SELECT
exerciseId, exofs,
exercises.weight[OFFSET(exofs)] AS exerciseWeight,
exercises.duration[OFFSET(exofs)] AS exerciseDuration
FROM Session, UNNEST(exercises.id) AS exerciseId WITH OFFSET exofs
这行得通!此功能仅在标准 SQL 中可用。旧版 SQL 中的 FLATTEN
不支持 WITH OFFSET
。
【讨论】:
以上是关于重复字段的 BigQuery 记录的主要内容,如果未能解决你的问题,请参考以下文章