【发布时间】:2017-09-20 00:02:23
【问题描述】:
我有一个 BigQuery 表,其架构与图片中显示的相似,行可以容纳结构数组。我应该使用什么语法来尝试将 itemDelta.typeId 更改/更新为另一个值? (如果不清楚,请参阅 SQL)
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
【问题讨论】:
-
建议 - 如果有办法用纯 SQL 表达相同的逻辑,请不要使用 JS UDF。
标签: sql google-bigquery