我有一个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
的子字段总是具有相同的长度,因此这不应该是一个问题。
如何查询和选择此字段?
答案 0 :(得分:1)
我按照建议here尝试UNNEST WITH OFFSET
:
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
。