维度表怎么建Oracle,维度表怎么建Oracle
可视化数据表如何添加维度表
创建维度表时:
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名申请、虚拟主机、营销软件、网站建设、河东网站维护、网站推广。
可以关联本维度表是用于分析哪个业务分类、哪个数据域,便于后续直接查看具体某一数据域或数据集市下,有哪些维度表。
可以指定维度表后续在数据建模分析使用时,维度表的数据存储于数仓中的哪个数据分层,一般情况下维度表可存储于公共维度层(DIM层)。
维度表创建后,您可以将维度的属性添加为维度表的字段,并对维度表进行关联和分区的设置,使用统一的数据标准来进行字段设置,保障全数据域中的维度数据的属性是一致的。
维度表配置完成后:
可物化至存储引擎,后续在计算引擎中使用维度表进行数据分析。
在进行数据派生指标和汇总表的设计创建时,可直接关联使用维度表中的维度。
创建维度表
进入维度建模。
登录DataWorks控制台。
在左侧导航栏,单击工作空间列表。
选择工作空间所在地域后,单击相应工作空间后的数据开发。
单击左上方的图标图标,选择全部产品 数据建模 维度建模,进入维度建模页面。
创建维度表。
在维度建模页面,鼠标悬停至加号图标,单击逻辑模型 创建维度表。
配置维度表的基本信息。
您可根据需求,选择维度表所挂载的层级、数据域、业务分类、数据集市等信息,选择后,后续可进入相应对象的列表查看所创建的维度表。创建维度表主要参数说明如下。
参数项 描述
存储策略 维度表基于什么策略(即存储数据的时间周期及数据量范围)存储数据。
维度 维度表关联的维度,用于配置维度表分析数据的视角。
说明 创建维度,详情请参见创建维度。
表名规则 通过已配置的检查器规范维度表的命名规则。选择检查器后,该维度表的表名需按照检查器定义的规则配置。
说明 配置检查器,详情请参见配置及使用数仓分层检查器。
生命周期 维度表保留的时间周期。最大可保留36000天。
表类型 根据实际情况,选择如下类型。
普通维度表:普通的维度表,无其他需求可选择该类型。
枚举维度表:可进行枚举的维度表,例如性别维度表。
层级维度表:存在字段需要设置层级关系,支持指标做上卷和下钻使用。例如国家、省份、市县等。
配置完成后,单击保存,维度表创建成功。
在维度建模左侧目录树相应的数据域或业务分类下,可查找并统一管理维度表。
【总结】维度数据建模过程及举例
本文介绍数据仓库中维度数据建模的过程描述,并举一个示例以加深对相关概念的理解。
维度模型是数据仓库领域大师Ralph Kimall所倡导,他的《数据仓库工具箱》,是数据仓库工程领域最流行的数仓建模经典。维度建模以分析决策的需求出发构建模型,构建的数据模型为分析需求服务,因此它重点解决用户如何更快速完成分析需求,同时还有较好的大规模复杂查询的响应性能。
1、通过对业务需求以及可用数据源的综合考虑,确定对哪种业务过程开展建模工作
2、建立的第一个维度模型应该是一个最有影响的模型——它应该对最紧迫的业务问题作出回答,并且对数据的抽取来说是最容易的。
注:粒度是指数据仓库的数据单位中保存数据的细化或综合程度的级别,细化程度越高,粒度就越小
1、应该先优先考虑为业务处理获取最有原子性的信息而开发维度模型。原子型数据是所收集的最详细的信息,这样的数据不能再做更进一步的细分。
2、数据仓库几乎总是要求在每个维度可能得到的最低粒度上对数据进行表示的原因,并不是因为查询想看到每个低层次的行,而是因为查询希望以很精确的方式对细节知识进行抽取。
一个经过仔细考虑的粒度定义确定了事实表的基本维度特性。同时,经常也可能向事实表的基本粒度加入更多的维度,而这些附加的维度会在基本维度的每个组合值方面自然地取得唯一的值。如果附加的维度因为导致生成另外的事实行而违背了这个基本的粒度定义,那么必须对粒度定义进行修改以适应这个维度的情景。
确定将哪些事实放到事实表中。粒度声明有助于稳定相关的考虑。事实必须与粒度吻合。在考虑可能存在的事实时,可能会发现仍然需要调整早期的粒度声明和维度选择
维度建模中有一些比较重要的概念,理解了这些概念,基本也就理解了什么是维度建模。
额,看了这一句,其实是不太容易理解到底什么是事实表的。
比如一次购买行为我们就可以理解为是一个事实,下面我们上示例。
图中的订单表就是一个事实表,你可以理解他就是在现实中发生的一次操作型事件,我们每完成一个订单,就会在订单中增加一条记录。
我们可以回过头再看一下事实表的特征,在维度表里没有存放实际的内容,他是一堆主键的集合,这些ID分别能对应到维度表中的一条记录。
我们的图中的用户表、商家表、时间表这些都属于维度表,这些表都有一个唯一的主键,然后在表中存放了详细的数据信息。
下面我们将以电商为例,详细讲一下维度建模的建模方式,并举例如果使用这个模型(这点还是很重要的)。
假设我们在一家电商网站工作,比如某宝、某东。我们需要对这里业务进行建模。下面我们分析几点业务场景:
好,基于这几点,我们来设计我们的模型。
下面就是我们设计出来的数据模型,和之前的基本一样,只不过是换成了英文,主要是为了后面写sql的时候来用。
我就不再解释每个表的作用了,现在只说一下为什么要这样设计。
首先,我们想一下,如果我们不这样设计的话,我们一般会怎么做?
如果是我,我会设计下面这张表。你信不信,我能列出来50个字段!其实我个人认为怎么设计这种表都有其合理性,我们不论对错,单说一下两者的优缺点。
先说我们的维度模型:
再说我们这张大款表的优缺点:
数据模型的建立必须要为更好的应用来服务,下面我先举一个例子,来切实地感受一下来怎么用我们的模型。
需求 :求出2016年在帝都的男性用户购买的LV品牌商品的总价格。
实现 :
维度建模是一种十分优秀的建模方式,他有很多的优点,但是我们在实际工作中也很难完全按照它的方式来实现,都会有所取舍,比如说为了业务我们还是会需要一些宽表,有时候还会有很多的数据冗余。
如何用date和time来创建时间维度表
为了使WinCC能够访问S7控制器DATE_AND_TIME数据类型的变量,必须创建一个对应DATE_AND_TIME数据类型的结构变量。字节S7数据类型DATE_AND_TIMEWinCC结构元素时间标识0YearYEAR"yyyy"1MonthMONTH"m"2DayDAY"d"3HourHOUR"h"4MinuteMINUTE"n"5SecondSECOND"s"61/10and1/100secondMILLISEC174MSB:1/1000second4LSB:weekdayMILLISEC2表01使用VBS函数“DatePart”,可以确定WinCC日期/时间变量的组成元素(如,年,日,分钟),通过“DateAdd”改变日期/时间的组成。这两个VBS函数需要在表中指定时间标识以确定日期/时间的组成。信息:关于结构变量DATE_AND_TIME的信息请参考手册ProgrammingwithSTEP7下的:"Appendix""Dataandparametertypes""Combineddatatypes""FormatofthedatatypeDATE_AND_TIME";关于读取指定date/time组成的信息请在WinCCInformationService下索引:DatePart;关于编辑指定date/time组成的信息请在WinCCInformationService下索引:DateAdd。说明:以下说明是组态创建必需的WinCC结构变量。为此,WinCC项目必须已经打开,并且到控制器的连接也已经组态。No.步骤1在树形图中右键点击“结构变量”并选择菜单“新建结构类型”;2在"OS"区域右键点击"NewStructure",选择菜单"重命名"并输入新的结构名称(如S7_DATE_AND_TIME);3点击按钮“新建元素”,右键点击“SHORTNewTag”,选择数据类型为“BYTE”;4选中“BYTENewTag”,在类型转换下拉列表中选择“ByteToBCDByte”;5再次右键单击已插入的结构元素(“BYTENewTag”),选择菜单“重命名”并输入名称“YEAR”;6重复步骤3-5创建如下变量,然后点击“OK”确认此对话框。MONTHDAYHOURMINUTESECONDMILLISEC_1MILLISEC_2图017在变量管理器中,双击已经建立的通道(如TCP/IP)并且点击新建的连接;8右键单击明细窗口的空白区域,选择菜单"新建变量"。9输入名称(如CPUTime),数据类型选择已创建的结构名称(如S7_DATE_AND_TIME);10选择数据区(如数据块DB2)及DATE_AND_TIME变量的起始字节(如0),然后点击“OK”确认所有对话框。图02注释:在变量管理中不能删除结构变量。仅在"StructureTypes""NameofStructure""NameofTag"才能删除结构变量。如果为同样结构的多个结构创建函数,必须transfer函数的结构名称。结构元素的变量名称是动态生成的,例如DATE_AND_TIME结构:
oracle建立时间维度
你参考的例子是MS Sql Server的,@XX是变量的意思。我改写了一下,因为oracle没有identity自增,所以用了sequence。
首先建表:
CREATE TABLE time_by_day_dimension(
time_id int NOT NULL ,
the_date date NULL ,
the_day varchar2(15) NULL ,
the_month varchar2(15) NULL ,
the_year smallint NULL ,
day_of_month smallint NULL ,
week_of_year smallint NULL ,
month_of_year smallint NULL ,
fiscal_period varchar2(20) NULL
);
然后是创建序列:
create sequence seq_time_id start with 1 increment by 1 nocycle nocache ;
最后是过程:
create or replace
PROCEDURE Create_time_by_day_dimension
IS
WeekString varchar(12);
dDate DATE;
sMonth varchar(20);
iYear smallint;
iDayOfMonth smallint;
iWeekOfYear smallint;
iMonthOfYear smallint;
adddays int;
BEGIN
adddays := 1 ;
dDate := to_date('01/01/2006','mm/dd/yyyy');
WHILE (dDate to_date('12/31/2010','mm/dd/yyyy'))
loop
WeekString := to_char(dDate, 'day'); --星期几
sMonth:=to_char(dDate, 'mm');--月份
iYear:= to_char(dDate, 'yyyy');--年
iDayOfMonth:=to_char(dDate, 'dd');--日(字符型)
iWeekOfYear:= to_char(dDate,'fmww');--年的第几周
iMonthOfYear:=to_number(sMonth);--日(数字型)
INSERT INTO time_by_day_dimension(time_id,the_date, the_day, the_month, the_year, day_of_month, week_of_year, month_of_year)
VALUES (seq_time_id.nextval,dDate, WeekString, sMonth, iYear, iDayOfMonth, iWeekOfYear, iMonthOfYear);
dDate := dDate + adddays;
END loop;
end;
最后少了一个字段:季度。你再学习添加一下吧!
《数据仓库工具箱》读书笔记(一):维度建模初步
1、方便地保存数据
2、数据一致性
3、适应变化
4、及时展现数据
5、信息安全
6、数据权威
7、支撑业务
1、理解业务 理解用户
2、为用户提供高质量、相关的、可访问的信息
3、维护数仓/分析环境
1、维度模型和3NF模型包含的数据是一样的,只是维度模型存储的数据更易理解,查询性能更高,包装得更灵活
事实表:
2、维度模型中的事实表来自对业务过程性能的 度量
3、事实表中每行对应一个度量事件
4、每行中的数据是一个特定级别的细节数据,称为 粒度
5、事实表通常分为事务、累计快照、周期快照
6、事实表主键通常成为组合键
维度表:
7、维度表包含与业务过程度量事件有关的文本 环境
8、数仓分析环境取决于维度属性的质量和深度
1、Kimball
1、收集业务需求与数据实现
2、维度设计过程:选择业务过程、声明粒度、确认维度、确认事实
3、业务过程是组织完成的操作型活动(订单、注册)
4、粒度:事务表里的每一行表示的是什么
5、维度:用于描述环境
6、事实:对业务过程进行度量
7、灵活扩展:事实粒度一致时可直接创建列,通过新的维度列关联维度至事实,可以在维度表上简历新列添加属性,可以使事实表粒度更原子化
1、事实表行对应一个度量事件
2、可加、半可加是针对维度而言的,部分维度可加的是半可加。
3、事实表中的外键不能存在空值
4、最好保证事实度量是一致的
5、事务事实表:一行对应空间或时间上某点的度量事件,比如订单表、日志表
6、周期快照事实表:每行汇总了发生在某一周期的多个度量事件,比如一个用户在一天里的点击、退出次数
7、累计快照事实表:每行汇总了发生在过程开始和结束之间可预测步骤内的度量事件,比如订单有提单、支付、成单、配送、评价的可作为度量的过程
8、无事实事务表:可能存在某些事件仅仅记录 多维实体 ,没有数字化的事实
9、聚集事实表:对原子粒度事实表数据进行上卷
感觉多数还是事务和聚集事实表
1、维度表应当具有单一主键列,它是扁平非规范表
2、维度表需要主键,可以为维度表生成无语义的整数型主键,可以借助UDF来进行生成
3、操作型系统中自然键不能满足需求时可以采用持久性超自然键
4、将常用维度退化到事实表中,清楚地表明没有关联的维度
5、同一维度可能存在不同的层次,一级城市,二级城市
6、可以建立将不同维度合并到一起的杂项维度,而不要为每个标识或属性定义不同维度
7、 雪花维度: 低粒度属性作为辅助表通过属性键连接到基本维度,当这一过程中包含多重维度表层次时,建立的多级层次结构被称为雪花模式
8、支架维度:被引用的辅助维度成为支架维度,比如银行账户维度可以引用开户日期维度
当不同的维度表的属性具有相同列名和领域内容时,称维度表具有一致性
1、原样保留
2、重写
3、增加行
4、增加新属性(列)
1、固定深度位置层次,能够提佛那个可预测的、快速的查询性能
2、其他还可能存在可变深度层次、层次桥接、路径字符属性可变深度层次,但这些最好向固定深度层次进行统一
1、蜈蚣事实表:存在多层次维度外键
2、事实表也可分配代理键
3、多遍SQL以避免事实表间的连接
1、聚集事实也可作为维度进行处理(例如金额大于多少的用户)
2、步骤维度:在日志表里可以为行为顺序进行编号,探究行为发生的过程,这个维度叫步骤维度
文章名称:维度表怎么建Oracle,维度表怎么建Oracle
本文URL:http://cdiso.cn/article/hsijid.html