sql - 当 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'。但是结果表都是未嵌套的。我需要它与嵌套命中和其他字段的原始表相同。
这是我得到的最接近的。
任何帮助将不胜感激。
解决方案
应该
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() 中应用它
推荐阅读
- c++ - 为什么我的程序没有处理所有功能?
- javascript - Firebase onSnapshot 状态管理问题
- django - 令牌身份验证不起作用 django rest 框架
- docker - docker 容器仅在 windows GUI 下运行
- javascript - 如何在 google colab 中制作文本区域?
- python - 为什么 pygame.Surface 对象在类中不可下标?
- mqtt - 如何发现启用 MQTT 的局域网中的所有设备?
- angular - 星云角色 - isGranted() 始终为真
- python - 根据随机变量的值将值分配给 DataFrame 列
- google-sheets - 简单现金簿中总计的数组公式