漫画解读“跨视图粒度计算”,了解有数分析利器

本文来自网易云社区

刚接触网易有数的用户,可能会认为有数只是一款数据可视化工具,但其实有数不单单能可视化数据,还能对数据进行计算分析,实现复杂的数据分析需求。

本文要介绍的就是有数提供的众多数据分析功能之一—— 跨视图粒度计算(其实就是简单的3个函数,但能实现复杂的分析需求:比如新客贡献分析、留存分析、复购分析、RFM分析等等)。

既然要跨视图粒度计算,那我们先来理解两个概念: 粒度、视图

1、粒度:什么是数据粒度呢,它指的是一份数据的细化程度,这么解释有些抽象,可以看下我制作的一幅漫画(原漫画来自日和动漫)

漫画中,老板的“粗略”、“明细”描述的就是数据的粒度,越明细的数据包含的信息越多,同时也越难解读,所以一般根据需求不同会挑选不同粒度的数据来分析。

2、视图:数据库技术里有对视图的定义,本文中,可以先简单地把视图理解为有数中的一个图表,如下图所示就是两个不同粒度的视图,视图1 细化到省,视图2细化到城市,视图2的细化程度更高,数据更明细,包含的信息也更多:

好了,现在我们已经理解了 粒度、视图两个概念,每个视图有自己的粒度,一个视图里只能有一个粒度。

那什么时候需要用到跨视图粒度计算呢,当我们在一个视图里需要用到来自其他视图粒度的数据时,就需要用到跨视图粒度计算了。举个例子:

例1:还是上文的视图1跟视图2,当我们需要在视图2里加一列数据,显示每个城市销售额在该省的占比,比如计算杭州的销售额占浙江省的比例,这时候我们需要“杭州的销售额/浙江的销售额”,但杭州的销售额数据在视图2里,而浙江的销售额数据在视图1里。没法拿到一起计算:

这时候我们可能需要用SQL去取两个不同粒度视图的数据,然后放在一个视图里进行分析,SQL语句如下所示,如果不了解SQL可以忽略,不影响理解跨视图粒度计算。

但其实在有数里,如果在视图2中,需要用到视图1的数据,只需要借助一个简单的函数就可以实现

创建一个计算字段:
{ FIXED [省] : sum( [销售额]) }

它的意思是以“省”的粒度计算销售额的和,也就得到每个省的总销售额。

得到每个省的总销售额之后,我们可以用城市的销售额除以省的总销售额来计算占比啦,如下:

sum( [销售额]))/sum( [各省的销售额]))

如此,我们便实现了目的,在视图2中增加一列展示每个城市的销售额在该省的占比:

有数里一个函数,就实现了本需要写那么长一串SQL语句才能办到的事,是不是很高效,不懂SQL的小伙伴也可以掌握。

例2:再举一个跨视图粒度计算的例子来帮大家理解,假设我们有这样一个视图,记录客户每个订单发生的时间,粒度细化到每个订单:

这时候,如果我想给每个订单打个标签,标记这个订单是否是新客户的首单(一个新客户下的第一单就被认为是首单),如图中标出的几个订单:

直观上理解,要判断订单是否是首单,只要把订单的时间跟客户第一次下单的时间进行对比,如果相等,说明这个订单是用户的首单,那么我们可以再建一个客户粒度的视图,对每个客户所有的下单日期取最小值,即可得到每个客户的首单日期:

得到每个客户的首单日期后,我们只要把每个订单的日期去跟首单日期比较,如果相等就是首单,但现在遇到了难题,要比较的两个数据来自不同粒度的视图:

这时候,又可以借助跨视图粒度计算来实现目的啦。

创建一个计算字段: { FIXED [客户名称] : min( [下单日期]) }

它的意思是以“客户名称”的粒度来计算最小的下单日期,也就是每个客户首单的日期,然后我们可以通过比较来给每个订单打标签啦。(我们的测试数据里,每个用户每天至多下一单,这样只要两个日期是同一天,就判定为首单,如果一天多单则还需要比较两个日期的时分秒是否一致)
if DATEDIFF( "day", [下单日期], [首单日期]) = 0 then "首单"

else " 非首单"

结果如图所示:

打完标签后,我们就可以在图表中直观地区别出销售额中哪些是由新客贡献的,可以看到新客贡献了大部分销售额,说明我们的老客复购效果可能不理想呀,预知后续分析,且听下回分解。

全文到这里就结束啦,有数的跨视图粒度计算是不是很灵活高效,有需要的小伙伴快去尝试吧~

网易有数:企业级大数据可视化分析平台,具有全面的安全保障、强大的大数据计算性能、先进的智能分析、便捷的协作分享等特性。点击可免费使用

作者:汪谦 如需转载,请取得作者同意授权

原文:漫画解读“跨视图粒度计算”,了解有数分析利器

了解 网易云 :

网易云官网:https://www.163yun.com

新用户大礼包:https://www.163yun.com/gift

原文地址:https://www.cnblogs.com/163yun/p/9436463.html

时间: 2024-10-10 05:33:15

漫画解读“跨视图粒度计算”,了解有数分析利器的相关文章

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

作者:王文开 在网易有数中,我们的目标是使数据分析成为一种愉快的行为. 个人认为一款优秀的数据分析工具应该是能够做到:当用户在使用它做数据分析的时候,已经忘记了工具的存在,而是能够集中关注于发现数据背后揭示的故事.这个可以叫做experience flow,是一种沉浸在数据分析中的喜悦状态. 同时,你一定遇到过这样的情况:有时,你遇到了一个问题,其实是很容易描述清楚的,但当你试图在网易有数中展示并回答,会发现它竟是很难的.此时,刚才提到的experience flow,就没有了感觉,你需要开始思

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

本文由  网易云发布. 深入嵌入"跨视图粒度计算"的前面两篇分别讲了 1.理解数据的粒度 2.INCLUDE表达式 这一篇讲一下EXCLUDE表达式的用法. EXCLUDE,中文译为"排除",顾名思义,这个表达式和INCLUDE表达式是对立的,语法规则如下: { EXCLUDE [维度] : 聚合表达式 } 比如我们先做了下图,看了每个"类别"下,各个子类别的总销售额 如果此时我们想在这张图上看每个类别的总销售额,那该怎么做呢? 我们可以使用EX

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

本文由  网易云发布. 上一篇,讲了什么是数据的粒度,以及网易有数中,哪些地方能够改变视图上的数据粒度. 现在正式开始跨视图粒度计算表达式的讲解,我们首先来看一下INCLUDE表达式 { INCLUDE [维度] : 聚合表达式 } 我们用以下的示例数据来举个例子.这份数据显示了在2014年的1月和2月间,有A.B和C三个客户有一些花费记录. 首先,我在网易有数中展示这两个月的花费总额,将"Date"字段放置在X轴,并且按照"月"的粒度."Spend&qu

MVC 5使用TempData Object跨视图传递数据

经过一系列显示数据的练习:<MVC 5使用ViewData(对象)显示数据>http://www.cnblogs.com/insus/p/3377178.html<MVC 5使用ViewData(模型)显示数据>http://www.cnblogs.com/insus/p/3377217.html<MVC 5使用ViewBag(对象)显示数据>http://www.cnblogs.com/insus/p/3377663.html<MVC 5 Strongly Ty

Mysql视图的作用及其性能分析

定义:视图是从一个或几个基本表导出的表,它与基本表不同,是一个虚表. 作用: 1.简化操作,不用进行多表查询. 2.当不同种类的用用户共享同一个数据库时,非常灵活,(用户以不同的 方式看待同一数据. 3.视图对重构数据库提供了一定程度的逻辑独立性. 数据的逻辑独立性是指:如增加新的关系或对原有的关系增加新的 字段,用户的应用程序不受影响. 例如:原有一个Student(Sno,Sname,Ssex,Sage,Sdept)这样一个表. 后来变动为:Sx(Sno,Sname,Sage)和SY(Sno

【转】【漫画解读】HDFS存储原理

根据Maneesh Varshney的漫画改编,以简洁易懂的漫画形式讲解HDFS存储机制与运行原理. 一.角色出演 如上图所示,HDFS存储相关角色与功能如下: Client:客户端,系统使用者,调用HDFS API操作文件;与NN交互获取文件元数据;与DN交互进行数据读写. Namenode:元数据节点,是系统唯一的管理者.负责元数据的管理;与client交互进行提供元数据查询;分配数据存储节点等. Datanode:数据存储节点,负责数据块的存储与冗余备份;执行数据块的读写操作等. 二.写入

【漫画解读】HDFS存储原理(转载)

转载自:http://www.cnblogs.com/itboys/p/5497698.html 角色出演 如上图所示,HDFS存储相关角色与功能如下: Client:客户端,系统使用者,调用HDFS API操作文件;与NN交互获取文件元数据;与DN交互进行数据读写. Namenode:元数据节点,是系统唯一的管理者.负责元数据的管理;与client交互进行提供元数据查询;分配数据存储节点等. Datanode:数据存储节点,负责数据块的存储与冗余备份;执行数据块的读写操作等. 二.写入数据 1

MVC 5使用TempData(对象)跨视图传递数据

在控制器写好TempData: 然后在Index.cshtml写一个链接,为了是让用户点击这个链接,能链至PageA()这个Action至. @Html.ActionLink("Show to page A", "PageA") 在PageA.cshtml可以使用到TempData数据了: 下面的实时操作演示. http://blog.csdn.net/linybo/article/details/44699177

Android视图SurfaceView的实现原理分析

附:Android控件TextView的实现原理分析 来源:http://blog.csdn.net/luoshengyang/article/details/8661317 在Android系统中,有一种特殊的视图,称为SurfaceView,它拥有独立的绘图表面,即它不与其宿主窗口共享同一个绘图表面.由于拥有独立的绘图表面,因此SurfaceView的UI就可以在一个独立的线程中进行绘制.又由于不会占用主线程资源,SurfaceView一方面可以实现复杂而高效的UI,另一方面又不会导致用户输