数据仓库ods基础学习.
ods层方案
ods层方案
数据仓库的ODS(Operational Data Store)层方案主要包括以下几个步骤:
1. 数据抽取和加载:从业务系统中抽取数据,并确保数据的及时性和准确性。
2. 数据清洗和加工:对数据进行初步的清洗和加工,例如去重、格式化、转换等,使其符合企业的业务需求和规范。
3. 数据分类和组织:将数据按照相关业务进行分类和组织,方便后续的数据整合和分析。
4. 设计数据结构:根据业务需求和数据特点,设计合理的数据结构,包括表结构、索引、分区等,以满足数据查询和检索的高效性和灵活性。
5. 数据交互和转换:确保ODS层与其他层级之间的数据交互和数据转换的正确性和稳定性。
此外,设计ODS层时还需要注意以下几点:
1. 实时采集和存储操作性数据。
2. 支持数据仓库ETL过程,将ODS层中的数据转换为适合DW层使用的格式。
3. 支持历史数据追溯,以便用户进行历史趋势分析。
4. 减轻源系统负担,提高系统性能。
5. 增量变化的获取。
在实施ODS层方案时,需要根据实际情况选择合适的数据同步方式,如文
件抽取、数据库表的抽取或原始日志的抽取等。
例如,如果ODS层需要对
接多个不同类型的业务系统库,一种比较简单实用的做法是和各个业务系统约定好数据接口,并让业务系统按照数据接口格式生成数据文件和完结标示文件给到ODS。
这种方式可以降低ODS处理多种类型数据库系统能力需求,同时也减少了对业务系统的性能影响。
操作数据存储ODS和数据集市详解ppt课件
在这个阶段,将把第一步生成的每个ER图中的实体进行分解,分解 的结果仍以ER表示为佳。
13
3 建立ODS 3.1 ODS数据模型设计
数据延迟时间越短,ODS建设难度越高。 其中I 类ODS的建设难度最高,建设成本也是最高的。而且由于I 类
ODS的实时性,对于技术的要求与其它类型ODS也有所不同,一般 来讲需要用到EAI技术,但随着当前企业对数据仓库的实时性要求越 来越高,相信I 类ODS会变得越来越重要。 通常在企业应用架构中,ODS是一个可选件,但一旦需要用到ODS 的功能,那么ODS本身就将变得极为重要。 目前应用的比较多的是IV 类ODS,因为一旦将决策分析结果加载到
定义主题
主题名称和含义,说明该主题主要包含哪些数据,用 于什么分析;
主题所包含的维和度量;
主题的事实表,以及事实表的数据。
定义粒度
主题中事实表的数据粒度说明,这种粒度可以通过对 维的层次限制加以说明,也可以通过对事实表数据的 业务细节程度进行说明。
定义存储期限
主题中事实表中的数据存储周期。
7
ODS中,重要决策信息的高性能联机支持将成为可能。
2 DB-ODS-DW体系结构 2.1 简单结构
DB 应用
DB DB 操作型环境
ODS
特点:1)ODS的记录在DB中; 2)DW的记录在ODS中。
DW 分析型环境
8
2 DB-ODS-DW体系结构 2.2 复杂结构
ODS
Relational
Appl. Package
[数据仓库]分层概念,ODS,DM,DWD,DWS,DIM的概念
[数据仓库]分层概念,ODS,DM,DWD,DWS,DIM的概念前⾔:不是做数仓的,但是也需要了解数仓的知识。
其实分层好多因⼈⽽异,问了同事好多分层的区别也不是很清晰。
所以后续有机会还是跟数仓的同事碰⼀下吧~⼀. 各种名词解释1.1 ODS是什么?ODS层最好理解,基本上就是数据从源表拉过来,进⾏etl,⽐如mysql 映射到hive,那么到了hive⾥⾯就是ods层。
ODS 全称是 Operational Data Store,操作数据存储.“⾯向主题的”,数据运营层,也叫ODS层,是最接近数据源中数据的⼀层,数据源中的数据,经过抽取、洗净、传输,也就说传说中的 ETL 之后,装⼊本层。
本层的数据,总体上⼤多是按照源头业务系统的分类⽅式⽽分类的。
但是,这⼀层⾯的数据却不等同于原始数据。
在源数据装⼊这⼀层时,要进⾏诸如去噪(例如有⼀条数据中⼈的年龄是300 岁,这种属于异常数据,就需要提前做⼀些处理)、去重(例如在个⼈资料表中,同⼀ ID 却有两条重复数据,在接⼊的时候需要做⼀步去重)、字段命名规范等⼀系列操作。
1.2 数据仓库层DW?数据仓库层(DW),是数据仓库的主体.在这⾥,从 ODS 层中获得的数据按照主题建⽴各种数据模型。
这⼀层和维度建模会有⽐较深的联系。
细分:1. 数据明细层:DWD(Data Warehouse Detail)2. 数据中间层:DWM(Data WareHouse Middle)3. 数据服务层:DWS(Data WareHouse Servce)1.2.1 DWD明细层?明细层(ODS, Operational Data Store,DWD: data warehouse detail)概念:是数据仓库的细节数据层,是对STAGE层数据进⾏沉淀,减少了抽取的复杂性,同时ODS/DWD的信息模型组织主要遵循企业业务事务处理的形式,将各个专业数据进⾏集中,明细层跟stage层的粒度⼀致,属于分析的公共资源数据⽣成⽅式:部分数据直接来⾃kafka,部分数据为接⼝层数据与历史数据合成。
数据仓库知识点总结
数据仓库知识点总结一、数据仓库概念数据仓库是一个用来集成、清洗、存储和管理企业数据的系统,以支持企业决策制定、分析和商业智能服务。
它是一个面向主题的、集成的、时间性的、非易失的数据集合,用于支持企业决策。
数据仓库是企业数据管理的重要组成部分,它与操作型数据处理系统相辅相成。
数据仓库以不同的视角和角度组织数据,帮助企业管理者对企业整体情况进行全面分析和评估。
二、数据仓库的特点1. 面向主题:数据仓库与传统数据库相比,更加侧重对业务应用的支持,主要面向业务应用的主题而不是基本事务数据,以方便企业管理者进行更好的分析和决策。
2. 集成性:数据仓库集成了来自不同数据源的数据,将数据统一管理,并且进行了数据清洗和转换,确保数据的一致性和准确性。
3. 时态性:数据仓库中的数据具有时间性,可以保存历史数据,能够支持分析历史数据的趋势和变化。
4. 非易失性:数据仓库中的数据不会丢失,可以持久保存,并且根据需要定期备份,确保数据的安全和可靠。
5. 大数据量和复杂性:数据仓库通常包含大量的数据,并且数据之间的关系复杂,需要采用专门的数据模型和处理方法来管理和分析。
6. 以支持决策为目标:数据仓库的目标是为企业管理者提供数据支持,帮助他们更好地了解企业的经营状况和趋势,以支持企业决策。
三、数据仓库架构数据仓库架构包括了多个重要组成部分,主要包括数据提取、数据清洗、数据转换、数据加载、元数据管理和数据查询分析等。
1. 数据提取:数据提取是指从各个数据源中将需要的数据提取出来,数据源可以包括企业内部的数据库、文件系统、应用系统等,也可以包括外部数据源,如公共数据等。
2. 数据清洗:数据清洗是指对提取的数据进行清洗和规范,包括去重、校验、纠错、转换等处理,以确保数据的准确性和一致性。
3. 数据转换:数据转换是指对清洗后的数据进行格式转换、相关联和整合,以便于数据仓库的统一管理和分析。
4. 数据加载:数据加载是将转换后的数据载入数据仓库中,通常包括全量加载和增量加载两种方式,以确保数据的及时性和准确性。
数据仓库开发培训(4)-数据仓库基础
-3-
数据仓库开发系列培训
1 基础理论
数据仓库基础
概念
数据仓库之父 William H. Inmon 在 1991 年出版的“Building the Data Warehouse”一书中所 提出的定义 被广泛接受 ——数据仓库(Data Warehouse)是一个面向主题的( Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant) 的数据集合,用于支持管理决策(Decision Making Support)。
本文内容
本文从理论和实际例子两方面阐述了数据仓库的基础,以求听众对数据仓库有一个宏观 上的认识。
阅读说明
本文主要面向数据库设计和开发人员和性能调优人员。
杭州滨江 2013 年 7 月 3 日
-2-
数据仓库开发系列培训
目录
数据仓库基础
培训介绍...................................................................................................................................... - 2 本文内容...................................................................................................................................... - 2 阅读说明...................................................................................................................................... - 2 1 基础理论.................................................................................................................................. - 4 -
浅析数据库(DB)、操作数据存储(ODS)和数据仓库(DW)的区别与联系
浅析数据库(DB)、操作数据存储(ODS)和数据仓库(D W)的区别与联系文章背景:相信大部分刚接触上面三个概念的同学,都多多少少会有些迷惑,现在我就给大家简单分析下这三者的关系,希望大家对这三者的概念理解有所帮助吧。
本文主要从下面两类关系来叙述上面三者的关系:1. 数据库(DB)和数据仓库(DW)的区别与联系2. 操作数据存储(ODS)和数据仓库(DW)的区别与联系数据库与数据仓库的区别与联系数据库与数据仓库基础概念:数据库:传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。
数据仓库:数据仓库系统的主要应用主要是OLAP(On-Line Analytical Proces sing),支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
OLTP和OLAP概念补充:数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction proc essing)、联机分析处理OLAP(On-Line Analytical Processing)。
OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。
OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
OLTP 系统强调数据库内存效率,强调内存各种指标的命令率,强调绑定变量,强调并发操作;OLAP 系统则强调数据分析,强调SQL执行市场,强调磁盘I/O,强调分区等。
举一个具体的例子:(转自知乎作者:陈诚),个人觉得例子描述的很清晰举个最常见的例子,拿电商行业来说好了。
基本每家电商公司都会经历,从只需要业务数据库到要数据仓库的阶段。
第一阶段,电商早期启动非常容易,入行门槛低。
找个外包团队,做了一个可以下单的网页前端+ 几台服务器+ 一个MySQL,就能开门迎客了。
这好比手工作坊时期。
第二阶段,流量来了,客户和订单都多起来了,普通查询已经有压力了,这个时候就需要升级架构变成多台服务器和多个业务数据库(量大+分库分表),这个阶段的业务数字和指标还可以勉强从业务数据库里查询。
数仓分层设计方案
数仓分层设计方案一、ODS层(原始数据层,Original Data Store)这层就像是数据的大仓库,不管是从哪儿来的数据,什么格式的,是数据库里导出来的,还是从文件里读出来的,一股脑儿全放在这儿。
就好比是把外面世界各种各样的原材料都堆到一个大院子里,先不管乱不乱,反正先存起来再说。
比如说从各个业务系统像销售系统、库存系统、客户管理系统里直接拉过来的数据,就原封不动地放在这儿,这个时候数据可能是各种各样的脏数据,就像刚从地里挖出来带泥的萝卜,但是没关系,这是第一步嘛。
二、DWD层(明细数据层,Detail Data Warehouse)从ODS层拿到数据之后,就开始在这层清理数据了。
把那些脏东西去掉,就像把萝卜上的泥洗干净一样。
对数据进行一些简单的处理,像数据格式的统一啊,把日期格式都搞成一样的,把一些明显错误的数据给修正或者标记出来。
这里的数据是按照业务主题来组织的,比如说销售相关的数据就放在一块儿,库存相关的放一块儿。
这层就像是把原材料初步加工分类,让数据变得稍微整齐一点,这样后面用起来就方便多啦。
三、DWS层(轻度聚合层,Data Warehouse Summary)到了这层,就开始做一些小的聚合操作了。
就像是把洗好切好的萝卜、青菜啥的,做一些简单的搭配组合。
比如按照地区统计销售总额、按照时间段统计库存的变化量。
这层的数据是从DWD层的数据聚合来的,它能让我们从更宏观一点的角度去看数据,但是还没有特别汇总,还保留了一定的明细信息,就像我们做的是几个小菜的拼盘,还能看到每个菜的大概样子。
四、ADS层(应用数据层,Application Data Store)这是最上面一层啦,这层的数据就是专门为了各种应用场景准备的。
比如说给领导看的报表数据,或者是给某个特定业务部门用的数据。
这层的数据就像是把前面那些加工好的菜,做成了精致的套餐,直接端到顾客(也就是使用数据的人)面前。
这个数据就是根据具体的需求高度定制的,比如说领导想要看每个季度不同产品线的利润情况,那在这层就把相关的数据按照要求整理好,让领导一眼就能看到他想看的东西。
数仓的标准层
数仓的标准层
数仓的标准层通常分为以下四层:
1.ODS层(临时存储层):为接口数据的临时存储区域,为后一步的数据处理做准备。
一般来说,ODS层的数据和源系统的数据是同构的,主要目的是简化后续数据加工处理的工作。
2.PDW层(数据仓库层):数据应该是清洗后、准确且一致的数据。
这层的数据一般遵循数据库第三范式,其数据粒度通常和ODS的粒度相同。
3.MID层(数据集市层):这层数据是面向主题来组织数据的,通常是星形或雪花结构的数据。
从数据粒度来说,这层的数据是轻度汇总级的数据,已经不存在明细数据了。
4.APP层(应用层):这层数据是完全为了满足具体的分析需求而构建的数据,也是星形或雪花结构的数据。
从数据粒度来说是高度汇总的数据。
数仓的标准分层只是一个建议性质的标准,实际实施时需要根据实际情况确定数据仓库的分层,不同类型的数据也可能采取不同的分层方法。
数据仓库概念汇总
MDD 多维数据库(Multi-Dimensional Database ,MDD)可以简单地理解为:将数据存放在一个 n 维数组中,而
不是像关系数据库那样以记录的形式存放。因此它存在大量稀疏矩阵,人们可以通过多维视图来观察数据。多维 数据库增加了一个时间维,与关系数据库相比,它的优势在于可以提高数据处理速度,加快反应时间,提高查询 效率。
库或数据仓库中提取人们感兴趣的知识,这些知识是隐含的、事先未知的、潜在有用的、易被理解的模式。
KPI 企业关键业绩指标(KPI:Key Process Indication)是通过对组织内部流程的输入端、输出端的关键参数进行设
置、取样、计算、分析,衡量流程绩效的一种目标式量化管理指标,是把企业的战略目标分解为可操作的工作目 标的工具,是企业绩效管理的基础。
效指标(KPIs)等先进信息技术和管理理论为基础的战略管理的工具,在财务、客户、内部流程和学习与发展四个维 度上进行综合绩效评测,帮助企业从整体上实现对战略实过程的贯彻和控制。
BPR 业务流程重整(Business Process Reengineering),指利用数据仓库技术,发现并纠正企业业务流程中的弊
严格遵照 Codd 的定义,自行建立了多维数据库,来存放联机分析系统数据的 Arbor Software,开创了多维数 据存储的先河,后来的很多家公司纷纷采用多维数据存储。被人们称为 Multi-Dimension OLAP,简称 MOLAP,代 表产品有 Hyperion(原 Arbor Software)Essbase、Showcase STRATEGY 等。 ODS
对于数据仓库的概念我们可以从两个层次予以理解,首先,数据仓库用于支持决策,面向分析型数据处理, 它不同于企业现有的操作型数据库;其次,数据仓库是对多个异构的数据源有效集成,集成后按照主题进行了 重组,并包含历史数据,而且存放在数据仓库中的数据一般不再修改。
ODS在数据仓库中的应用
运营数据存储(The operational data store, ODS)或称操作型数据存储是一个面向主题的、集成的、当前的并且是可"挥发"的数据集合,它反映了在某一个时间切片瞬间,经营分析系统和外围系统(BOSS、MIS...)用以相互交换数据的集合,主要用于经营分析系统与外围系统关键数据一致性校验、以及经营分析系统对其它外围系统的决策支持数据的回馈,回馈数据包括以客户扩展属性为主体的详细资料等。
运营数据存储扮演的是用于数据稽核与交互的角色。
ODS 的存储结构是以企业范围所有相关业务系统的数据,以全面、统一进行关系型实体来体现的,ODS中的数据是基于分析主题进行组织,而不是基于业务系统的功能进行组织。
ODS只是存储了当前的数据且数据是“挥发”性的,因此其数据的刷新是很快,过期的数据将要被挥发掉。
因此ODS的存储量取决于业务接口数据的抽取与刷新频率,取决于企业的服务客户的数量。
从ODS的作用和实现来说,ODS将各个孤立的业务系统的运营数据集成起来,现成全企业的统一数据视图,同时可实现ODS的数据共享。
ODS数据稽核功能是根据ODS参与工作的实际情况建立相应的ODS,并控制其权限。
ODS数据稽核主要涵盖下面的内容:界定关键数据稽核的项别与内容、获取数据稽核所需数据、稽核所需数据完整性、数据稽核报告的存储和稽核数据的更正等过程。
ODS数据交互的价值体现在经营分析系统高度综合数据向其它外围系统的回流。
如果从安全上考虑,回流数据的格式可以采用文本的方式,用户只需登入经营分析系统网站,切入ODS数据交互应用,下载文本即可,如果指定上载路径, ODS数据交互程序调度模块自动在指定周期,把预定义的内容上载到指定路径。
但如果从实现的方便、快捷、可维护性考虑可以采用数据库方式,即外围系统与经营分析系统之间相互约定好数据提供格式,可以由外围系统根据需要,以应用程序的方式登入到经营分析系统ODS数据库,直接把ODS 的高度综合数据导入到自己的数据库系统。
ods方案
ODS方案1. 简介ODS(Operational Data Store)是一种用于集成和存储企业各种操作型数据的存储方案。
ODS的目标是提供一个一致、完整、可靠的数据源,以支持企业内外部各种业务需求和数据需求。
本文档将介绍ODS方案的概念、重要性、实施步骤以及相关的最佳实践。
2. ODS的概念ODS是一个存储和管理企业操作型数据的中间层,它可以集成来自不同业务系统和数据源的数据,并提供标准化、一致的数据模型和接口。
ODS旨在解决企业内部各种数据源之间的数据一致性问题,并提供一个高效、可靠的数据仓库,为企业的决策支持和业务分析提供可信的数据来源。
ODS的特点包括: - 高性能:ODS需要以低延迟、高吞吐量的方式处理和存储数据,以满足实时的业务需求。
- 可扩展性:ODS需要能够容纳大量的数据源,并随着业务的扩张不断扩展。
- 可靠性:ODS需要提供高可用性和数据冗余,以确保数据的安全性和可靠性。
- 数据一致性:ODS需要对接不同类型的数据源,并保证数据在不同系统之间的一致性。
3. ODS的重要性ODS在企业中起着至关重要的作用,它可以帮助企业解决各种数据管理和数据一致性的挑战。
下面是ODS的几个重要作用:3.1 数据整合和一致性企业内部往往存在着各种不同的业务系统和数据源,这些系统和数据源之间的数据格式和结构可能不一致,这给数据整合和分析带来了很大的困难。
ODS可以作为一个中间层,将各种数据源的数据整合并进行转换,以提供标准化、一致的数据模型和接口。
3.2 决策支持和业务分析ODS提供了一个可信、完整、一致的数据源,可用于企业的决策支持和业务分析。
企业可以基于ODS的数据进行数据挖掘、业务分析和可视化,从而帮助企业发现隐藏的业务规律和趋势,做出更准确的决策。
3.3 业务流程优化通过对ODS中的数据进行分析和挖掘,企业可以更好地理解和优化自身的业务流程。
ODS可以为企业提供实时的、全面的业务数据,帮助企业发现业务流程中的瓶颈和问题,并优化相关流程,提高企业的效率和竞争力。
数据仓库中ODS、DW与DM之间关系
数据仓库中ODS、DW与DM之间关系在数据仓库架构中ODS(操作数据存储)、DW(数据仓库)和DM(数据集市)是不同的层次。
它们之间有明显的区别,并且相互协作来支持数据管理和分析,具体详见下图:接下来分别对ODS、DW和DM进行详细介绍。
ODS介绍ODS是操作性数据(Operational Data Store) 简称:操作性数据存储。
ODS是数据仓库中的一个中间层,它主要用于将源系统的数据进行整合和转换,但并不进行复杂的分析或聚合。
ODS 旨在保留源系统数据的完整性,支持实时或接近实时的数据访问和操作。
它通常包含原始数据和经过简单处理的数据。
特征如下:●ODS直接存放从业务抽取过来的数据,这些数据从结构和数据上与业务系统保持一致,降低了数据抽取的复杂性。
●转移一部分业务系统的细节查询功能,因为ODS存放的数据与业务系统相同,原来有业务系统产生的报表,现在可以从ODS中产生。
●完成数据仓库中不能完成的功能,ODS存放的是明细数据,数据仓库DW或数据集市DM都存放的是汇聚数据,ODS提供查询明细的功能。
●ODS数据只能增加不能修改,而且数据都是业务系统原样拷贝,所以可能存在数据冲突的可能,解决办法是为每一条数据增加一个时间版本来区分相同的数据。
DW介绍DW是数据仓库(Data Warehouse)的简称:DW是一个经过专门处理和优化的数据存储区域,用于支持复杂的分析、查询和报告。
DW采用了不同的数据模型(如星型模型或雪花模型)和聚合技术,以提供快速的决策支持和报表功能。
DW具有历史数据存储、集成和标准化数据等特点,可以满足企业级的数据分析需求。
特征如下:●效率足够高,要对进入的数据快速处理。
●数据质量高,数据仓库是提供很多决策需要的数据支撑,DW的数据应该是唯一的具有权威性的数据,企业的所有系统只能从DW取数据,所以需要定期对DW里面的数据进行质量审,保证DW里边数据的唯一、权威、准确性。
●扩展性,企业业务扩展和降低企业建设数据仓库的成本考虑●面向主题,数据仓库中的数据是按照一定的主题域进行组织的,每一个主题对应一个宏观的分析领域,数据仓库排除对决策无用的数据,提供特定主题的简明视图。
ODS
MBOSS中对ODS的定位的描述有3点:1、作为数据仓库的数据源2、作为各个系统之间交换数据的平台3、在ODS上可以做一些查询和分析的应用这样看来,ODS和Data Warehouse的区别还是比较明显的,在数据的实效上,ODS是实效性比较强的数据,DW中主要是历史数据;在操作特性上,ODS相当于介于OLTP和OLAP之间,DW主要是OLAP应用。
信息处理的多层次要求导致了一种新的数据环境——DB-DW的中间层ODS(操作型数据存储)的出现。
ODS是“面向主题的、集成的、当前或接近当前的、不断变化的”数据。
通过统一规划,规范框架和数据,ODS可以实现操作型数据整合和各个系统之间的数据交换,能够提供实时操作型报表,减轻数据仓库的负担,还可以为数据仓库后期建设做好准备。
什么是ODS?ODS全称为Operational Data Store,即操作型数据存储,是“面向主题的、集成的、可变的、反映当前数据值的和详细的数据的集合,用来满足企业综合的、集成的以及操作型的处理需求”(Bill.Inmon)。
ODS是数据仓库体系结构中的一个可选部分,ODS具备数据仓库的部分特征和OLTP系统的部分特征。
1.1 ODS的出现系统应用集成中一般把各系统的数据分为两类:操作型数据,有细节化、分散化的特点;决策型数据,有综合化、集成化的特点。
数据仓库概念的提出也把数据处理划分为了操作型处理和分析型处理两种不同类型,从而建立起了DB-DW的两层体系结构。
但是有很多情况,DB-DW的两层体系结构并不能涵盖企业所有的数据处理要求,比如有些实时性决策问题,它要求获取数据周期不能太长,而且也需要一定程度的汇总。
信息处理的多层次要求导致了一种新的数据环境——DB-DW的中间层ODS(操作型数据存储)的出现。
它像DW一样是面向主题,集成的数据环境,又像操作型DB一样包含着全局一致的、细节的当前数据。
这样就构成了DB-ODS-DW的关于企业数据的三层体系结构。
大型数据仓库项目ODS层的系统设计
大数据 云计算数码世界 P.86大型数据仓库项目ODS层的系统设计韩庆安 珠海世纪鼎利科技股份有限公司摘要:互联网发展到今天,传统的管理系统、企业化平台已经不再是IT行业的主流。
随着管理者对数据重要性的认识的转变,大数据已深入到互联网、金融、电商、生产、零售等各行各业。
大数据将来必然会影响人类生产、生活的方方面面。
数据仓库以大规模数据的存储为目标,其中包括数据的转储、抽取和清洗等工作。
ODS层建设的好与坏,直接影响到业务层对数据的分析和展现。
关键字:大数据 ODS一、什么是ODSODS(Operational Data Store),可操作的数据存储。
是数据仓库体系结构中的不可缺少的一个部分,是存储整个数据仓库的数据的地方,是元数据经过ETL抽取,再到OLAP分析库的中转枢纽。
可以这样通俗的理解:ODS就是把一线的生产数据经过抽取、整理、清洗等一系列操作,归纳成一个相对完整、相对封闭的数据存储仓库。
ODS的构成并不是一个数据库或者一个文件服务器,应该是一系列数据库以及文件服务器的总称。
二、如何设计一个具体的ODS层对于系统架构设计师来说,任何一个系统的设计工作,都要建立在对业务需求的亲身调查的基础上,传统的应用软件如此,大型的数据仓库项目也应如此。
俗话说:没有调查,就没有发言权。
这种调查应该是方方面面的,甚至在一些问题上要精确到具体的业务场景的,比如元数据的特点、数据抽取的频率,上层OLAP系统对ODS层数据结构的要求等等。
结合实际调查具体项目特点的基础上,ODS层的设计,可以总结为以下几个方面:1.数据库的选取ODS层的数据来源可以定义为上层的生产数据,也就是整个系统的元数据。
生产数据比较原始,数据的结构、数据的类型以及数据的产生频率都是由现场生产的特点决定的。
比如电力系统的发电数据,主汽温度、汽轮机转速、二次风出口温度等,这样的数据在第一手生产数据系统里,通常是有实时数据库或者内存数据库完成采集,数据的组织比较杂乱,必须经过ETL工具经过抽取、清洗等操作,才能进入数据仓库,也就是ODS层。
基础进阶ODS、DWD、DWM等模型分层与项目实战
基础进阶ODS、DWD、DWM等模型分层与项⽬实战来源:⼤数据范式全⽂导读数仓在建设过程中,对数据的组织管理上,不仅要根据业务进⾏纵向的主题域划分,还需要横向的数仓分层规范。
本⽂作者围绕企业数仓分层展开分析,希望对你有帮助。
从事数仓相关⼯作的⼈员都知道数仓模型设计的⾸要⼯作之⼀就是进⾏模型分层,可见模型分层在模型设计过程中的重要性,确实优秀的分层设计是⼀个数仓项⽬能否建设成功的核⼼要素,让数据易理解和⾼复⽤是分层的核⼼⽬标。
数据流向应⽤⽰例何为数仓DWData warehouse(可简写为DW或者DWH)数据仓库,是在数据库已经⼤量存在的情况下,它是⼀整套包括了etl、调度、建模在内的完整的理论体系。
数据仓库的⽅案建设的⽬的,是为前端查询和分析作为基础,主要应⽤于OLAP(on-line Analytical Processing),⽀持复杂的分析操作,侧重决策⽀持,并且提供直观易懂的查询结果。
⽬前⾏业⽐较流⾏的有:AWS Redshift,Greenplum,Hive等。
数据仓库并不是数据的最终⽬的地,⽽是为数据最终的⽬的地做好准备,这些准备包含:清洗、转义、分类、重组、合并、拆分、统计等。
DPM在数仓建设中的作⽤。
主要特点⾯向主题操作型数据库组织⾯向事务处理任务,⽽数据仓库中的数据是按照⼀定的主题域进⾏组织。
主题是指⽤户使⽤数据仓库进⾏决策时所关⼼的重点⽅⾯,⼀个主题通过与多个操作型信息系统相关。
集成需要对源数据进⾏加⼯与融合,统⼀与综合在加⼯的过程中必须消除源数据的不⼀致性,以保证数据仓库内的信息时关于整个企业的⼀致的全局信息。
(关联关系)不可修改DW中的数据并不是最新的,⽽是来源于其他数据源数据仓库主要是为决策分析提供数据,涉及的操作主要是数据的查询与时间相关处于决策的需要数据仓库中的数据都需要标明时间属性处于决策的需要数据仓库中的数据都需要标明时间属性与数据库的对⽐DW:专门为数据分析设计的,涉及读取⼤量数据以了解数据之间的关系和趋势数据库:⽤于捕获和存储数据为何要分层数据仓库中涉及到的问题:1. 为什么要做数据仓库?2. 为什么要做数据质量管理?3. 为什么要做元数据管理?4. 数仓分层中每个层的作⽤是什么?在实际的⼯作中,我们都希望⾃⼰的数据能够有顺序地流转,设计者和使⽤者能够清晰地知道数据的整个声明周期,⽐如下⾯左图。
ODS与数据仓库
[问题2]
(1)定义一个高层次的企业数据模型,在不同的主题和可能的应用之间,提供企业范围的、一致的、集成的数据视图。
(2)基于上述企业数据模型,并行地实现各自独立的数据集市和企业数据仓库。
试题四 数据仓库
解答要点:
[问题1]
(1)与数据仓库相比,数据集市具有以下特点:
● 规模小,灵活,可以按照多种方式来组织数据,如按特定的应用、部门、地域、主题等
● 开发工作可由业务部门定义、设计、实施、管理和维护
● 能够快速实现,代价较低,投资回收期短,风险小
● 工具集的紧密集成
(3)构造分布式数据集市,对不同的数据集市进行集成。
(4)构造一个多层数据仓库。在多层数据仓库中,企业数据仓库是所有数据仓库数据的全权管理者,而这些数据分布在各个相关的数据集市中。
[问题3]
最大差别是两者存放的数据内容不同,ODS存储了当前或最近的数据,而DW存储了历史数据;ODS存储了细节数据,而DW存储了细节数据和综合数据;ODS可联机更新数据,而DW中数据一般为不可变的快照。
什么是 ODS
什么是ODSODS是一个面向主题的、集成的、可变的、当前的细节数据集合,用于支持企业对于即时性的、操作性的、集成的全体信息的需求。
常常被作为数据仓库的过渡,也是数据仓库项目的可选项之一。
根据Bill.Inmon的定义,“数据仓库是面向主题的、集成的、稳定的、随时间变化的,主要用于决策支持的数据库系统”ODS是一个面向主题的、集成的、可变的、当前的细节数据集合,用于支持企业对于即时性的、操作性的、集成的全体信息的需求。
常常被作为数据仓库的过渡,也是数据仓库项目的可选项之一。
在Kimball的<<数据仓库生命周期工具集The Data WareHouse Liftcycle Toolkit>>,他是这样定义的1. 是操作型系统中的集成,用于当前,历史以及其它细节查询(业务系统的一部分)2. 为决策支持提供当前细节数据(数据仓库的一部分)因此操作数据存储(ODS)是用于支持企业日常的全局应用的数据集合,ODS的数据具有面向主题、集成的、可变的和数据是当前的或是接近当前的4个基本特征。
同样也可以看出ODS 是介于DB和DW 之间的一种数据存储技术,和原来面向应用的分散的DB相比,ODS中的数据组织方式和数据仓库(DW)一样也是面向主题的和集成的,所以对进入ODS的数据也象进入数据仓库的数据一样进行集成处理。
另外ODS只是存放当前或接近当前的数据,如果需要的话还可以对ODS中的数据进行增、删和更新等操作,虽然DW中的数据也是面向主题和集成的,但这些数据一般不进行修改,所以ODS和DW的区别主要体现数据的可变性、当前性、稳定性、汇总度上。
由于ODS仍然存储在普通的关系数据库中,出于性能、存储和备份恢复等数据库的角度以及对源数据库的性能影响角度,个人不建议ODS保存相当长周期的数据,同样ODS中的数据也尽量不做转换,而是原封不动地与业务数据库保持一致。
即ODS只是业务数据库的一个备份或者映像,目的是为了使数据仓库的处理和决策支持要求与OLTP系统相隔离,减少决策支持要求对OLTP系统的影响。
操作数据存储ODS
操作数据存储ODSODS是用于支持企业日常的、全局应用的数据集合。
ODS解决的是“日常”性问题,因而具有引入数据是可变的、数据是当前的或近期的两个特点。
由于ODS是面向全局应用,使得ODS中的数据需要面向主题来组织,并且应当是实时集成的。
ODS中的数据按照主题来组织,在企业级上要求保持一致,因此进入ODS的数据必须经过清洗和整理,才能达到集成和一致性的目的。
这也是ODS与传统数据库系统的区别。
ODS只存放当前的和近期的数据。
同数据库类似,ODS中的数据可以进行增加、删除和更新等操作,而数据仓库中的数据具有稳定性,只增不删,因此与数据仓库也是不同的。
ODS的应用一般体现在以下两个方面:(1)企业级的联机事务处理(OLTP)。
由于ODS提供的是集成的、企业级一致的数据,因此它使企业级的OLTP成为可能。
企业级的OLTP是指在实际的事务处理中常常涉及多个部门的数据,需要通过多个部门的数据协同才能更好地完成任务。
建立ODS实际上是建立了一个全局数据库,它通过ODS中的记录系统定义和参数表来建立一系列数据库与ODS记录间的双向联系,以实现企业级数据的同步。
ODS的记录系统用于说明如何从数据库向ODS抽取数据。
有了ODS的记录系统,数据库中的数据项发生变化都会反映到响应的ODS记录中。
参数表用于建立ODS中的记录向数据库的反向映射。
当ODS中的记录发生改变时,将通过参数表修改数据库中的相应项。
(2)近期的联机分析处理(OLAP)。
数据仓库主要解决企业的长期战略问题,因此在数据仓库上主要进行较长时间段数据的OLAP分析。
由于ODS中的数据量远远小于数据仓库中的数据量,因此使用ODS进行近期的OLAP分析非常有效。
但ODS中提供的OLAP功能常常没有在数据仓库中实现的那么全面。
随着ODS的引入,原来的DB—DW两层体系结构逐步转化成DB—ODS—DW三层体系结构。
ODS作为一个中间层,一方面它包含企业全局一致的、细节的、当前的或近期的数据,可以进行全局联机操作型处理;另一方面,它又是一种面向主题的、集成的数据环境,而且数据量较小,适合于辅助企业完成日常决策的数据分析处理。
数据仓库ADS、DWD、DWS、ADS分层详解
数据仓库ADS、DWD、DWS、ADS分层详解一、ODS层ODS层通常包含多个数据源,包括企业内部的各种业务系统、外部的数据供应商、第三方数据服务等。
这些数据源通常具有不同的数据格式、结构、语义和质量,因此需要进行一系列的数据处理和转换,以使其能够被有效地集成到数据仓库中。
ODS层的数据处理主要包括以下几个方面:数据抽取:从各个数据源中抽取数据,包括全量抽取和增量抽取等方式。
数据清洗:对抽取到的数据进行清洗和去重,确保数据的一致性和准确性。
数据集成:将清洗后的数据进行整合和集成,以生成一个一致的、可信的、实时的数据集。
数据同步:将ODS层的数据同步到下一层,即DWD层,以供后续的数据处理和分析。
ODS层的数据模型通常是基于源系统中的数据模型进行设计,其主要目的是将不同的数据源中的数据整合到一个统一的数据集中,并尽量保证数据的质量和可用性。
ODS层的数据通常是面向业务过程和业务事件的,包含大量的原始业务数据和事件流数据,可以为企业提供实时的数据集成和分析能力。
ODS层是数据仓库架构中的第一层,主要负责数据集成和整合,将多个数据源中的数据进行清洗、整合和同步,为后续的数据仓库处理提供原始数据。
ODS层的数据模型通常是基于源系统中的数据模型进行设计,其主要目的是将不同的数据源中的数据整合到一个统一的数据集中,并尽量保证数据的质量和可用性。
二、DWD层数据仓库的DWD层(Data Warehouse Detail Layer)是整个数据仓库架构中的核心层次,也是数据仓库的基础层,它主要用于存储处理过的数据。
DWD层是对原始数据进行清洗、整合、标准化和去重等处理,将数据转化为面向主题的数据集。
在DWD层,数据会被按照主题进行建模,即按照不同的业务领域或业务流程进行分类和组织。
这种建模方法被称为主题建模,它是数据仓库架构的核心特点之一。
DWD层的主要任务是将原始数据转换成具有较高质量和较高复用性的数据集,使得数据在后续的处理和分析过程中更加容易理解和使用。
数据仓库(五)——ODS层
数据仓库(五)——ODS层1)保持数据原貌不做任何修改,起到备份数据的作⽤。
2)数据采⽤LZO压缩,减少磁盘存储空间。
100G数据可以压缩到10G以内。
3)创建分区表,防⽌后续的全表扫描,在企业开发中⼤量使⽤分区表。
4)创建外部表。
在企业开发中,除了⾃⼰⽤的临时表,创建内部表外,绝⼤多数场景都是创建外部表。
第⼀章1.1 创建⽇志表1)创建⽀持lzo压缩的分区表(1)建表语句hive (gmall)>drop table if exists ods_log;CREATE EXTERNAL TABLE ods_log (`line` string)PARTITIONED BY (`dt` string) -- 按照时间创建分区STORED AS -- 指定存储⽅式,读数据采⽤LzoTextInputFormat;INPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat'OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'LOCATION '/warehouse/gmall/ods/ods_log' -- 指定数据在hdfs上的存储位置;(2)分区规划2)加载数据hive (gmall)>load data inpath '/origin_data/gmall/log/topic_log/2020-06-14' into table ods_log partition(dt='2020-06-14');注意:时间格式都配置成YYYY-MM-DD格式,这是Hive默认⽀持的时间格式3)为lzo压缩⽂件创建索引[atguigu@hadoop102 bin]$ hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/common/hadoop-lzo-0.4.20.jar pression.lzo.DistributedLzoIndexer /warehouse/gmall/ods/ods_log/dt=2020-06-141.2 Shell1)在/home/atguigu/bin创建⼀个test.sh⽂件[atguigu@hadoop102 bin]$ vim test.sh在⽂件中添加如下内容#!/bin/bashdo_date=$1echo '$do_date'echo "$do_date"echo "'$do_date'"echo '"$do_date"'echo `date`2)查看执⾏结果[atguigu@hadoop102 bin]$ test.sh 2020-06-14$do_date2020-06-14'2020-06-14'"$do_date"2020年 06⽉ 18⽇星期四 21:02:08 CST3)总结:(1)单引号不取变量值(2)双引号取变量值(3)反引号`,执⾏引号中命令(4)双引号内部嵌套单引号,取出变量值(5)单引号内部嵌套双引号,不取出变量值1.3 ODS1)编写脚本(1)在hadoop102的/home/atguigu/bin⽬录下创建脚本[atguigu@hadoop102 bin]$ vim hdfs_to_ods_log.sh在脚本中编写如下内容#!/bin/bash# 定义变量⽅便修改APP=gmall# 如果是输⼊的⽇期按照取输⼊⽇期;如果没输⼊⽇期取当前时间的前⼀天if [ -n "$1" ] ;thendo_date=$1elsedo_date=`date -d "-1 day" +%F`fiecho ================== ⽇志⽇期为$do_date ==================sql="load data inpath '/origin_data/$APP/log/topic_log/$do_date' into table ${APP}.ods_log partition(dt='$do_date');"hive -e "$sql"hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/common/hadoop-lzo-0.4.20.jar pression.lzo.DistributedLzoIndexer /warehouse/$APP/ods/ods_log/dt=$do_date(1)说明1:[ -n 变量值 ] 判断变量的值,是否为空-- 变量的值,⾮空,返回true-- 变量的值,为空,返回false注意:[ -n 变量值 ]不会解析数据,使⽤[ -n 变量值 ]时,需要对变量加上双引号(" ")(2)说明2:查看date命令的使⽤,date --help(3)增加脚本执⾏权限[atguigu@hadoop102 bin]$ chmod 777 hdfs_to_ods_log.sh2)脚本使⽤(1)执⾏脚本[atguigu@hadoop102 module]$ hdfs_to_ods_log.sh 2020-06-14(2)查看导⼊数据第⼆章ODS层业务表分区规划如下ODS层业务表数据装载思路如下2.1DROP TABLE IF EXISTS ods_activity_info;CREATE EXTERNAL TABLE ods_activity_info(`id` STRING COMMENT '编号',`activity_name` STRING COMMENT '活动名称',`activity_type` STRING COMMENT '活动类型',`start_time` STRING COMMENT '开始时间',`end_time` STRING COMMENT '结束时间',`create_time` STRING COMMENT '创建时间') COMMENT '活动信息表'PARTITIONED BY (`dt` STRING)ROW FORMAT DELIMITED FIELDS TERMINATED BY'\t'STORED ASINPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat'OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION '/warehouse/gmall/ods/ods_activity_info/';2.2DROP TABLE IF EXISTS ods_activity_rule;CREATE EXTERNAL TABLE ods_activity_rule(`id` STRING COMMENT '编号',`activity_id` STRING COMMENT '活动ID',`activity_type` STRING COMMENT '活动类型',`condition_amount` DECIMAL(16,2) COMMENT '满减⾦额',`condition_num` BIGINT COMMENT '满减件数',`benefit_amount` DECIMAL(16,2) COMMENT '优惠⾦额',`benefit_discount` DECIMAL(16,2) COMMENT '优惠折扣',`benefit_level` STRING COMMENT '优惠级别') COMMENT '活动规则表'PARTITIONED BY (`dt` STRING)ROW FORMAT DELIMITED FIELDS TERMINATED BY'\t'STORED ASINPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat'OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION '/warehouse/gmall/ods/ods_activity_rule/';2.3DROP TABLE IF EXISTS ods_base_category1;CREATE EXTERNAL TABLE ods_base_category1(`id` STRING COMMENT 'id',`name` STRING COMMENT '名称') COMMENT '商品⼀级分类表'PARTITIONED BY (`dt` STRING)ROW FORMAT DELIMITED FIELDS TERMINATED BY'\t'STORED ASINPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat'OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION '/warehouse/gmall/ods/ods_base_category1/';2.4DROP TABLE IF EXISTS ods_base_category2;CREATE EXTERNAL TABLE ods_base_category2(`id` STRING COMMENT ' id',`name` STRING COMMENT '名称',`category1_id` STRING COMMENT '⼀级品类id') COMMENT '商品⼆级分类表'PARTITIONED BY (`dt` STRING)ROW FORMAT DELIMITED FIELDS TERMINATED BY'\t'STORED ASINPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat'OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION '/warehouse/gmall/ods/ods_base_category2/';2.5DROP TABLE IF EXISTS ods_base_category3;CREATE EXTERNAL TABLE ods_base_category3(`id` STRING COMMENT ' id',`name` STRING COMMENT '名称',`category2_id` STRING COMMENT '⼆级品类id') COMMENT '商品三级分类表'PARTITIONED BY (`dt` STRING)ROW FORMAT DELIMITED FIELDS TERMINATED BY'\t'STORED ASINPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat'OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'2.6DROP TABLE IF EXISTS ods_base_dic;CREATE EXTERNAL TABLE ods_base_dic(`dic_code` STRING COMMENT '编号',`dic_name` STRING COMMENT '编码名称',`parent_code` STRING COMMENT '⽗编码',`create_time` STRING COMMENT '创建⽇期',`operate_time` STRING COMMENT '操作⽇期') COMMENT '编码字典表'PARTITIONED BY (`dt` STRING)ROW FORMAT DELIMITED FIELDS TERMINATED BY'\t'STORED ASINPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat'OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION '/warehouse/gmall/ods/ods_base_dic/';2.7DROP TABLE IF EXISTS ods_base_province;CREATE EXTERNAL TABLE ods_base_province (`id` STRING COMMENT '编号',`name` STRING COMMENT '省份名称',`region_id` STRING COMMENT '地区ID',`area_code` STRING COMMENT '地区编码',`iso_code` STRING COMMENT 'ISO-3166编码,供可视化使⽤',`iso_3166_2` STRING COMMENT 'IOS-3166-2编码,供可视化使⽤') COMMENT '省份表'ROW FORMAT DELIMITED FIELDS TERMINATED BY'\t'STORED ASINPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat'OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION '/warehouse/gmall/ods/ods_base_province/';2.8DROP TABLE IF EXISTS ods_base_region;CREATE EXTERNAL TABLE ods_base_region (`id` STRING COMMENT '编号',`region_name` STRING COMMENT '地区名称') COMMENT '地区表'ROW FORMAT DELIMITED FIELDS TERMINATED BY'\t'STORED ASINPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat'OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION '/warehouse/gmall/ods/ods_base_region/';2.9DROP TABLE IF EXISTS ods_base_trademark;CREATE EXTERNAL TABLE ods_base_trademark (`id` STRING COMMENT '编号',`tm_name` STRING COMMENT '品牌名称') COMMENT '品牌表'PARTITIONED BY (`dt` STRING)ROW FORMAT DELIMITED FIELDS TERMINATED BY'\t'STORED ASINPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat'OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION '/warehouse/gmall/ods/ods_base_trademark/';2.10DROP TABLE IF EXISTS ods_cart_info;CREATE EXTERNAL TABLE ods_cart_info(`id` STRING COMMENT '编号',`user_id` STRING COMMENT '⽤户id',`sku_id` STRING COMMENT 'skuid',`cart_price` DECIMAL(16,2) COMMENT '放⼊购物车时价格',`sku_num` BIGINT COMMENT '数量',`sku_name` STRING COMMENT 'sku名称 (冗余)',`create_time` STRING COMMENT '创建时间',`operate_time` STRING COMMENT '修改时间',`is_ordered` STRING COMMENT '是否已经下单',`order_time` STRING COMMENT '下单时间',`source_type` STRING COMMENT '来源类型',`source_id` STRING COMMENT '来源编号') COMMENT '加购表'PARTITIONED BY (`dt` STRING)ROW FORMAT DELIMITED FIELDS TERMINATED BY'\t'STORED ASINPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat'OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION '/warehouse/gmall/ods/ods_cart_info/';2.11DROP TABLE IF EXISTS ods_comment_info;CREATE EXTERNAL TABLE ods_comment_info(`id` STRING COMMENT '编号',`user_id` STRING COMMENT '⽤户ID',`sku_id` STRING COMMENT '商品sku',`spu_id` STRING COMMENT '商品spu',`order_id` STRING COMMENT '订单ID',`appraise` STRING COMMENT '评价',`create_time` STRING COMMENT '评价时间') COMMENT '商品评论表'PARTITIONED BY (`dt` STRING)ROW FORMAT DELIMITED FIELDS TERMINATED BY'\t'STORED ASINPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat'OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION '/warehouse/gmall/ods/ods_comment_info/';2.12DROP TABLE IF EXISTS ods_coupon_info;CREATE EXTERNAL TABLE ods_coupon_info(`coupon_type` STRING COMMENT '购物券类型 1 现⾦券 2 折扣券 3 满减券 4 满件打折券', `condition_amount` DECIMAL(16,2) COMMENT '满额数',`condition_num` BIGINT COMMENT '满件数',`activity_id` STRING COMMENT '活动编号',`benefit_amount` DECIMAL(16,2) COMMENT '减⾦额',`benefit_discount` DECIMAL(16,2) COMMENT '折扣',`create_time` STRING COMMENT '创建时间',`range_type` STRING COMMENT '范围类型 1、商品 2、品类 3、品牌',`limit_num` BIGINT COMMENT '最多领⽤次数',`taken_count` BIGINT COMMENT '已领⽤次数',`start_time` STRING COMMENT '开始领取时间',`end_time` STRING COMMENT '结束领取时间',`operate_time` STRING COMMENT '修改时间',`expire_time` STRING COMMENT '过期时间') COMMENT '优惠券表'PARTITIONED BY (`dt` STRING)ROW FORMAT DELIMITED FIELDS TERMINATED BY'\t'STORED ASINPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat'OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION '/warehouse/gmall/ods/ods_coupon_info/';2.13DROP TABLE IF EXISTS ods_coupon_use;CREATE EXTERNAL TABLE ods_coupon_use(`id` STRING COMMENT '编号',`coupon_id` STRING COMMENT '优惠券ID',`user_id` STRING COMMENT 'skuid',`order_id` STRING COMMENT 'spuid',`coupon_status` STRING COMMENT '优惠券状态',`get_time` STRING COMMENT '领取时间',`using_time` STRING COMMENT '使⽤时间(下单)',`used_time` STRING COMMENT '使⽤时间(⽀付)',`expire_time` STRING COMMENT '过期时间') COMMENT '优惠券领⽤表'PARTITIONED BY (`dt` STRING)ROW FORMAT DELIMITED FIELDS TERMINATED BY'\t'STORED ASINPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat'OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION '/warehouse/gmall/ods/ods_coupon_use/';2.14DROP TABLE IF EXISTS ods_favor_info;CREATE EXTERNAL TABLE ods_favor_info(`id` STRING COMMENT '编号',`user_id` STRING COMMENT '⽤户id',`sku_id` STRING COMMENT 'skuid',`spu_id` STRING COMMENT 'spuid',`is_cancel` STRING COMMENT '是否取消',`create_time` STRING COMMENT '收藏时间',`cancel_time` STRING COMMENT '取消时间') COMMENT '商品收藏表'PARTITIONED BY (`dt` STRING)ROW FORMAT DELIMITED FIELDS TERMINATED BY'\t'STORED ASINPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat'OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION '/warehouse/gmall/ods/ods_favor_info/';2.15DROP TABLE IF EXISTS ods_order_detail;CREATE EXTERNAL TABLE ods_order_detail(`id` STRING COMMENT '编号',`order_id` STRING COMMENT '订单号',`sku_id` STRING COMMENT '商品id',`sku_name` STRING COMMENT '商品名称',`order_price` DECIMAL(16,2) COMMENT '商品价格',`sku_num` BIGINT COMMENT '商品数量',`create_time` STRING COMMENT '创建时间',`source_type` STRING COMMENT '来源类型',`source_id` STRING COMMENT '来源编号',`split_final_amount` DECIMAL(16,2) COMMENT '分摊最终⾦额',`split_activity_amount` DECIMAL(16,2) COMMENT '分摊活动优惠',`split_coupon_amount` DECIMAL(16,2) COMMENT '分摊优惠券优惠') COMMENT '订单详情表'PARTITIONED BY (`dt` STRING)ROW FORMAT DELIMITED FIELDS TERMINATED BY'\t'STORED ASINPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat'OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION '/warehouse/gmall/ods/ods_order_detail/';2.16DROP TABLE IF EXISTS ods_order_detail_activity;CREATE EXTERNAL TABLE ods_order_detail_activity(`id` STRING COMMENT '编号',`order_id` STRING COMMENT '订单号',`order_detail_id` STRING COMMENT '订单明细id',`activity_id` STRING COMMENT '活动id',`activity_rule_id` STRING COMMENT '活动规则id',`sku_id` BIGINT COMMENT '商品id',`create_time` STRING COMMENT '创建时间') COMMENT '订单详情活动关联表'PARTITIONED BY (`dt` STRING)ROW FORMAT DELIMITED FIELDS TERMINATED BY'\t'STORED ASINPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat'OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION '/warehouse/gmall/ods/ods_order_detail_activity/';2.17DROP TABLE IF EXISTS ods_order_detail_coupon;CREATE EXTERNAL TABLE ods_order_detail_coupon(`id` STRING COMMENT '编号',`order_id` STRING COMMENT '订单号',`order_detail_id` STRING COMMENT '订单明细id',`coupon_use_id` STRING COMMENT '优惠券领⽤记录id',`sku_id` STRING COMMENT '商品id',`create_time` STRING COMMENT '创建时间') COMMENT '订单详情活动关联表'PARTITIONED BY (`dt` STRING)ROW FORMAT DELIMITED FIELDS TERMINATED BY'\t'STORED ASINPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat'OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'LOCATION '/warehouse/gmall/ods/ods_order_detail_coupon/';2.18DROP TABLE IF EXISTS ods_order_info;CREATE EXTERNAL TABLE ods_order_info (`id` STRING COMMENT '订单号',`final_amount` DECIMAL(16,2) COMMENT '订单最终⾦额',`order_status` STRING COMMENT '订单状态',`user_id` STRING COMMENT '⽤户id',`payment_way` STRING COMMENT '⽀付⽅式',`delivery_address` STRING COMMENT '送货地址',`out_trade_no` STRING COMMENT '⽀付流⽔号',`create_time` STRING COMMENT '创建时间',`operate_time` STRING COMMENT '操作时间',`expire_time` STRING COMMENT '过期时间',`tracking_no` STRING COMMENT '物流单编号',`province_id` STRING COMMENT '省份ID',`activity_reduce_amount` DECIMAL(16,2) COMMENT '活动减免⾦额',`coupon_reduce_amount` DECIMAL(16,2) COMMENT '优惠券减免⾦额',`original_amount` DECIMAL(16,2) COMMENT '订单原价⾦额',`feight_fee` DECIMAL(16,2) COMMENT '运费',`feight_fee_reduce` DECIMAL(16,2) COMMENT '运费减免') COMMENT '订单表'PARTITIONED BY (`dt` STRING)ROW FORMAT DELIMITED FIELDS TERMINATED BY'\t'STORED ASINPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat'OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'LOCATION '/warehouse/gmall/ods/ods_order_info/';2.19DROP TABLE IF EXISTS ods_order_refund_info;CREATE EXTERNAL TABLE ods_order_refund_info(`id` STRING COMMENT '编号',`user_id` STRING COMMENT '⽤户ID',`order_id` STRING COMMENT '订单ID',`sku_id` STRING COMMENT '商品ID',`refund_type` STRING COMMENT '退单类型',`refund_num` BIGINT COMMENT '退单件数',`refund_amount` DECIMAL(16,2) COMMENT '退单⾦额',`refund_reason_type` STRING COMMENT '退单原因类型',`refund_status` STRING COMMENT '退单状态',--退单状态应包含买家申请、卖家审核、卖家收货、退款完成等状态。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
根据Bill.Inmon的定义,“数据仓库是面向主题的、集成的、稳定的、随时间变化的,主要用于决策支持的数据库系统”
ODS是一个面向主题的、集成的、可变的、当前的细节数据集合,用于支持企业对于即时性的、操作性的、集成的全体信息的需求。
常常被作为数据仓库的过渡,也是数据仓库项目的可选项之一。
在Kimball的<<数据仓库生命周期工具集The Data WareHouse Liftcycle Toolkit>>,他是这样定义的:
1. 是操作型系统中的集成,用于当前,历史以及其它细节查询(业务系统的一部分;
2. 为决策支持提供当前细节数据(数据仓库的一部分。
因此操作数据存储(ODS是用于支持企业日常的全局应用的数据集合,ODS的数据具有面向主题、集成的、可变的和数据是当前的或是接近当前的4个基本特征。
同样也可以看出ODS是介于DB 和DW 之间的一种数据存储技术,和原来面向应用的分散的DB相比,ODS中的数据组织方式和数据仓库(DW一样也是面向主题的和集成的,所以对进入ODS的数据也象进入数据仓库的数据一样进行集成处理。
另外ODS只是存放当前或接近当前的数据,如果需要的话还可以对ODS中的数据进行增、删和更新等操作,虽然DW中的数据也是面向主题和集成的,但这些数据一般不进行修改,所以ODS 和DW的区别主要体现数据的可变性、当前性、稳定性、汇总度上。
由于ODS仍然存储在普通的关系数据库中,出于性能、存储和备份恢复等数据库的角度以及对源数据库的性能影响角度,个人不建议ODS保存相当长周期的数据,同样ODS中的数据也尽量不做转换,而是原封不动地与业务数据库保持一致。
即ODS只是业务数据库的一个备份或者映像,目的是为了使数据仓库的处理和决策支持要求与OLTP系统相隔离,减少决策支持要求对OLTP系统的影响。
为什么需要有一个ODS系统呢?一般在带有ODS的系统体系结构中,ODS都具备如下几个作用:
1.在业务系统和数据仓库之间形成一个隔离层
一般的数据仓库应用系统都具有非常复杂的数据来源,这些数据存放在不同的地理位置、不同的数据库、不同的应用之中,从这些业务系统对数据进行抽取并不是一件容易的事。
因此,ODS用于存放从业务系统直接抽取出来的数据,这些数据从数据结构、数据之间的逻辑关系上都与业务系统基本保持一致,因此在抽取过程中极大降低了数据转化的复杂性,而主要关注数据抽取的接口、数据量大小、抽取方式等方面的问题。
2.转移一部分业务系统细节查询的功能
在数据仓库建立之前,大量的报表、分析是由业务系统直接支持的,在一些比较复杂的报表生成过程中,对业务系统的运行产生相当大的压力。
ODS的数据从粒度、组织方式等各个方面都保持了与业务系统的一致,那么原来由业务系统产生的报表、细节数据的查询自然能够从ODS中进行,从而降低业务系统的查询压力。
3.完成数据仓库中不能完成的一些功能
一般来说,带有ODS的数据仓库体系结构中,DW层所存储的数据都是进行汇总过的数据和运营指标,并不存储每笔交易产生的细节数据,但是在某些特殊的应用中,可能需要对交易细节数据进行查询,这时就需要把细节数据查询的功能转移到ODS 来完成,而且ODS的数据模型按照面向主题的方
式进行存储,可以方便地支持多维分析等查询功能。
即数据仓库从宏观角度满足企业的决策支持要求,而ODS层则从微观角度反映细节交易数据或者低粒度的数据查询要求。
在一个没有ODS层的数据仓库应用系统体系结构中,数据仓库中存储的数据粒度是根据需要而确定的,但一般来说,最为细节的业务数据也是需要保留的,实际上也就相当于ODS,但与ODS所不同的是,这时的细节数据不是“当前、不断变化的”数据,而是“历史的,不再变化的”数据。
这样的数据仓库的存储压力和性能压力都是比较大的,因此对数据仓库的物理设计和逻辑设计提出了更高的要求。