在 BigQuery 查询中,当你尝试读取一个类型为 STRUCT 的重复字段作为可选的 STRUCT 字段时,会遇到这个问题。下面是解决这个问题的方法:
1.使用 UNNEST 操作符展开或展平重复字段。 2.使用以下方式将展开的数据重新作为 STRUCT 聚合:
#standardSQL SELECT id, STRUCT( MAX(IF(key = 'a', value, NULL)) AS a, MAX(IF(key = 'b', value, NULL)) AS b, MAX(IF(key = 'c', value, NULL)) AS c ) AS my_struct FROM ( SELECT id, key, value FROM my_table JOIN UNNEST(my_repeated_field) AS field ) GROUP BY id;
在上面的代码示例中,“my_table”是你在查询中使用的表的名称,“my_repeated_field”是重复字段的名称,“my_struct”是你想要聚合的 STRUCT 字段的名称。
通过将展开后的数据重新组合为 STRUCT 字段,你可以解决 BigQuery 无法读取重复字段作为可选的 STRUCT 字段的问题。