Google bigquery 如何对特定列中的字符串值进行分组,并使用分组的字符串创建和添加列?
我有以下模式: 看法 运动 日期 源介质, 关键词, 会议, 新课程, 平均会话长度秒, 用户, 新用户, 反弹, 目标\完成\所有\目标 我想将源/中字符串名称项分组到特定的组中: 例如,在源代码和媒体中,我有google/Organic、google/discovery、google/CPC、Paid/search、Facebook/social等字段,我想将它们分组为google Organic、Video discovery、google CPC、Paid search、Facebook Organic等。我如何做到这一点Google bigquery 如何对特定列中的字符串值进行分组,并使用分组的字符串创建和添加列?,google-bigquery,bigquery-udf,Google Bigquery,Bigquery Udf,我有以下模式: 看法 运动 日期 源介质, 关键词, 会议, 新课程, 平均会话长度秒, 用户, 新用户, 反弹, 目标\完成\所有\目标 我想将源/中字符串名称项分组到特定的组中: 例如,在源代码和媒体中,我有google/Organic、google/discovery、google/CPC、Paid/search、Facebook/social等字段,我想将它们分组为google Organic、Video discovery、google CPC、Paid search、Facebook
然后,当我创建了分组列后,我将如何将此列添加到原始列?您应该能够执行以下操作 更改表格以允许添加列
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
我如何才能将此列添加到原始列
考虑在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`
上面示例的输出是
嗨,谢谢你的帮助。但是,如何对具有不同可变性的源\介质字段进行分组。例如,如果我想将包含谷歌、谷歌和有机或Orgic的字符串分组到谷歌Orgic中,我该如何重新定义函数?同时,如果您有后续或新问题-请发布新问题,我们将很乐意提供帮助!