本文介绍通用维度与下钻维度的差异。

通用维度

通用维度适用于一般场景。通用维度包括以下两种维度:

  • 维度:普通非索引维度。可独立使用或组合使用。例如某数据集有维度A、B、C,您可以仅选择维度A、B或C,也可以使用BC组合,或者ABC组合等查询。
  • ID类维度:索引维度。在查询时,通过指定ID类维度可以快速查询到数据结果。对于数据中不可枚举或者维度值个数较多的情况,建议使用ID类维度。

场景解析

以某个电商日志场景为例。该电商日志为2017-01-01 12:00:00|类目:男装|省份:浙江|市:杭州|区:西湖区|性别:男|身高:L|数量:5|总价:100|

该日志相应切分后的字段为:时间类目省份性别身高数量总价

我们需要根据商品的类目性别省份属性来分析该数据,则维度依次为类目性别省份,指标为总价数量。预聚合之后数据为:

总价 数量 时间 性别 类目 省份
100 1 2017-01-01 12:00:00 男装 浙江
200 2 2017-01-01 12:00:00 食品 江苏
300 3 2017-01-01 12:00:00 男装 北京

当我们需要查看类目为男装的数据时,需要读取不同类目,不同性别和不同省份对应的所有数据,然后过滤出男装的数据。这里取出数据记录数是大于结果记录数的。

假设有200万的类目,我们还是查看类目为男装的数据,那么需要读取约N个200万的数据,然后过滤出男装数据。这里取出数据记录数是大于结果记录数,且太多的读取记录直接影响到获取数据的速度。此时可以通过创建ID类维度来解决。在查询时要给出明确的维度值,从而加速数据查询。

使用限制

  • 在数据集的查询过程中,ID类维度不能为空,而维度可为空。
  • ARMS中最多包含1个ID类维度和7个维度。

下钻维度

下钻维度针对特定场景,当维度之间存在层级关系,如省>市>区,那么下钻类维度会针对每层的查询加速。

场景解析

以某个系统监控领场景为例。系统日志中包含机房、分组和IP三个维度。我们需要从机房运行情况,下钻到某机房的分组,然后是分组的某一台机器进行数据查询。如果使用通用维度处理该问题,则存在查询数据量较大导致查询延迟的问题。下钻维度可用来解决以上这种固定的逐级查询场景。

下钻维度对机房、分组、IP创建多级索引,索引分别为机房(索引1), 机房-分组(索引2),机房-分组-IP(索引3)。查看机房数据时使用索引1,查看某机房的分组数据时使用索引2,从该分组下钻到IP时使用索引3。

下钻维度的使用场景还可以包括按照省、区维度进行业务统计,按照学校、年级、班级查询学生分布,或按照厂商、品牌、类目统计售卖情况等。

使用限制

  • ARMS中最多可以设置三个下钻维度。
  • 下钻维度之间有层级关系。例如,要查看第二个维度,必须先选择第一个维度的属性。维度类似于一个树状结构。维度的定义需要规划,例如,第一维度可以是省,第二维度可以是市,第三个维度可以是区,指标数据则是市民消费情况。
  • 除非有特殊场景需求,两个完全不相关的维度最好不要一同定义,例如地域和物品类型。
  • ARMS提供下钻功能,可以从汇总数据深入到细节数据进行观察或新增维度。钻取的目的是改变维度层次、变换分析粒度。