gpt4 book ai didi

sql - 更新 BigQuery 表中 ARRAY 中的值

转载 作者:行者123 更新时间:2023-12-03 23:17:51 26 4
gpt4 key购买 nike

我有一个 BigQuery 表,其架构与图片中显示的架构相似,行可以容纳结构数组。我应该使用什么语法来尝试将 itemDelta.typeId 更改/更新为另一个值? (如果不清楚,请参阅 SQL)

BigQuerySchema

UPDATE itemInformation
SET itemDelta.typeId = 9426
WHERE itemDelta.typeId = 2424;

更新:

我发现的一种解决方法是实现用户定义的功能。 BigQuery 允许您使用 JavaScript 创建自定义函数。

这是代码:
CREATE TEMPORARY FUNCTION edit(table ARRAY<STRUCT<typeId INT64, amount INT64>>)
RETURNS ARRAY<STRUCT<typeId INT64, amount INT64>>
LANGUAGE js AS """
var i;
for(i = 0; i < table.length; i++)
{
if(table[i].typeId == 2452)
{
table[i].typeId = 1000
}
}
return table;
""";

UPDATE itemInformation
SET itemDelta = edit(itemDelta)
where true

最佳答案

尝试这个:

UPDATE itemInformation
SET itemDelta = ARRAY(SELECT AS STRUCT * REPLACE(9426 AS typeId) FROM UNNEST(itemDelta))
WHERE 2424 IN (SELECT typeId FROM UNNEST(itemDelta));

过滤器不是绝对必要的,但它可能会使查询稍微快一点,因为它不会修改 typeId 的行。在数组中有不同的值。

关于sql - 更新 BigQuery 表中 ARRAY 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46299703/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com