维度表怎么建Oracle 什么叫维度表
sql server 2000 怎么建立维度表
有两种方法1,在新建查询里可以用代码建create table 表名{}
成都创新互联公司主营宕昌网站建设的网络公司,主营网站建设方案,app软件开发公司,宕昌h5成都微信小程序搭建,宕昌网站营销推广欢迎宕昌等地区企业咨询
2,直接手动操作,在自己建的数据库中,点击+号,在下面出现表,在表上点击右键,再点新建 ,希望对你有所帮助。
【总结】维度数据建模过程及举例
本文介绍数据仓库中维度数据建模的过程描述,并举一个示例以加深对相关概念的理解。
维度模型是数据仓库领域大师Ralph Kimall所倡导,他的《数据仓库工具箱》,是数据仓库工程领域最流行的数仓建模经典。维度建模以分析决策的需求出发构建模型,构建的数据模型为分析需求服务,因此它重点解决用户如何更快速完成分析需求,同时还有较好的大规模复杂查询的响应性能。
1、通过对业务需求以及可用数据源的综合考虑,确定对哪种业务过程开展建模工作
2、建立的第一个维度模型应该是一个最有影响的模型——它应该对最紧迫的业务问题作出回答,并且对数据的抽取来说是最容易的。
注:粒度是指数据仓库的数据单位中保存数据的细化或综合程度的级别,细化程度越高,粒度就越小
1、应该先优先考虑为业务处理获取最有原子性的信息而开发维度模型。原子型数据是所收集的最详细的信息,这样的数据不能再做更进一步的细分。
2、数据仓库几乎总是要求在每个维度可能得到的最低粒度上对数据进行表示的原因,并不是因为查询想看到每个低层次的行,而是因为查询希望以很精确的方式对细节知识进行抽取。
一个经过仔细考虑的粒度定义确定了事实表的基本维度特性。同时,经常也可能向事实表的基本粒度加入更多的维度,而这些附加的维度会在基本维度的每个组合值方面自然地取得唯一的值。如果附加的维度因为导致生成另外的事实行而违背了这个基本的粒度定义,那么必须对粒度定义进行修改以适应这个维度的情景。
确定将哪些事实放到事实表中。粒度声明有助于稳定相关的考虑。事实必须与粒度吻合。在考虑可能存在的事实时,可能会发现仍然需要调整早期的粒度声明和维度选择
维度建模中有一些比较重要的概念,理解了这些概念,基本也就理解了什么是维度建模。
额,看了这一句,其实是不太容易理解到底什么是事实表的。
比如一次购买行为我们就可以理解为是一个事实,下面我们上示例。
图中的订单表就是一个事实表,你可以理解他就是在现实中发生的一次操作型事件,我们每完成一个订单,就会在订单中增加一条记录。
我们可以回过头再看一下事实表的特征,在维度表里没有存放实际的内容,他是一堆主键的集合,这些ID分别能对应到维度表中的一条记录。
我们的图中的用户表、商家表、时间表这些都属于维度表,这些表都有一个唯一的主键,然后在表中存放了详细的数据信息。
下面我们将以电商为例,详细讲一下维度建模的建模方式,并举例如果使用这个模型(这点还是很重要的)。
假设我们在一家电商网站工作,比如某宝、某东。我们需要对这里业务进行建模。下面我们分析几点业务场景:
好,基于这几点,我们来设计我们的模型。
下面就是我们设计出来的数据模型,和之前的基本一样,只不过是换成了英文,主要是为了后面写sql的时候来用。
我就不再解释每个表的作用了,现在只说一下为什么要这样设计。
首先,我们想一下,如果我们不这样设计的话,我们一般会怎么做?
如果是我,我会设计下面这张表。你信不信,我能列出来50个字段!其实我个人认为怎么设计这种表都有其合理性,我们不论对错,单说一下两者的优缺点。
先说我们的维度模型:
再说我们这张大款表的优缺点:
数据模型的建立必须要为更好的应用来服务,下面我先举一个例子,来切实地感受一下来怎么用我们的模型。
需求 :求出2016年在帝都的男性用户购买的LV品牌商品的总价格。
实现 :
维度建模是一种十分优秀的建模方式,他有很多的优点,但是我们在实际工作中也很难完全按照它的方式来实现,都会有所取舍,比如说为了业务我们还是会需要一些宽表,有时候还会有很多的数据冗余。
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;
最后少了一个字段:季度。你再学习添加一下吧!
维度建模的流程
一、收集业务需求和数据实现
开始维度建模工作前,需要理解业务需求,以及作为基础的源数据的实际情况。通过与业务代表交流来发现需求,用于理解他们的基于关键性能指标、竞争性商业问题、决策制定过程、支持分析需求的目标。数据实际情况可以通过和源数据的开发交流,构建高层次数据分析访问数据的可行性来揭示。
二、协作维度建模研讨
维度模型应该通过与业务代表开展一些列高级别交互讨论和作品设计而成。
三、4步骤维度设计过程
1、选择业务过程
业务过程是组织完成的操作型活动。业务过程事件建立或获取性能度量,并转换为事实表中的事实。多数事实表关注某一业务过程的结果。过程的选择是非常重要的,因为过程定义了特定的设计目标以及对粒度,维度,事实的定义。每个业务过程对应企业数据仓库总线矩阵的一行。
2、声明粒度
声明粒度是维度设计的重要步骤。在选择维度或事实前必须声明粒度,因为每个候选维度或事实必须与定义的粒度保持一致。在所有维度设计中强制实行一致性是保证BI应用性能和易用性的关键。在从给定的业务过程中获取数据时,原子粒度时最低级别的粒度。最好从原子级别粒度开始设计,因为原子粒度能够承受无法预期的用户查询。针对不同的事实表粒度,要建立不同的物理表,在同一事实表中不要混用多种不同的粒度。
3、确认环境的维度
维度围绕某一业务过程事件所涉及的谁、什么、何处、何时、为什么、如何等背景。维度表包含BI应用所需要的用于过滤及分类事实的描述性属性。牢牢掌握事实表的粒度,就能够将所有可能存在的维度区分开。当与给定的事实表关联时,任何情况都能保证维度表唯一值。
4、确认用于度量的事实
事实设计来自业务过程事件的度量,基本上都是以数量值表示。一个事实表行与按照事实表粒度描述的度量事件之间存在一对一关系,因此事实表对应一个物理可观察的事件。在事实表内,所有事实只允许与生命的粒度保持一致。
如何用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结构:
可视化数据表如何添加维度表
创建维度表时:
可以关联本维度表是用于分析哪个业务分类、哪个数据域,便于后续直接查看具体某一数据域或数据集市下,有哪些维度表。
可以指定维度表后续在数据建模分析使用时,维度表的数据存储于数仓中的哪个数据分层,一般情况下维度表可存储于公共维度层(DIM层)。
维度表创建后,您可以将维度的属性添加为维度表的字段,并对维度表进行关联和分区的设置,使用统一的数据标准来进行字段设置,保障全数据域中的维度数据的属性是一致的。
维度表配置完成后:
可物化至存储引擎,后续在计算引擎中使用维度表进行数据分析。
在进行数据派生指标和汇总表的设计创建时,可直接关联使用维度表中的维度。
创建维度表
进入维度建模。
登录DataWorks控制台。
在左侧导航栏,单击工作空间列表。
选择工作空间所在地域后,单击相应工作空间后的数据开发。
单击左上方的图标图标,选择全部产品 数据建模 维度建模,进入维度建模页面。
创建维度表。
在维度建模页面,鼠标悬停至加号图标,单击逻辑模型 创建维度表。
配置维度表的基本信息。
您可根据需求,选择维度表所挂载的层级、数据域、业务分类、数据集市等信息,选择后,后续可进入相应对象的列表查看所创建的维度表。创建维度表主要参数说明如下。
参数项 描述
存储策略 维度表基于什么策略(即存储数据的时间周期及数据量范围)存储数据。
维度 维度表关联的维度,用于配置维度表分析数据的视角。
说明 创建维度,详情请参见创建维度。
表名规则 通过已配置的检查器规范维度表的命名规则。选择检查器后,该维度表的表名需按照检查器定义的规则配置。
说明 配置检查器,详情请参见配置及使用数仓分层检查器。
生命周期 维度表保留的时间周期。最大可保留36000天。
表类型 根据实际情况,选择如下类型。
普通维度表:普通的维度表,无其他需求可选择该类型。
枚举维度表:可进行枚举的维度表,例如性别维度表。
层级维度表:存在字段需要设置层级关系,支持指标做上卷和下钻使用。例如国家、省份、市县等。
配置完成后,单击保存,维度表创建成功。
在维度建模左侧目录树相应的数据域或业务分类下,可查找并统一管理维度表。
名称栏目:维度表怎么建Oracle 什么叫维度表
文章转载:http://ybzwz.com/article/hjhdgh.html