当事件操作=“某物”时更新GA的事件类别

时间:2019-08-07 03:48:31

标签: sql google-bigquery

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

我想更新事件操作=“ 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'。但是结果表全都没有嵌套。我需要将它与匹配和其他字段嵌套的原始表相同。

这和我的距离很近。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

应该是

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