BigQuery 使用 SELECT STRUCT 更新表无法解释的行为

问题描述 投票:0回答:1

我有一个bigquery表,其架构如图所示,其中field_b和field_c嵌套在field_a(数组)中enter image description here

然后我有一个函数运行与特定值匹配的查询并尝试更新 field_a

查询:

UPDATE `{BQ_METADATA_TABLE_A}`
            SET field_a = ARRAY(
                SELECT STRUCT(
                    a.abc AS abc,
                    a.def AS def,
                    a.ghi AS ghi,
                    a.hik AS hik,
                    "@var_b" AS field_b,
                    field_c AS field_c
                )
                FROM UNNEST(field_a) a
            )
            WHERE EXISTS (
                SELECT 1 
                FROM UNNEST(a) 
                WHERE ghi = "@some_value"
            )

查询成功运行,匹配值“@some_value”并使用@var_b更新,问题是它正在更新field_c而不是field_b,即使我明确指出field_b要更新并且field_c保持其自己的值。 field_b 和 field_c 最初都是空值。

这里有什么问题吗?作为解决方法,我将两个字段设置为“@var_b”,例如 “@var_b”AS field_b, “@var_b”AS field_c

以便两者都得到更新。

sql google-bigquery
1个回答
0
投票

至于C字段不更新,你可能想显式引用仍为UNNEST的

field\_c
中的
field\_a
,你可以尝试如下更新:

来自

"@var\_b" AS field\_b, 

field\_c AS field\_c

"@var\_b" AS field\_b, 

a.field\_c AS field\_c

© www.soinside.com 2019 - 2024. All rights reserved.