美文网首页数据仓库
第八章 维度设计之特殊维度

第八章 维度设计之特殊维度

作者: 被爱的天青色 | 来源:发表于2019-02-19 22:29 被阅读57次


    递归层次

    1)维度的递归层级即在维度分层的一种表现形式,如下:

    ① 类目维度,细分为叶子类目、三级类目、二级类目、一级类目

    ② 地址类目,细分为区县、城市、省份、国家

    2)对递归层次的探查过程分为上钻和下钻。假设一个场景,统计类目id为001的所有商品最近一天的销售额,步骤如下:

    ① 获取父类目为001的所有类目,得到一个类目集合

    ② 便利集合每一个元素,如果类目为叶子类目则终止;如果非叶子类目则此id作为父类目重复第一步,知道找出所有的叶子类目

    ③ 将所有叶子类目与事实表关联统计

    以上场景是一个下钻的过程,钻取过程常常伴随递归sql。

    3)为了降低递归sql的使用成本,对递归层次进行相应处理:

    ① 层次扁平化:

    当按照三级类目进行统计时,由于001,002的三级类目为null,所以会遗漏这部分数据,我们使用的方法时回填,将上级类目向下虚拟

    扁平化的使用前提是钻取前知道类目级别类目递归级别是固定

    ② 层次桥接表:不需要预先知道类目级别、不去要数据回填、不需要固定类目递归级别,但是使用复杂,成本高,实践中并不推荐

    对类目003上钻场景:

    + 类目表限制003

    + 通过类目id与桥接表的子类目id关联

    + 事实表中类目id与桥接表父类目id关联

    对类目001下钻场景:

    + 类目标限制001

    + 通过类目id与桥接表的父类目id关联

    + 事实表中类目id与桥接表子类目id关联


    多值维度

            事实表一条记录根据业务场景有时会关联多条维度表数据,如一个订单包含多个子订单,会关联到多个商品信息;购房信息中的夫妻联合买入,会关联到多个买房人。常用处理办法如下:

    1)降低事实表的粒度:如订单粒度降到子订单,就能实现一条事实表数据对应一个商品维表数据,但有时粒度并不能降低

    2)采用多字段:对于关联维度数据不多的情况可以采用多个字段的方式,考虑到扩展性可以采用预留字段的方式

    3)采用桥接表:表现灵活但是逻辑复杂,加工成本高


    杂项维度

    在事实表中可能存在多个类似的字段,如交易订单事实表的交易类型、交易状态、物流状态、交易流言等字段。保存在事实表中会造成事实表占用空间过大,保存在单独维表中会造成维度过多,所以建立一个杂项维度,统一存放这些字段

    相关文章

      网友评论

        本文标题:第八章 维度设计之特殊维度

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