更新BigQuery表中的嵌套字段

Jos*_*e B 5 google-bigquery

我正在尝试执行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]

如何更新此嵌套字段?

Ell*_*ard 5

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)


Mar*_*bao 5

如果您需要修改给定的自定义维度,您可以使用:

#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)

但是运行需要一段时间。