google-bigquery - 在保持顺序的同时用新元素更新结构数组
问题描述
我有一列,比如说arr
,这是一个结构数组,所以是这样的:
[STRUCT('foo' as name, 1 as t), STRUCT('bar' as name, 3 as t)]
我正在运行一个合并语句,我想arr
使用新元素进行更新,但保持排序顺序为t
.
我的尝试是取消嵌套 source 和 target arr
,对其进行排序,然后ARRAY_AGG
将结构返回。所以是这样的:
WHEN MATCHED THEN UPDATE SET
target.arr = ARRAY(SELECT AS STRUCT * FROM UNNEST(ARRAY_CONCAT(target.arr, source.arr)) ORDER BY timestamp ASC)
但这给出了错误Unexpected keyword SELECT
。
不知道出了什么问题。仅仅是MERGE
声明吗?
编辑:我得到的错误实际上是Correlated Subquery is unsupported in UPDATE clause
解决方案
对于任何寻找答案的人。BigQuery 目前不支持UPDATE
orWHEN
语句中的子查询。
推荐阅读
- javascript - 添加标签时反应无法删除重复项
- python - 如何从字典中按索引删除项目?
- r - 计算行差异并插入R中的新列(不使用for循环)
- sql-server - 用于检索状态列计数的 SQL 查询
- google-apps-script - 谷歌工作表脚本 - 当满足共同值时,停止填充与另一个数组进行比较的数组
- java - 在 Java 8 中我可以使用什么数据类型来代替“var”?
- php - laravel 将所有数组合并为一个
- sql - Oracle 触发器终止会话
- c++ - 我可以使用什么样的数据结构来处理这种方式
- javascript - javascript Date.toISOString() 返回差异日期值