BigQuery SQL: select 结构为单个记录,而不是记录数组

BigQuery SQL: select struct as single record, not array of records

我想创建一个 RECORD 作为 BigQuery 标准 SQL 中 select 的结果。

如果我 运行 这个 SQL 片段,

WITH 
mock_data AS (
    SELECT 'foo1' as foo, 'bar1' as bar, 'bla1' as bla UNION ALL
    SELECT 'foo2' as foo, 'bar2' as bar, 'bla2' as bla
)
SELECT 
    *,
    STRUCT(
        m.foo as foo,
        m.bar as bar
    ) as foobar
FROM mock_data m

foobar 的输出是一组记录,而不是单个记录。

如何让 foobar 列成为单个记录而不是记录数组? 非常感谢!

UNNEST operator 将数组展平成行,即将数组分成几行。 STRUCT 个元素被分解为 multi-column 个记录,我认为这是您所需要的。尝试这样的事情:

SELECT
   *,
   UNNEST(
      STRUCT(
        m.foo as foo,
        m.bar as bar
      ) as foobar
   )

它是单个记录 - 不是数组

您可以在 JSON 选项卡中清楚地看到这一点

您也可以转到“职位信息”选项卡

并单击“临时 Table”以查看输出架构

在我使用的 BigQuery IDE 中 - 它更加明显