重复字段的BigQuery记录

时间:2018-03-12 08:18:07

标签: nested google-bigquery google-cloud-datastore

我有一个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 个答案:

答案 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