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 中 - 它更加明显
我想创建一个 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 中 - 它更加明显