在 BigQuery 中更新结构

Posted

技术标签:

【中文标题】在 BigQuery 中更新结构【英文标题】:Update Struct in BigQuery 【发布时间】:2021-03-04 16:19:58 【问题描述】:

我正在玩 bigquery。我想更新嵌套字段,但出现此错误:

ARRAY>> 类型的值无法分配给 click_url,它的类型为 STRUCT 在 [2:17]

表:

这是代码。我已经尝试过这个,因为我看到一些线程建议使用 UNNEST 函数,但 click_url 不是数组而是结构。

UPDATE `myTable` t
SET click_url =  
  ARRAY(
    SELECT AS STRUCT(c.string, c.text, c.provided) FROM UNNEST([t.click_url]) as c
  )
WHERE id = 10

【问题讨论】:

【参考方案1】:

仔细看报错信息,目标列类型是STRUCT without Array

 STRUCT<string STRING, text STRING, provided STRING>

正如您所暗示的那样,UNNEST 是不必要的。尝试直接更新 STRUCT。

UPDATE `myTable` t
SET click_url =  
    (SELECT AS STRUCT(
      t.click_url.string, 
      t.click_url.text, 
      your_hard_coded_provided_string)
    )

WHERE id = 10

【讨论】:

以上是关于在 BigQuery 中更新结构的主要内容,如果未能解决你的问题,请参考以下文章

如何修复此 BigQuery 表架构的更新查询?

使用节点 js 在 BigQuery 中更新数据

Bigquery:无效:非法模式更新

在 bigquery 中更新表

在bigquery中以编程方式更新/插入数据

在 bigquery 中以编程方式更新/插入数据