此文已由作者王文开授权网易云社区发布。
欢迎访问网易云社区,了解更多网易技术产品运营经验。
跨视图数据粒度计算(Cross-Granularity Calculation)是网易有数推出的新功能,CGC的优点是您可以独立于当前视图用的维度来执行此计算。CGC计算表达式一共有三种,分别是:FIXED,INCLUDE,和EXCLUDE。为了理解网易有数的CGC在何时/何地/为什么需要使用它,我们首先必须理解:
1、什么是数据粒度?
2、在网易有数中哪些地方会影响视图的数据粒度
我们假设有一个的表格,其中包含以下字段:OrderID,Customer Name和Sales。一共有12行记录:
基础明细数据
这个表格数据中,OrderID是主键,所以这张表的最明细的数据粒度就是OrderID这个字段,因为这个字段能够区分表中每一条记录。所以可以这么来理解:
能够区分每一行数据的字段称之为该数据的最细粒度。
在这个例子中,我们对“Sales”这个字段进行求平均值。我们按照最细的数据粒度来,是对所有12条记录进行求平均值。
求平均值
我汇总了Sales整列,然后将它除以总行数,即3,059.00除以12。这个结果是每个记录的平均销售额为 254.92。
在网易有数中,如果你仅仅将“Sales”字段拖入图表后,聚合方式选择“平均值”,不放置任何其他维度的时候,可以看到,网易有数会默认使用最细的粒度进行计算。
销售额平均值
我们可以看到,这和将“OrderID”放置在Y轴,然后在再对“Sales”进行求平均值,结果是一样的。
接下来,我们考虑使用原始数据中的“Customer Name”维度,来改变“Sales”的聚合粒度。比如我在网易有数中提出了以下的问题:
每位顾客的平均销售额是多少?
现在我们先按照“Customer Name”字段进行排序,重新排列我们表格的数据。
按客户名称排序
接着,让我们按“Customer Name”字段对我们的所有订单进行分组,并按客户的销售额进行汇总。
按客户进行分组
最后,我们可以像以前一样对“Sals”整列进行求和,然后除以新的行数。在这种情况下,我的分母将是8个客户,而不是原来的12条记录了。结果是每个客户$ 3,059.00除以8,等于382.38美元。
也就是,当前对“Sales”求平均值的时候,计算的粒度变了,从原来的“OrderID”,变为了“Customer Name”,
所以,抽象来说:
我们在对任何一个度量进行聚合方式计算的时候,依赖的当前维度对数据的划分。
视图,可以简单的理解成图表。
在网易有数的图表数据面板中,有两个区域能够决定您这张图表的粒度。
1 是X轴和Y轴、
2 是 属性面板
比如,我在Y轴放入“地区”,X轴放入“销售额”字段,并且“销售额”的聚合方式选择“平均值”
X轴Y轴
然后就会得到下面这张图,这种图相当于是在“地区”的粒度上,对“销售额”取了平均值,
也就是对每个地区下的每一条记录先求和,然后除以该地区下的记录行数。
图表
属性面板也可以对度量进行粒度的划分,比如你先将“利润”和“销售额”分别放到了X轴和Y轴上,得到下图,因为还没有任何维度对两个指标做切分,代表的是所有行记录销售额和利润的总和,,所以会聚合成了一个点。
利润销售额关系1
当你将“订单ID”放置到属性面板的【细分】栏上后,相当于对图表增加了粒度,此时图表就会进行了细分,展现出每个“订单”的销售额和利润。
不论是X轴,Y轴,还是属性面板,在这些里面放字段都会改变图表的样式。那有没有一种方式能够支持让分析是自由的定义度量的计算粒度,不会受到当前图表视图的粒度影响?
这就是网易有数中的跨视图粒度计算(Cross-Granularity Calculation)的功能,CGC的优点是您可以独立于当前视图用的维度来执行此计算。如果我将一个字段拖到X轴,Y轴或属性面板上,那么整个视图将会受到影响。CGC允许我们设置的粒度水平,而与当前视图无关。
CGC计算表达式一共有三种,分别是:FIXED,INCLUDE,和EXCLUDE。在后续文章中,我会对这三个表达式做详细的介绍。
网易有数:企业级大数据可视化分析平台,具有全面的安全保障、强大的大数据计算性能、先进的智能分析、便捷的协作分享等特性。点击可免费试用
相关文章:
【推荐】 Spring Boot 学习系列(06)—采用log4j2记录日志
【推荐】 对云环境下访问控制系统的思考
【推荐】 HBase基准性能测试报告