我正在尝试执行BigQuery中微不足道的操作;我正在尝试更新BigQuery表中的嵌套字段,这是360导出的结果。
这是我的查询:
#standardSQL
UPDATE `dataset_name`.`ga_sessions_20170705`
SET hits.eventInfo.eventLabel = 'some string'
WHERE TRUE
Run Code Online (Sandbox Code Playgroud)
但我收到此错误消息:
Error: Cannot access field eventInfo on a value with type ARRAY<STRUCT<item STRUCT<transactionId INT64, currencyCode STRING>, isEntrance BOOL, minute INT64, ...>> at [3:10]
如何更新此嵌套字段?
hits是一个数组,因此您需要使用数组子查询来分配给它。它看起来像这样:
#standardSQL
UPDATE `dataset_name`.`ga_sessions_20170705`
SET hits =
ARRAY(
SELECT AS STRUCT * REPLACE(
(SELECT AS STRUCT eventInfo.* REPLACE('some string' AS eventLabel)) AS eventInfo)
FROM UNNEST(hits)
)
WHERE TRUE;
Run Code Online (Sandbox Code Playgroud)
如果您需要修改给定的自定义维度,您可以使用:
#standardSQL
UPDATE `tablename`
SET hits =
ARRAY(
SELECT AS STRUCT * REPLACE(
ARRAY(
SELECT AS STRUCT cd.index,
CASE WHEN cd.index = index_number THEN 'new value'
ELSE cd.value
END
FROM UNNEST(customDimensions) AS cd
) AS customDimensions)
FROM UNNEST(hits) hit
)
WHERE TRUE
Run Code Online (Sandbox Code Playgroud)
但是运行需要一段时间。
| 归档时间: |
|
| 查看次数: |
1924 次 |
| 最近记录: |