在BigQuery中查询多个重复的字段

时间:2013-07-11 15:54:22

标签: google-bigquery

我的架构包含多个未嵌套的重复字段。

我正在尝试查询交叉产品,但是我收到错误: “无法查询重复字段的交叉积......”

如果我只查询2个重复的字段,我可以展平其中一个字段。然而,我有兴趣查询更多2个重复的字段,我无法理解FLATTEN语法如何支持它。

例如,表结构是: a1,记录(重复):a1.b1,整数 a2,记录(重复):a2.b1,整数 a3,记录(重复):a3.b1,整数

我想查询: 从标签

中选择(*)

3 个答案:

答案 0 :(得分:14)

您可以在FLATTEN中使用嵌套的子选择。它需要在select语句周围添加额外的paren。 (不幸的是,语法有点难看)。 e.g。

SELECT
  ...
FROM (
    FLATTEN((
      SELECT
        ...
      FROM (
          FLATTEN((
            SELECT
              ...
            FROM
              table),
            f1)
          )
        ),
      f2)
    )
  )

答案 1 :(得分:7)

如果您不需要在内部选择内部执行任何特定操作,则可以使用

  

(FLATTEN(FLATTEN(表,a1),a2))

答案 2 :(得分:0)

现在BigQuery已移至标准SQL,无法使用FLATTEN。但是Google has documented how to migrate。尽管有其他几种方法可以使用此解决方案,但我仍然可以使用它:

SELECT
  flattened_field_1,
  flattened_field_2

FROM my_dataset.my_table
LEFT JOIN UNNEST(repeated_field_1) AS flattened_field_1
LEFT JOIN UNNEST(repeated_field_2) AS flattened_field_2
# ...etc