我无法查询 Google BigQuery 表中的重复字段

Ton*_*y B 1 google-bigquery

我在 Google BigQuery 中有一个表,其中有重复的记录,我已按照https://cloud.google.com/bigquery/docs/nested-repeated上的指南成功创建了该表,并且已填充带有一些测试数据的表使用

INSERT INTO `<project>.<dataset>.<table>` (<list of fields, ending with repeated record name>)
VALUES
    (
        "string1", false, 200.0, "string2", 0.2, 2.345, false, "2020-01-02 12:34:56",
        [
            ("repeated field str1", CAST(2.01 AS FLOAT64), CAST(201 as NUMERIC), false),
            ("repeated field str2", CAST(4.01 AS FLOAT64), CAST(702 as NUMERIC), true)
        ]
    );
Run Code Online (Sandbox Code Playgroud)

(等等)并且表已成功填充,我也可以使用以下命令查询数据

select * from <dataset>.<table>
Run Code Online (Sandbox Code Playgroud)

并返回所有重复和非重复的字段。只要查询中没有指定重复字段,我也可以成功查询表中的非重复字段。但是,例如,当我想在查询中包含特定的重复字段时(并且我正在遵循https://cloud.google.com/bigquery/docs/legacy-nested-repeated上的指南)

SELECT normalfield1, normalfield2, normalfield3, 
repeatedData.field1, repeatedData.field2, repeatedData.field3
FROM `profile_dataset.profile_betdatamultiples`;
Run Code Online (Sandbox Code Playgroud)

我收到错误

Cannot access field <field name> on a value with type ARRAY<STRUCT<fieldname1 STRING, fieldname2 FLOAT64, fieldname3 NUMERIC, ...>> at [8:14]"
Run Code Online (Sandbox Code Playgroud)

(令人烦恼的是,GCP 截断了错误消息,所以我看不到全部内容)

对于如何继续这里有什么建议吗?

谢谢!

Mik*_*ant 5

以下是 BigQuery 标准 SQL

#standardSQL
SELECT normalfield1, normalfield2, normalfield3, 
  data.field1, data.field2, data.field3
FROM `project.profile_dataset.profile_betdatamultiples`,
UNNEST(repeatedData) data   
Run Code Online (Sandbox Code Playgroud)

如果适用于您问题中的样本数据

在此输入图像描述

输出是

在此输入图像描述