首页
学习
活动
专区
圈层
工具
发布

大数据仓库开发规范示例

数仓分层定义 数仓主要包含ODS/DWD/DWS/DIM/DM几个标准化的分层,同时结合企业实际的情况,如补录的数据,在数据ETL过程中的临时处理数据等,根据用途汇总为贴源层、数据共享层、数据服务层。...④ DIM(Dimension): 数据维度层,存储维度(含主数据)信息表或配置表,来源数据质量高的ODS数据(如主数据)和DWD层数据。...事实表划分规范 在维度建模中,按粒度划分,数据表分为维度表和事实表,事实表包含三种:事务型事实表,周期快照型事实表,累计快照型事实表。...② 处理内容 源系统数据的采集和同步,保持和源系统数据的一致性。...② 处理内容 数据的完整性,包括实体的完整性(分段的业务表),数据行的完整性(不同阶段的业务周期的汇集),字段的完整性(关键业务字段) 数据清洗,对于脏数据按规则进行清洗,保障原子粒度的数据质量 维度关联映射

74300

(三)从分层架构到数据湖仓架构系列:数据仓库分层之贴源层和数据仓库层设计

对于数据量较小、变化缓慢的维度数据(如商品分类),全量存储能够保证数据完整性和易用性。...明细数据层(DWD):存储经过整理的细粒度数据,保持原始数据的完整性,但格式已适合进一步分析和使用。DWD层中的数据从ODS层数据加工而来,精细化了原始数据,确保高可用性。...这些事实表保留了业务过程的每一个细节,确保数据的完整性和精准性。在实际设计中,对于一些关键的属性字段,可以适当进行冗余处理,即采用宽表化设计,以提升查询效率,减少多表关联带来的性能开销。...维度表设计遵循星型模型原则,在必要时进行维度退化。确定事实事实是业务中的度量数据,如订单金额、购买次数等。事实表中的每条记录反映某一业务活动的度量结果。通过宽表设计适当冗余重要字段,以提高查询效率。...明细粒度事实表设计原则单维度关联:每个明细粒度事实表只应与一个核心维度关联,保持数据模型简单、清晰。业务过程相关性:仅包含与业务过程直接相关的事实数据,确保每个事实表准确反映其特定业务过程。

1.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【读书笔记】《 Hadoop构建数据仓库实践》第2章

    在选择主键时,我们可以参考以下原则: ● 主键要尽可能地小。 ● 主键值不应该被改变。主键会被其他表所引用。如果改变了主键的值,所有引用该主键的值都需要修改,否则引用就是无效的。...在图2-1中,员工表中的所属分公司是外键。该列的值要么是分公司表的分公司编号列中的值,要么是空(如新员工已经加入了公司,但还没有被分派到某个具体的分公司时)。...规范化程度越高,划分的表就越多,在查询数据时越有可能使用表连接操作。而如果连接的表过多,会影响查询的性能。关键的问题是要依据业务需求,仔细权衡数据查询和数据更新的关系,制定最适合的规范化程度。...2.声明粒度 在选择维度和事实前必须声明粒度,因为每个候选维度或事实必须与定义的粒度保持一致。 不同的事实可以有不同的粒度,但同一事实中不要混用多种不同的粒度。...Fact_Sales是唯一的事实表,Dim_Date、Dim_Store和Dim_Product是三个维度表。每个维度表的Id字段是它们的主键。

    1.4K20

    数仓入门篇-数仓分层

    设计原则:高复用性:所有下游层(DWD/DWS/ADS)都引用这里的维度ID。全量存储:维度表通常较小,建议每天全量覆盖或拉链表存储。...基于ODS数据进行清洗、规范化、脱敏、维度关联后生成的明细事实表。核心作用:数据清洗:去除脏数据、统一枚举值(如性别统一为0/1)、空值填充。...维度退化:将常用的维度属性(如商品名称、类目)直接冗余到事实表中,形成大宽表,减少后续查询的Join操作。业务过程建模:按照业务过程(下单、支付、发货、退款)划分主题。...核心作用:个性化交付:针对特定需求(如双11实时大屏、CEO日报)定制数据结构。复杂逻辑终结:包含跨主题域的复杂关联(如:结合交易DWS+流量DWS+用户DIM计算“高价值流失用户”)。...全流程案例演示:计算“2026年3月4日各省份的销售总额”老言带你们看一个指标是如何在各层流转的:Source(业务库):orders表:{id:101,user_id:88,amount:100,province_code

    35510

    Kettle构建Hadoop ETL实践(八-1):维度表技术

    本节说明如何在客户维度表和销售订单事实表上添加列,并在新列上应用SCD2,以及对定时装载Kettle作业所做的修改。图8-1显示了增加列后的数据仓库模式。 ?...与该子维度连接的事实表必须被限制在同样的产品子集。如果用户试图使用子集维度,访问包含所有产品的集合,则因为违反了参照完整性,他们可能会得到预料之外的查询结果。...三、角色扮演维度 单个物理维度可以被事实表多次引用,每个引用连接逻辑上存在差异的角色维度。例如,一个销售订单有一个订单日期,还有一个请求交付日期,这时就需要引用日期维度表两次。...我们期望在每个事实表中设置日期维度,因为总是希望按照时间来分析业务情况。在事务型事实表中,主要的日期列是事务日期,如订单日期。有时会发现其它日期也可能与每个事实关联,如订单事务的请求交付日期。...表别名是在SQL语句里引用维度表多次,每次引用都赋予维度表一个别名。而数据库视图,则是按照事实表需要引用维度表的次数,建立相同数量的视图。

    4.4K31

    HAWQ取代传统数仓实践(三)——初始ETL(Sqoop、HAWQ)

    表1汇总了示例中维度表和事实表用到的源数据表及其抽取模式。...有了对Sqoop增量导入的基本了解,下面看一下如何在本示例中使用它抽取数据。对于sales_order这个表采用基于时间戳的CDC拉取方式抽数据。...在装载事实表前,必须先装载所有的维度表。因为事实表需要引用维度的代理键。这不仅针对初始装载,也针对定期装载。 1....数据源映射         表3显示了本示例需要的源数据的关键信息,包括源数据表、对应的数据仓库目标表等属性。...但它的实现方法却与Oracle的sequence类似,当创建bigserial字段的表时,HAWQ会自动创建一个自增的sequence对象,bigserial字段自动引用sequence实现自增。

    1.8K71

    Greenplum 实时数据仓库实践(2)——数据仓库设计基础

    在选择主键时,我们可以参考以下原则: 主键要尽可能的小。 主键值不应该被改变。主键会被其它表所引用。如果改变了主键的值,所有引用该主键的值都需要修改,否则引用就是无效的。 主键通常使用数字类型。...规范化程度越高,划分的表就越多,在查询数据时越有可能使用表连接操作。而如果连接的表过多,会影响查询的性能。关键的问题是要依据业务需求,仔细权衡数据查询和数据更新的关系,制定最适合的规范化程度。...在一个事实所对应的所有维度设计中强制实行粒度一致性是保证数据仓库应用性能和易用性的关键。从给定的业务流程获取数据时,原始粒度是最低级别的粒度。...星型模式由事实表和维度表组成,一个星型模式中可以有一个或多个事实表,每个事实表引用任意数量的维度表。...图2-3 星型模式的销售数据仓库 Fact_Sales是唯一的事实表,Dim_Date、Dim_Store和Dim_Product是三个维度表。每个维度表的Id字段是它们的主键。

    2.5K30

    数据开发数仓工程师上手指南(三)数仓构建流程

    数据需求调研确定数据需求:识别各业务流程中的关键数据元素,如招标项目、投标公司、评标专家、评分标准等。确定需要收集的原始数据和所需的历史数据。...这有助于确保数据的一致性和完整性。...在招标业务中,可能的事实表包括:投标事实表(Fact_Bid)评标事实表(Fact_Evaluation)合同事实表(Fact_Contract)项目进度事实表(Fact_Project_Progress...)结算事实表(Fact_Settlement)2.2 列出所有的共享维度列出所有的数据域中共享的维度,例如:时间维度(Dim_Time)项目维度(Dim_Project)供应商维度(Dim_Supplier...)地理维度(Dim_Location)2.3 填写总线矩阵构建一个表格,将事实表和维度表对应起来。

    1.1K10

    Greenplum 实时数据仓库实践(6)——实时数据装载

    前期准备 为尽量缩短MySQL复制停止的时间,这步包含所有可在前期完成的工作: (1)在目标Greenplum中创建所需对象,如专用资源队列、模式、过渡区表、数据仓库的维度表和事实表等...代理键是维度表的主键。事实表引用维度表的代理键作为自己的外键,四个外键构成了事实表的联合主键。订单金额是当前事实表中的唯一度量。...事实表需要引用维度表的代理键,而且不一定是引用当前版本的代理键。比如有些迟到的事实,就必须找到事实发生时的维度版本。...有效的命令有select、insert、update或delete,可以使用关键字new或old引用表中的值。...注意规则中的执行顺序,要先插入维度表再插入事实表,因为事实表要引用维度表的代理键。

    3.2K20

    50000字,数仓建设保姆级教程,离线和实时一网打尽(理论+实战) 下

    ODS层设计规范 同步规范: 一个系统源表只允许同步一次; 全量初始化同步和增量同步处理逻辑要清晰; 以统计日期和时间进行分区存储; 目标表字段在源表不存在时要自动填充处理。...天时,建议保留最近120天分区; 3个月内最大访问跨度时,建议保留最近240天分区; 3个月内最大访问跨度时,建议保留最近400天分区; 2) 事务型事实表设计准则 基于数据应用需求的分析设计事务型事实表...3) 周期快照事实表 周期快照事实表中的每行汇总了发生在某一标准周期,如某一天、某周、某月的多个度量事件。 粒度是周期性的,不是个体的事务。...通常包含许多事实,因为任何与事实表粒度一致的度量事件都是被允许的。 4) 累积快照事实表 多个业务过程联合分析而构建的事实表,如采购单的流转环节。 用于分析事件时间和时间之间的间隔周期。...指标命名规范 公共规则 所有单词小写 单词之间下划线分割(反例:appName 或 AppName) 可读性优于长度 (词根,避免出现同一个指标,命名一致性) 禁止使用 sql 关键字,如字段名与关键字冲突时

    3.5K65

    OushuDB入门(五)——ETL篇

    在装载事实表前,必须先装载所有的维度表。因为事实表需要引用维度的代理键。这不仅针对初始装载,也针对定期装载。...但它的实现方法却与Oracle的sequence类似,当创建bigserial字段的表时,OushuDB会自动创建一个自增的sequence对象,bigserial字段自动引用sequence实现自增。...事实表需要引用维度表的代理键,而且不一定是引用当前版本的代理键。比如有些迟到的事实,就必须找到事实发生时的维度版本。...为了保证数据插入维度表时,代理键与业务主键保持相同的顺序,必须使用“order by coalesce(a_product_code, 999999999999), b_product_code limit...装载事实表时连接维度历史视图,引用事实数据所对应的维度代理键。该代理键可以通过维度版本的生效日期、过期日期区间唯一确定。 装载数据后,执行查询前,分析表以提高查询性能。

    1.6K20

    YashanDB数据库表设计与规范命名建议

    1.4 业务逻辑与约束在表设计过程中,应与业务逻辑紧密结合,设置必要的约束条件(如外键、唯一性约束、检查约束等)来保证数据的完整性与一致性。...2.2 统一前缀和约定在同一数据库中,应使用统一的前缀来划分表的类别,例如“Dim_”表示维度表,而“Fact_”表示事实表。...设计与命名的具体建议遵循第三范式进行数据库表设计,避免冗余数据。考虑业务需求,保持表设计的可扩展性与灵活性。选择合适的数据类型,并明确字段的最大长度及其他限制。...在设计约束(如外键、主键约束)时,使用明确的、统一的命名方式.定期对表结构及命名规范进行审查与优化,以适应业务发展需求。...结论随着数据量的增长与业务复杂性的提升,良好的数据库表设计与规范命名已成为保障系统性能与可维护性的关键。

    22810

    Greenplum 实时数据仓库实践(7)——维度表技术

    本节说明如何在客户维度表和销售订单事实表上添加列,并在新列上应用SCD2,以及对消费配置和rule定义所做的修改。图7-1显示了增加列后的数据仓库模式。 图7-1 增加列后的数据仓库模式 1....与该子维度连接的事实表必须被限制在同样的产品子集。如果用户试图使用子集维度,访问包含所有产品的集合,则因为违反了参照完整性,他们可能会得到预料之外的查询结果。...操作型事务中的控制号码,如订单号码、发票号码、提货单号码等通常产生空的维度并表示为事务事实表中的退化维度。 使用维度退化技术时先要识别数据,分析从来不用的数据列。...(2)保持事实表行中的标志位不变 以销售订单为例,和源数据库一样,我们可以在事实表中也建立这四个标志位字段。...(3)将每个标志位放入其自己的维度中 例如,为销售订单的四个标志位分别建立四个对应的维度表。装载事实表数据前先处理这四个维度表,必要时生成新的代理键,然后在事实表中引用这些代理键。

    3.1K40

    数据仓库建模基石:维度建模与范式建模深度对比与选型指南

    这些度量值通常被称为"事实",它们代表了业务过程中可量化的关键绩效指标。在设计事实表时,需要特别注意粒度的定义,即每条记录所代表的业务含义。合适的粒度选择直接影响后续分析的灵活性和准确性。...雪花模式特别适用于以下场景:维度属性具有明显的层级关系,如地理维度中的国家-省份-城市;或者某些维度属性被多个事实表共享,需要保持数据一致性。...事实表设计的关键要素 事实表的设计质量直接影响整个数据模型的可用性。在设计过程中,需要重点关注以下几个要素: 粒度定义是事实表设计的首要任务。...某些业务过程中的关键标识符,如订单编号、发票号码等,虽然具有维度特性,但通常作为事实表的属性存在,而不单独建立维度表。这样的设计既保持了业务的完整性,又避免了过度复杂的模型结构。...通过在产品表中引用供应商ID,在库存记录表中同时引用产品ID和仓库ID,建立了完整的关系网络。这种设计不仅减少了数据冗余,还确保了数据的引用完整性。

    64310

    Kettle构建Hadoop ETL实践(八-2):维度表技术

    销售订单数据仓库中没有递归结构,为了保持示例的完整性,将会使用另一个与业务无关的通用示例。...(2)保持事实表行中的标志位不变。 还以销售订单为例,和源数据库一样,可以在事实表中也建立这四个标志位字段。...例如为销售订单的四个标志位分别建立四个对应的维度表。在装载事实表数据前先处理这四个维度表,必要时生成新的代理键,然后在事实表中引用这些代理键。...如希望分析订单事实的审核情况,其订单属性包含“是否审核”标志位,如果使用杂项维度,维度表中只会有很少的记录。...(2)去掉客户维度装载里pa_customer_dim表的部分。 (3)在事实表中引用客户邮编视图和送货邮编视图中的代理键。

    2.7K31

    数据开发数仓工程师上手指南(二)数仓构建分层概念

    比如:销售数据域事实表:销售事实表(如销售交易、订单详情)维度表:产品维度表、客户维度表、时间维度表、销售人员维度表、地区维度表财务数据域事实表:财务事实表(如收入、支出、利润)维度表:账户维度表、时间维度表...如将地域维表分解为国家,省份,城市等维表。较低,共享的维度表为多个事实表提供描述信息。由于维度表被多个事实表共享,相比于每个事实表各自拥有独立的维度表,数据冗余度较低。...维度属性是查询约束条件、分组和报表标签生成的基本来源,是数据易用性的关键。维度属性的示例产品维度(Dim_Product):产品ID(Product_ID):唯一标识每个产品的主键。...它描述了如何在组织中进行工作,从开始到结束,涉及人员、系统、数据和其他资源的协调与合作。业务过程在数据仓库和维度建模中起着至关重要的作用,因为它们通常是数据仓库中的事实表的基础。...指标直接与业务活动相关,用于反映业务的关键绩效指标(KPIs),比如: 销售收入:衡量某一时间段内的总销售额。客户获取成本(CAC):获取一个新客户的平均成本。

    1.2K31

    HAWQ取代传统数仓实践(二)——搭建示例模型(MySQL、HAWQ)

    在实际应用中,基本信息表通常由其它后台系统维护。销售订单表有六个属性,订单号是主键,唯一标识一条销售订单记录。产品编号和客户编号是两个外键,分别引用产品表和客户表的主键。...一个好的数据目录是让用户体验到系统易用性的关键。HAWQ是数据库系统,自带元数据表。         查询引擎组件负责实际执行用户查询。...因为订单表的主键是自增的,为了保持主键值和订单时间字段的值顺序保持一致,引入了一个名为temp_sales_order_data的表,存储中间临时数据。在后面章节中都是使用此方案生成订单测试数据。...在变化数据捕获(CDC)时需要关联RDS和TDS的表,而HAWQ的外部表和内部表关联查询的速度是很慢的,在数据量非常大的情况下,更是慢到不能忍受。 通常维度数据量比事实数据量小得多。...事实表由维度表的代理键和度量属性构成。目前只有一个销售订单金额的度量值。 由于事实表数据量大,事实表采取分区表。事实表中冗余了一列年月,作为分区键。

    1.8K81

    Greenplum 实时数据仓库实践(8)——事实表技术

    因此,数据仓库中事实表的设计应该依赖于业务系统,而不受可能产生的最终报表影响。除数字类型的度量外,事实表总是包含所引用维度表的外键,也能包含可选的退化维度键或时间戳。...然而,事实表中的外键不能存在空值,否则会导致违反参照完整性的情况发生。关联的维度表必须用默认代理键而不是空值表示未知的条件。 很多情况下数据仓库需要装载如下三种不同类型的事实表。...事务事实表:以每个事务或事件为单位,例如一个销售订单记录、一笔转账记录等,作为事实表里的一行数据。这类事实表可能包含精确的时间戳和退化维度键,其度量值必须与事务粒度保持一致。...8.4 无事实的事实表 在多维数据仓库建模中,有一种事实表叫做“无事实的事实表”。普通事实表中,通常会保存若干维度外键和多个数字型度量,度量是事实表的关键所在。...建立新产品发布的无事实事实表 在TDS模式中新建一个产品发布的无事实事实表product_count_fact,该表中只包含两个字段,分别是引用日期维度表和产品维度表的外键,同时这两个字段也构成了无事实事实表的逻辑主键

    2.3K11

    Hive数据仓库建模实战:星型模型与雪花模型的构建与选择

    元数据存储使用关系型数据库(如MySQL)管理表结构、分区信息等元数据,这使得Hive在保持Hadoop分布式处理优势的同时,也能够提供类似传统数据库的表结构管理能力。...维度表的设计应当尽量保持扁平化,避免过度规范化,以减少查询时的表连接操作,这也是星型模型区别于雪花模型的关键点之一。 星型模型在数据仓库中的优势主要体现在以下几个方面。...其次,由于维度表直接与事实表关联,查询时通常只需一次连接操作,这大大提升了查询性能,特别适合OLAP(联机分析处理)场景下的复杂聚合操作。...数据加载 完成表创建后,下一步是将数据加载到Hive表中。数据可以来自多种源,如HDFS文件、其他Hive表或外部数据库。以下示例演示如何从HDFS中的CSV文件加载数据到维度表和事实表。...数据模型维护与演进 随着业务需求的变化,数据模型可能需要进行调整,如新增维度、变更粒度或重构表结构。如何在不停服的情况下平滑演进模型,是一个需要细致规划的挑战。

    63310
    领券