
做一个数仓项目的前提是需要分析指标体系对指标体系进行一个拆分知道一个需求指标依赖于什么指标。1指标体系中指标的类型指标类型一共有三大类原子指标基于某一业务事件行为下的度量是业务定义中不可再拆分的最小计算单元。-- 业务过程从哪张表查询-- 度量对哪一列进行分析 -- 聚合逻辑count,sum等聚合方式“原子指标是与具体统计维度无关的”。例如“支付金额”是原子指标但“最近7天各渠道支付金额”是派生指标。原子指标只定义“算什么”和“怎么算聚合方式”不包含“在哪算粒度/限定”。派生指标依赖于原子指标在进行进一步的聚合统计-- 原子指标 -- 统计周期间隔多久统计一次-- 统计粒度group by -- 业务限定where衍生指标依赖于派生指标通常需要两个派生指标进行计算一般是占比比率等指标的统计-- 派生指标 -- 计算逻辑可能是派生指标 / 派生指标或者是基于派生指标进一步的统计2具体指标的拆分电商数仓中流量域指标体系的拆分指标一最近1、7、30日各渠道访客数指标二最近1、7、30日各渠道会话平均浏览页面数指标三最近1、7、30日各渠道跳出率指标四最近1、7、30日页面浏览路径分析3.拆分指标的方法论第一步先判断这个指标是否可以再拆分。例如上面的最近1、7、30日各渠道会话平均浏览页面数除了我上面拆分成会话页面浏览数拆分成这个的原因是因为有avg聚合函数可以直接统计。除此之外可以拆分成页面浏览的总数以及会话的总数这两个派生指标两者相除也可以得到这个衍生指标。层级指标名称构成/计算逻辑备注衍生指标各渠道会话平均浏览页面数会话页面浏览总数 / 会话总数最终需求指标派生指标A最近N天各渠道会话页面浏览总数原子指标(页面浏览数) 周期(N天) 粒度(渠道)分子派生指标B最近N天各渠道会话总数原子指标(会话数) 周期(N天) 粒度(渠道)分母原子指标页面浏览数业务过程(页面浏览) 度量(page_id) 聚合(count)不可再分原子指标会话数业务过程(会话) 度量(session_id) 聚合(count_distinct)不可再分第二步判断指标是否依赖于其他的指标。例如上面的最近1、7、30日各渠道跳出数量。通过分析我们可以知道这个指标依赖于另一个指标各会话的页面浏览次数所以我们需要先求出页面浏览次数。第三步拆分出原子指标原子指标不可再拆分只要确定了这个指标直接就可以通过现有的表可以直接求出来这个指标就是原子指标。4.抽取相同统计周期统计粒度业务限定的逻辑为DWS层的中间表在指标拆分中我们发现很多的派生指标的统计周期统计粒度业务限定都相同。这会造成数据的重复读取和数据的重复计算非常影响统计分析的效率我们就可以将这些相同的逻辑抽取出来作为一张中间表来进行存储后续指标计算需要用到的时候就不需要再从头计算而是直接就可以复用这个中间表。DWS层就是专门用来存储这样的中间表所以可以将这些表存储到DWS层中。后续ADS做需求分析是优先到DWS层中找如果有相关的表可以直接用来计算。DWS层没有找到再去DWD DIM层寻找。因为对于一些特定需求的指标我们就没有必要抽取出来中间表这样反倒会影响性能毕竟中间表需要落盘额外会消耗资源。