如何解决如何对来自特定列的字符串值进行分组并使用分组的字符串创建和附加列?
我有以下架构:
查看 活动 , 日期, 来源___媒体, 关键词, 会议, 新会话__, 平均__会话长度__秒_, 用户, 新用户, 弹跳, Goal_completions_all_goals
我想将源/媒体字符串名称项目分组到特定组中:
例如,在源和媒体中,我有 google/Organic、google/discovery、google/CPC、Paid/search、Facebook/social 等字段,我想将它们分组为 Google Organic、Video discovery、Google CPC、Paid搜索、Facebook 有机等。我该怎么做?
然后当我创建了分组列后,我将如何将此列添加到原始列中?
解决方法
我如何才能将此列添加到原始列中?
考虑使用下面的 UDF 并查看使用示例
CREATE TEMP FUNCTION DECODE(expr ANY TYPE,map ANY TYPE,`default` ANY TYPE ) AS ((
IFNULL((SELECT result FROM UNNEST(map) WHERE lower(search) = lower(expr)),`default`)
));
WITH `project.dataset.table` AS (
select 'google/Organic' Source_medium union all
select 'google/discovery' union all
select 'google/ CPC' union all
select 'Paid /search' union all
select 'Facebook / social'
)
SELECT Source_medium,DECODE(Source_medium,[STRUCT<search STRING,result STRING>
('google/Organic','Google Organic'),('google/discovery','Video Discovery'),('google/ CPC','Google CPC'),('Paid /search','Paid Search'),('Facebook / social','Facebook Organic')
],'Other') AS Adjusted_Source_medium
FROM `project.dataset.table`
上面例子的输出是
,您应该能够执行以下操作
改变表格以允许额外的列
ALTER TABLE mydataset.mytable
ADD COLUMN grouped_column STRING;
创建一个函数来处理逻辑
CREATE TEMP FUNCTION grouper (source_medium string)
AS (
CASE source_medium
WHEN 'google/Organic' THEN 'Google Organic'
ELSE 'OTHER LOGIC' END
);
使用您创建的函数更新表
UPDATE mydataset.mytable
set grouped_column = grouper(Source___medium)
where true
或者,您可以使用位于基础表顶部的视图来执行此操作,如下所示:
CREATE VIEW mydataset.myview AS
SELECT *,CASE source___medium
WHEN 'google/Organic' THEN 'Google Organic'
ELSE 'OTHER LOGIC' END
FROM mydataset.mytable
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。