首页 > 解决方案 > 当 Event Action = "something" 时更新 GA 的事件类别

问题描述

我正在尝试更新 BigQuery 中的 GA 表。

我想更新 event action = "click" 的所有事件类别

这对我来说是一个挑战,因为这些信息嵌套在 hits 列中,我无法让任何 UPDATE SQL 工作。

我已经尝试了以下 SQL。

UPDATE `my_sample_table`
SET hits =
  ARRAY(
    SELECT AS STRUCT * REPLACE(
      (SELECT AS STRUCT eventInfo.* REPLACE('UX' AS eventCategory)) AS eventInfo)
    FROM UNNEST(hits) WHERE eventInfo.eventAction = 'click'
  )
WHERE TRUE;

它确实有效,并将所有 eventCategory 替换为 'UX' 其中 eventAction = 'click'。但是结果表都是未嵌套的。我需要它与嵌套命中和其他字段的原始表相同。

这是我得到的最接近的。

任何帮助将不胜感激。

标签: sqlgoogle-bigquery

解决方案


应该

UPDATE `my_sample_table`
SET hits =
  ARRAY(
    SELECT AS STRUCT * REPLACE(
      (SELECT AS STRUCT eventInfo.* REPLACE(
        IF(eventInfo.eventAction='click','UX', eventInfo.eventCategory) AS eventCategory
      )
    ) AS eventInfo)
    FROM UNNEST(hits)
  )
WHERE TRUE

您最初查询的问题实际上是您在错误的地方应用了过滤。相反,您需要在最内部的 REPLACE() 中应用它


推荐阅读