《BI工程师必读》数据可视化篇 #02
写在前面对于大数据团队来说,我们把计算好的数据,以一种简洁美观的方式展现给产品经理或领导也是十分重要的,其实也就是数据可视化。一种方式就是公司自研一个可视化平台,比如用SpringBoot+Echarts就可以达到一些效果,但是这无疑是比较耗费时间的,所以选择一款高效的可视化工具就显得尤为重要。BI工具目前市面上有很多,像是Tableau、FineBI这种典型代表,他们或多或少都比较商业化一些,无
写在前面
对于大数据团队来说,我们把计算好的数据,以一种简洁美观的方式展现给产品经理或leader也是十分重要的,其实也就是数据可视化。
一种方式就是公司自研一个可视化平台,比如用SpringBoot+Echarts就可以达到一些效果,但是这无疑是比较耗费时间的,所以选择一款高效的可视化工具就显得尤为重要。
BI工具目前市面上有很多,像是Tableau、FineBI这种典型代表,他们或多或少都比较商业化一些,无奈没money啊。。
那么开源免费的呢?肯定也是有不少的哈,目前开源比较流行的有,redash metabse superset 这三款,讲真,我们公司之前有redash和metabase两套环境,后来由于leader觉得两边看数据麻烦,就把redash抛弃了,后面就一直用的是metabse(后来个人感觉整体确实比redash好些)。
这里简单贴一下各个组件的对比:
好了,既然我们公司主要用的是metabase,那么本文就来讲讲我是怎么玩的吧,如果有小伙伴有更好的操作,可以留言一起学习学习!
官网文档地址:https://www.metabase.com/docs/latest/
地图数据怎么玩 #01
首先需要在设置>地图中新增一个zg 地图,地图链接可以直接使用阿里的这个,你可以把这个链接的内容保存到自己的服务器也是可以的。
https://geo.datav.aliyun.com/areas_v3/bound/100000_full.json
接着,指定属性 何种方式标识ditu上的区域,可以使地区码 城市名称 经纬度等等,选择一种和你数据一致的就可以。 我这里用的城市名。
简单编写SQL
select
t1."省市" ,
count(1) as "人数"
from (
select
case when province in ('bj','tj','sh','cq') then concat(province,'市')
else '其他城市' end as "省市"
from map_liuge
) t1
where t1."省市" != '其他城市'
group by t1."省市"
报表数据-高亮累计行 #02
很多时候有按月累计统计的场景,这里就可以按照下面的操作得到类似的效果。
select
month(date(ts_date)) as "-月份-",
'总计' as "日期范围",
sum(t1.pay_cnt) as "pay_cnt"
from student_order t1
group by month(date(ts_date))
union all
select
month(date(ts_date)) as "-月份-",
-- student_order 是按周分区 所以下面是这样写
concat( date_format(date_add('day',+1-day_of_week(date(ts_date)),date(ts_date)), '%Y-%m-%d') , '~',ts_date ) as "日期范围",
t1.pay_cnt as "pay_cnt"
from student_order t1
order by "-月份-" desc , "日期范围" desc
效果如下:
报表数据-按月颜色渐变 #03
报表数据-高亮首行 #04
小伙伴有没有发现其实这里是可以按照自定的规则对报表的某些行进行高亮显示的,这一点其实是很有帮助的
可选参数&日期推荐写法 #05
# 日期筛选推荐写法
[[and {{start_date}} <= t1.plan_create_time and t1.plan_create_time < date_add('day',1,{{end_date}} )]]
# 可选参数的写法
[[and t1.student_name = {{student_name}}]]
小Demo
平台累计注册用户数
select
t1.dt ,
sum(t1.dt_cnt) as dt_cnt,
sum(sum(t1.dt_cnt)) over(order by t1.dt rows between UNBOUNDED PRECEDING AND CURRENT ROW) as cumulative
from (
select
date(t1.create_time) as dt,
count(1) dt_cnt
from user_table t1
group by date(t1.create_time)
) t1
group by t1.dt
order by t1.dt
)
更多可视化的图表都是可以自行尝试一下的,比如你可以把你做好的图表合并成为一个表盘Dashboard
如果你觉得这篇文章写得还不错,请你帮我点个赞 谢谢!

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)