美文网首页
kylin-剪枝优化工具-联合维度

kylin-剪枝优化工具-联合维度

作者: 李小李的路 | 来源:发表于2020-02-23 11:20 被阅读0次
    • 基于kylin-3.0

    联合维度

    • 联合维度(Joint Dimension)一般用在同时查询几个维度的场景,它是一个比较强力的维度剪枝工具,往往把Cuboid的总数降低几个量级。
    • 距离来说,如果用户的业务场景中总是同时进行A、B、C三个维度的查询分析,而不会出现聚合A、B或者聚合C这些更上卷的维度组合,那么这类场景就是联合维度所适合的。可以将维度A、B和C定义为联合维度,Kylin就仅仅构建Cuboid[A,B,C],而Cuboid[A,B][B,C][A]等不会被生成。最终的Cube结果下图所示,Cuboid的数量从16个减至4个。


      联合维度示例
    • 假设创建一个交易数据的Cube,它具有很多普通的维度,像交易日期cal_dt、交易的城市city、顾客性别sex_id和支付类型pay_type等。分析师常用的分析总是同时聚合交易日期cal_dt、交易的城市city和顾客性别sex_id,有时可能希望根据支付类型进行过滤,有时又希望看到所有支付类型下的结果。那么,在上述实例中,推荐设立一组聚合组,并建立一组联合维度,所包含的维度和组合方式如下:
      • 聚合组(Aggregation Group):[cal_dt,city,sex_id,pay_type]
      • 联合维度(Joint Dimension):[cal_dt,city,sex_id]
    • 情况1(查询包含所有的联合维度):
    select cal_dt,city,sex_id,count(*) from table group by cal_dt,city,sex_id
    
    • 它将从Cuboid[cal_dt,city,sex_id,pay_type]中直接获取数据;
    • 情况2(如果有一条不常用的查询,只聚合了部分联合维度):
    select cal_dt,city,count(*) from table group by cal_dt,city
    
    • 没有现成的Cuboid,Kylin会通过在线计算的方式,从现有的Cuboid[cal_dt,city,sex_id]中计算出最终结果。
    • 联合维度使用场景:
      • 维度经常同时在查询wheregroup by条件中同时出现,甚至本来就是一 一对应。如customer_id何customer_name,将他们组合成一个维度。
      • 将若干个低基数(建议每个维度基数不超过10,总的基数叉乘结果小于10000)的维度合并组成一个联合维度,可大大减少Cuboid的数量,利用在线计算能力,虽然会在查询时多耗费有限的时间,但相比能减少的存储空间何构建时间而言是值得的。
      • 必要时可以将两个有强关系的高基维度组成一个联合维度,如合同日期何入账日期。
      • 可以将查询时很少使用的若干维度组成一个联合维度,在少数查询场景中承受在线计算的额外时间消耗,但能大大减少存储空间和构建时间。
        *以上浙西维度减枝操作都可以在Cube DesignerAdvanced Setting中的Aggregation Groups区域完成。

    相关文章

      网友评论

          本文标题:kylin-剪枝优化工具-联合维度

          本文链接:https://www.haomeiwen.com/subject/azokqhtx.html