【发布时间】:2020-03-10 07:21:48
【问题描述】:
我想从 BigQuery 分析事件表中的重复记录更新单个值。
我尝试过以下link 并尝试编写查询:
UPDATE `analytics_1212191.events_2020*`
SET event_params = ARRAY(
SELECT AS STRUCT
b.key,
b.value.string_value,
b.value.float_value,
b.value.int_value,
b.value.double_value
FROM UNNEST(event_params) as b
)
我想更新具有 key = "xyz" 的 b.value.string_value。我知道目前还没有“where”条款。但上述查询(即使在上述阶段)显示以下错误:
Value of type
ARRAY<STRUCT<key STRING, string_value STRING, float_value FLOAT64, ...>>
cannot be assigned to event_params, which has type
ARRAY<STRUCT<key STRING, value STRUCT<string_value STRING, int_value INT64, float_value FLOAT64, ...>>> at [4:20]
感谢 Felipe 的回答,解决了上述问题后,我可以对 Update 使用以下查询。
如果有人有更好的想法或帮助未来的观众,我想我应该提到结果查询:
UPDATE `analytics.events_test`
SET event_params = ARRAY(
SELECT AS STRUCT
b.key,
STRUCT (
CASE WHEN b.key = "type" and b.value.string_value = "xyz" THEN "abc" ELSE b.value.string_value END,
b.value.int_value,
b.value.float_value,
b.value.double_value
) AS value
FROM UNNEST(event_params) as b
)
WHERE event_name = "app_update"
一个指针:
计划是在事件表上运行它,并且不支持在分区表中使用通配符的 DML 语句
【问题讨论】:
标签: sql google-bigquery