Google bigquery BigQuery将新列添加到子查询中的嵌套结构中
下表包含嵌套的Google bigquery BigQuery将新列添加到子查询中的嵌套结构中,google-bigquery,Google Bigquery,下表包含嵌套的STRUCTs,在子查询中,我尝试在STRUCT级别添加其他列。到目前为止,我已经创建了一个可复制的示例: WITH wide_stats AS ( ( SELECT 'joe' name, 'bills' team, struct(struct(7 as fga, 5 as fgm) as o, struct(8 as fga, 3 as fgm) as d) as t1, struct(struct(3 as fga, 4 as
STRUCT
s,在子查询中,我尝试在STRUCT级别添加其他列。到目前为止,我已经创建了一个可复制的示例:
WITH wide_stats AS (
(
SELECT
'joe' name, 'bills' team,
struct(struct(7 as fga, 5 as fgm) as o, struct(8 as fga, 3 as fgm) as d) as t1,
struct(struct(3 as fga, 4 as fgm) as o, struct(9 as fga, 2 as fgm) as d) as t2
) UNION ALL (
SELECT 'nick' name, 'jets' team,
struct(struct(12 as fga, 7 as fgm) as o, struct(13 as fga, 7 as fgm) as d) as t1,
struct(struct(15 as fga, 7 as fgm) as o, struct(22 as fga, 7 as fgm) as d) as t2
)
)
SELECT
*,
-- safe_divide(wide_stats.t1.o.fgm, wide_stats.t1.o.fga) as fg_pct,
safe_divide(wide_stats.t1.o.fgm, wide_stats.t1.o.fga) as wide_stats.t1.o.fg_pct
FROM wide_stats
当前代码在[18:70]第18行(使用安全除法)抛出一个错误语法错误:意外“.”。如果我在第17行/第18行中切换,代码可以工作,但是fg_pct不在t1.o结构中,我希望它在那里
有没有办法像这样将列添加到子查询中的嵌套结构中 下面是BigQuery标准SQL
#standardSQL
WITH wide_stats AS (
SELECT 'joe' name, 'bills' team,
STRUCT(STRUCT(7 AS fga, 5 AS fgm) AS o, STRUCT(8 AS fga, 3 AS fgm) AS d) AS t1,
STRUCT(STRUCT(3 AS fga, 4 AS fgm) AS o, STRUCT(9 AS fga, 2 AS fgm) AS d) AS t2 UNION ALL
SELECT 'nick' name, 'jets' team,
STRUCT(STRUCT(12 AS fga, 7 AS fgm) AS o, STRUCT(13 AS fga, 7 AS fgm) AS d) AS t1,
STRUCT(STRUCT(15 AS fga, 7 AS fgm) AS o, STRUCT(22 AS fga, 7 AS fgm) AS d) AS t2
)
SELECT * REPLACE (
(SELECT AS STRUCT t1.* REPLACE (
(SELECT AS STRUCT t1.o.*, SAFE_DIVIDE(wide_stats.t1.o.fgm, wide_stats.t1.o.fga) AS fg_pct )
AS o))
AS t1)
FROM wide_stats
结果
Row name team t1.o.fga t1.o.fgm t1.o.fg_pct t1.d.fga t1.d.fgm t2.o.fga t2.o.fgm t2.d.fga t2.d.fgm
1 joe bills 7 5 0.7142857142857143 8 3 3 4 9 2
2 nick jets 12 7 0.5833333333333334 13 7 15 7 22 7
下面是BigQuery标准SQL
#standardSQL
WITH wide_stats AS (
SELECT 'joe' name, 'bills' team,
STRUCT(STRUCT(7 AS fga, 5 AS fgm) AS o, STRUCT(8 AS fga, 3 AS fgm) AS d) AS t1,
STRUCT(STRUCT(3 AS fga, 4 AS fgm) AS o, STRUCT(9 AS fga, 2 AS fgm) AS d) AS t2 UNION ALL
SELECT 'nick' name, 'jets' team,
STRUCT(STRUCT(12 AS fga, 7 AS fgm) AS o, STRUCT(13 AS fga, 7 AS fgm) AS d) AS t1,
STRUCT(STRUCT(15 AS fga, 7 AS fgm) AS o, STRUCT(22 AS fga, 7 AS fgm) AS d) AS t2
)
SELECT * REPLACE (
(SELECT AS STRUCT t1.* REPLACE (
(SELECT AS STRUCT t1.o.*, SAFE_DIVIDE(wide_stats.t1.o.fgm, wide_stats.t1.o.fga) AS fg_pct )
AS o))
AS t1)
FROM wide_stats
结果
Row name team t1.o.fga t1.o.fgm t1.o.fg_pct t1.d.fga t1.d.fgm t2.o.fga t2.o.fgm t2.d.fga t2.d.fgm
1 joe bills 7 5 0.7142857142857143 8 3 3 4 9 2
2 nick jets 12 7 0.5833333333333334 13 7 15 7 22 7
有帮助的回答,但当我尝试使用percent\u rank()时,我收到此错误SELECT without FROM子句无法在[92:6]使用分析函数
使用SELECT AS STRUCT
使用此方法在您的问题中看不到任何分析函数-您可能希望发布包含所有详细信息的新问题,以便我们可以提供帮助:o)有用的答案,但我收到此错误SELECT without FROM子句无法在[92:6]使用分析函数
使用选择为结构
使用此方法在您的问题中看不到任何分析函数-您可能希望发布包含所有详细信息的新问题,以便我们提供帮助:o)