google-bigquery - 如何更新(乘以 5 而不是简单地替换)BigQuery 中的嵌套收入字段?
问题描述
我正在尝试在 BigQuery 中使用 DML 来更新嵌套的收入字段。挑战在于,我不想简单地替换收入的价值,而是将其与特定因素相乘。
只是替换我发现:
UPDATE `project.dataset.table`
SET hits = ARRAY(
SELECT AS STRUCT * REPLACE (
(SELECT AS STRUCT transaction.* REPLACE ( 1 AS transactionRevenue)) AS transaction
)
FROM UNNEST(hits) as transactionRevenue
)
WHERE true
但我想有类似的东西:
UPDATE `project.dataset.table`
SET hits = ARRAY(
SELECT AS STRUCT * REPLACE (
(SELECT AS STRUCT transaction.* REPLACE ( (transactionRevenue*5) AS transactionRevenue)) AS transaction
)
FROM UNNEST(hits) as transactionRevenue
)
WHERE true
这种方法行不通。错误消息:对于参数类型:STRUCT、INT64 的运算符 * 没有匹配的签名。支持的签名:INT64 * INT64;FLOAT64 * FLOAT64; 数字 * 数字 [4:48]
解决方案
下面应该工作
UPDATE `project.dataset.table`
SET hits = ARRAY(
SELECT AS STRUCT * REPLACE(
(SELECT AS STRUCT * REPLACE(5 * transactionRevenue AS transactionRevenue)
FROM UNNEST([transaction])
) AS transaction
)
FROM t.hits
)
WHERE true
推荐阅读
- python - 获取日期时间格式的列并检查值是否在其中
- graylog - 搜索两个字段具有相同值的消息
- c# - await foreach 阻止执行
- python - 使用 Python(或迁移 CSV 文件)解析网站的 HTML 表以创建 SQLite 数据库
- unity3d - 在 Unity 中检测哪些 Tilemap 单元格与 Collider2D 发生了碰撞
- javascript - 为什么当它的数组依赖发生变化时没有触发使用效果?
- mysql - SQL - 对相邻列表/列使用“Where In”
- c# - 两个库(LiveChart 和 HandyControl)之间的 WPF 冲突创建图形偏移量
- javascript - 我的代码应该从 ComboBox 获取值并添加一个
元素
- powershell - 当我尝试移动文件时,为什么我的 PowerShell 代码会删除我的文件夹?