在数据分析的过程中,想要从数据中洞察机会,一般就需要对数据不断展开下钻,分不同维度查看核心的数据漏斗。比如不同年龄段、不同城市、不同购买力、不同性别、XXX的浏览转化率。
作为技术人员,肯定不能停留在知道怎么分析上,还需要知道要怎么高效简单的做这件事情。怎么做呢?
- 简单的方式是SQL的Group By + UNIAON ALL
- 高级一点的方式是Grouping SETS
当维度足够多的时候使用Grouping SETS,可以减少重复代码的编写;
Demo
准备1+N张表:
- table_a 1张业务数据表,userid + 业务数据
- table_b N张用户维表,可以放到一张大宽表中,也可以按需分布在不同的表中。存储用户的年龄、性别、城市等信息
userid 浏览数 购买数
1 1 0
2 1 0
3 1 0
4 1 1
Group By + UNION ALL方式
CREATE VIEW tmp_result AS
select
a.userid
,a.浏览数
,a.购买数
,b.年龄
,b.性别
,b.购买力
from table_a
LEFT JOIN table_b
on a.userid = b.userid
SELECT 年龄 as cate,sum(浏览数),sum(购买数) from tmp_result GROUP BY 年龄
UNION ALL
SELECT 性别 as cate,sum(浏览数),sum(购买数) from tmp_result GROUP BY 性别
UNION ALL
SELECT 城市 as cate,sum(浏览数),sum(购买数) from tmp_result GROUP BY 城市
GROUPING SETS方式
CREATE VIEW tmp_result AS
select
a.userid
,a.浏览数
,a.购买数
,b.年龄
,b.性别
,b.购买力
from table_a
LEFT JOIN table_b
on a.userid = b.userid
SELECT 年龄,性别,城市,sum(浏览数),sum(购买数) FROM tmp_result
GROUP BY 年龄,性别,城市
GROUPING SETS(
(年龄),(性别),(城市)
)
小结
分维度查看不同和数据就是SQL的Group BY,当维度太多的时候使用Grouping Sets。
网友评论