数据仓库设计-分层
表设计与规划
- DWD层:基于业务活动事件构建,每个表对应一个具体业务过程,可适当冗余重要维度属性,提高易用性。命名规范如
dwd_{业务分类}_{数据域}_{业务过程}_{自定义内容}_{存储策略}_
。 - DWS层:根据分析主题构建汇总指标,考虑数据时效性与存储策略。命名规范如
dws_{业务分类}_{数据域}_{自定义内容}_{时间周期}_
。 - ADS层:面向业务分析需求,构建直接可用的分析指标表,进一步汇总和优化数据,提高分析效率。命名规范如
ads_{业务分类}_{数据集市}_{主题域}_{自定义内容}_{时间周期}_
。
DWD
在DWD层(明细数据层)的设计中,每个表直接映射到一个具体的业务过程,这是对业务活动深入分析的基础。
要体现主题,主要通过以下几个方面:
-
业务分类与数据域明确:表命名中的{业务分类}和{数据域}部分直接指明了数据所属的业务领域和范畴,如电商行业的交易、广告投放、用户行为分析等,这有助于区分和归类不同业务场景的数据,体现了数据的主题方向。
-
业务过程为核心:通过_{业务过程}_这一部分,每个表直接关联到一个详细的业务活动或流程,比如订单生成、支付完成、用户登录等。这些业务过程是分析的主体,它们定义了数据的产生背景和分析的出发点,确保数据表紧密围绕特定的业务活动构建,从而鲜明地体现了数据的主题性。
-
维度属性的整合:虽然DWD层鼓励对重要维度属性进行适当冗余以提高查询效率和易用性,这种设计也是基于对业务主题的深刻理解。通过预计算和整合与业务过程紧密相关的维度信息,使得分析时能够快速聚焦于特定主题,无需频繁关联其他表,增强了数据表在特定业务分析场景下的直接可用性。
-
自定义内容灵活性:_{自定义内容}_部分允许根据实际分析需求加入更多描述性信息,这部分可以是对业务过程的进一步细分或是特定分析视角的标识,确保表结构能够灵活适应多样的分析主题。
-
存储策略与主题时效性:虽然存储策略如_{存储策略}_看似与主题体现无关,但它间接影响数据的保留周期和访问效率,对于时效性强的主题(如实时销售分析),合理的存储策略能保证数据的新鲜度,从而更好地服务于该主题的即时分析需求。
综上所述,DWD层通过精确的业务过程对应、维度属性的整合、以及命名规范中对业务分类、数据域和自定义内容的明确,确保了每张表都紧密围绕特定的业务主题构建,从而在数据层面清晰体现了分析的主要方向和焦点。
DWS
在DWS层的命名规范中,主题体现在{业务分类}_{数据域}_{自定义内容}
这一部分。具体来说:
- 业务分类:指明了数据所属的业务领域,帮助区分不同业务单元的数据,确保分析时能够快速定位到相关业务背景。
- 数据域:定义了数据的产生环境或业务过程,如消费者域、商品域、交易域等,它体现了数据的来源和主要特征,直接关联到具体的业务活动或事件,是构建分析主题的基础。
- 自定义内容:这部分提供了额外的描述信息,可以根据具体分析需求灵活设定,用来进一步细化和明确分析的主题。例如,如果分析关注的是“用户购买行为”,那么“购买行为”就可能作为自定义内容来体现主题。
综上,通过这三个部分的组合,命名规范不仅体现了数据的业务归属和技术范畴,更重要的是明确了分析的主要焦点或目的,即分析主题。这样的命名方式有助于提高数据模型的可读性和维护性,使得数据分析师或其他使用者能够快速理解表的用途和所承载的业务含义。
ADS层(Application Data Service)
设计基于以下几个核心原则和考量:
-
分析主题对象驱动:ADS层直接面向具体的业务分析需求,其设计核心在于明确的分析主题。这意味着表结构和内容需紧密围绕业务部门或产品团队的具体分析目标来构建,确保提供的数据能够直接服务于决策制定或业务洞察。
-
汇总指标复用性:ADS层构建在DWS层(汇总数据层)之上,利用DWS层预计算的公共粒度汇总指标,进一步提炼和组织数据,形成面向业务场景的更高层次汇总或定制化指标。这样的设计旨在提高数据的复用性和查询效率,减少重复计算,加速分析过程。
-
时间周期适应性:考虑到业务分析往往关注特定时间范围的表现,ADS层的表设计会明确标注时间周期(如_1d、_td、_nd),便于用户根据需要快速获取日、周、月等不同时间跨度的数据。
-
易于理解和操作:为了提升业务用户的使用体验,ADS层的表和字段命名应直观反映其业务含义,遵循清晰的命名规范,如_ads_{业务分类}{数据集市}{主题域}{自定义内容}{时间周期}_,使得非技术背景的用户也能轻松理解并操作数据。
-
灵活扩展性:随着业务发展和分析需求的变化,ADS层设计需具备良好的扩展性,能够快速响应新增的分析主题或细化的指标需求,同时保持数据模型的稳定性和一致性。
综上所述,ADS层的设计理念是高度面向业务分析的实际需求,通过高效复用汇总数据、明确的时间周期界定、直观的表结构设计以及灵活的扩展机制,确保数据服务能够精准、高效地支持各类业务决策和市场洞察。
举例说明
在电商数据分析的场景中,我们可以以"订单交易"作为一个主题,来说明其在Data Warehouse(数据仓库)不同层次——明细层(DWD, Detail Data Warehouse),汇总层(DWS, Data Warehouse Service),以及应用层(ADS, Application Data Service)的设计,以及该主题域的划分。
DWD(明细数据层)设计
表名: dwd_ec_trd_create_ord_di
- 层级: DWD
- 主题域: 公共层_电商业务_交易域
- 二级主题: 下单
描述: 在DWD层,针对"订单交易"主题,我们会存储详细的订单创建事件数据。这包括了订单生成的每一个细节,如订单编号、用户ID、商品ID、购买数量、下单时间等。这些数据通常来源于贴源层(ODS)的订单表,经过清洗、去重、丰富等处理后形成,为后续分析提供最基础的数据支撑。
DWS(汇总层)设计
表名: dws_ec_trd_cate_commodity_gmv_kpi_fy
- 层级: DWS
- 主题域: 公共层_电商业务_交易域
- 二级主题: 无
描述: 在DWS层,针对"订单交易"主题,我们关注的是更高层次的汇总指标,比如按商品类别统计的总成交额(GMV)关键绩效指标。这类数据通常是对DWD层的明细数据进行聚合计算得到的,例如按日期、商品类别汇总订单金额,用于监控不同商品类别的销售表现和趋势分析。
ADS(应用层)设计
表名: ads_ec_ec360_gmv_kpi_overview
- 层级: ADS
- 主题域: 应用层_电商业务_电商集市
- 二级主题: 电商360
描述: 在ADS层,针对"订单交易"主题,我们构建面向业务决策者的综合视图,如电商360概览。此表可能包含了跨多个维度(如时间、地区、商品类别)的订单交易汇总信息,如总销售额、订单量等关键指标,以及可能的趋势分析、预测等高级分析结果。这些信息直接服务于管理层的决策需求,帮助他们快速了解整体业务状况并做出相应策略调整。
主题域划分
在上述案例中,"订单交易"这一主题被划分在了"公共层_电商业务_交易域"下,它覆盖了从用户下单到支付完成的整个交易过程。在DWD层,我们关注数据的原始细节;DWS层则聚焦于这些细节数据的汇总与关键指标计算;而到了ADS层,则进一步提炼为面向业务决策的高阶信息展示。这样的分层设计不仅保证了数据处理的效率,也确保了数据的灵活性和可用性,满足不同层级的分析需求。