感动到流泪!数据分析师的福音:跨视图粒度计算

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了感动到流泪!数据分析师的福音:跨视图粒度计算相关的知识,希望对你有一定的参考价值。

本文由  网易云 发布。

 

作者:王文开

 

网易有数中,我们的目标是使数据分析成为一种愉快的行为。

个人认为一款优秀的数据分析工具应该是能够做到:当用户在使用它做数据分析的时候,已经忘记了工具的存在,而是能够集中关注于发现数据背后揭示的故事。这个可以叫做experience flow,是一种沉浸在数据分析中的喜悦状态。

同时,你一定遇到过这样的情况:有时,你遇到了一个问题,其实是很容易描述清楚的,但当你试图在网易有数中展示并回答,会发现它竟是很难的。此时,刚才提到的experience flow,就没有了感觉,你需要开始思考如何重新处理数据,此时你的分析思路会打断,而不是集中在问题和答案。对于业务分析师来说,这是郁闷的,他们遇到了困境却不知道如何着手。

如上这些问题的核心是:

数据,需要可以自由汇总到不同的粒度,并且不同粒度的数据能够在一张表里进行展现。

这么说比较抽象,我们来举一个具体的电商场景的例子

某家电商成立于2013年,有一天数据分析师在利用网易有数做数据分析,首先她想看一下每年销售额的增长情况,于是在有数中,很容易做出了如下的柱状图。她很满意,销售额一直在增长。

                                                       销售额趋势

 

此时,她的脑海中出现了新的想法,她想看一下"每年的销售额究竟都是由哪一年的客户贡献的?"

首先我们来分析一下她的问题,什么叫“由哪一年的客户贡献的”?

于是她先在有数中做一个简单的表格,把“客户名称","订单ID","订单日期"放入Y轴,得到如下图表。可以看到,丁君这个客户一共买过4个订单,最早的购买日期是"2013-03-01",那我们就可以认为丁君这个客户是2013年的客户。所以我们就其实就是要在有数中计算出每个客户首次购买时间,这样我们就能知道该客户是哪一年的客户了

                                                     试探表格

 

现在,我们的目标就是计算出“每个客户的首次购买时间”。

怎么做,是不是脑海中浮现出的第一个想法是 min([订单日期]),恭喜你,已经成功了一半了

首先我们创建一个计算度量,如下图

                                                                                 最早购买日期

 

然后把这个字段加到图上,却发现,并不是我们期待的效果。“订单日期”和“最早购买日期”这两列的数据完全一样。为什么会这样?这就涉及到了图表聚合粒度的问题,这块内容我会在后续其他文章中详细阐述。

这里我想说的是,当前图表中有“客户名称”,“订单ID”,“订单日期”,这些维度字段都会确定图表的聚合粒度,所以min([订单日期]),这个聚合方式是会收到当前图表粒度影响的。所以才会一模一样。

                                                           最早购买日期

所以,我们现在需要有一种方式,能够指定这个日期的聚合粒度(维度),且不受图表上的粒度所影响。

网易有数在这个版本中加入了重磅功能:跨视图粒度计算表达式(Cross Level Calculation),下文简称CLC。

CLC,一共有三种形式,INCLUDE,EXCLUDE,FIXED,后边我们一点点来揭开他们。

在当前的例子中,我们会需要用到FIXED表达式,他们的格式看起来像这样:

                                                                   FIXED表达式

注意,蓝色部分看着熟悉吧,就是刚才那个基本的数据聚合公式----最小值。红色的部分是一个新的容器,它告诉网易有数在执行蓝色部分求最小日期的时候,在哪个数据粒度进行计算,如在FIXED公式中,就是告诉网易有数,仅仅在“客户名称”这个粒度,对订单日期求最小,不考虑任何其他的粒度,也就是不考虑当前图表上的粒度。

于是我们创建了一个计算维度,如下写了FIXED表达式

                                       每个客户的首次购买时间

此时,再把“每个客户首次购买时间”,拖入图表,这下就对了,这个字段不会受到图表上的粒度影响。

                                                   每个客户首次购买时间

ok,现在万事俱备了,现在只需要将“每个客户首次购买时间”放到颜色栏,就能区分出每一年的销售额里面,有多少是2013年的客户,有多少是2014年的客户,...贡献的

比如,可以从下图可以看到:

1、2013年是这个电商的第一年,那所有的销售额肯定是当年客户贡献的

2、2014年的销售额中,有224.3万是2013年客户贡献的,有116.8万是2014年客户贡献的

                                               新客销售额贡献情况

如果不想看绝对值,可以将图表改成堆叠百分比柱状图。这样就能看到每年销售额里面,各个年份的客户的贡献百分比。

这样就能看出问题了:

这家电商虽然销售额逐年上升,但是新客的贡献率越来越低

2014年的销售额里面,新客的贡献率只有34.24%

2015年的销售额里面,新客的贡献率降到了9.31%

2016年的销售额里面,新客贡献率更低了

                                                            新客销售额占比

这就是网易有数中跨视图粒度计算的一个小案例,真是冰山一角,敬请期待后续更多案例!

原文首发:网易大数据

 

了解 网易云 :
网易云官网:https://www.163yun.com/
新用户大礼包:https://www.163yun.com/gift
网易云社区:https://sq.163yun.com/

 

以上是关于感动到流泪!数据分析师的福音:跨视图粒度计算的主要内容,如果未能解决你的问题,请参考以下文章

深入浅出“跨视图粒度计算”--2INCLUDE表达式

同一张表如何计算不同粒度的数据

深入浅出“跨视图粒度计算”--3EXCLUDE表达式

深入浅出“跨视图粒度计算”--3EXCLUDE表达式

文本清洗+文本分类

Doris -- Rollup和物化视图