我正在尝试更新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'。但是结果表全都没有嵌套。我需要将它与匹配和其他字段嵌套的原始表相同。
这和我的距离很近。
任何帮助将不胜感激。
答案 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()