IBM cognos学习笔记:Transfomer模型设计
- +1 你赞过了
第一章 开始 (p340)
模型设计的本质:模型设计的好坏主要取决于业务数据的规范和对业务数据及其关系的理解。
Transformer 是用于整合数据源数据和建立模型的工具
数据建模的过程:用户需求--》数据--》模型--》视图(展示)根据最终应用的目标和特性,建立一个成功的PowerCube
从模型到PowerCube:1. 输入数据源 2. 建立和检验度量 3.建立和检验维度和层 4.创建和测试PowerCubes
PowerCube是:多维数据的逻辑结构和物理结构;由Transformer模型生成,并用于在PowerPlay中查看和操作的数据包。
第二章 规划模型设计 (p345)
维度:是一个与业务相关的观察角度,依赖于数据的有效性和表达业务成效的关键性能指标,能够回答类似下列问题:who?what?where?when?
Transfomer将业务的每个方面构造成一个维度,所有维度在一起提供了业务的多维视图。这个多维视图的数据被存为一个立方体。一个维度下设有若干层,例如:时间维度由年、季度、月构成。
度量是用于评价业务状况的数值型数据。在企业活动中通常是通过如销售额、费用、库存量和定额一类的关键性能指标------度量来监测业务的成效。
不同的度量反映出不同的业务性质。度量之间相互独立。度量是业务量化的表示。PowerPlay可以监测任何能够用数值表示的业务的成功因素。
PowerPlay 多维分析──多维交织
模型设计:
一个模型设计是关于PowerPlay应用结构设计,以及数据需求方案的文档。其作用是:帮助明确用户需求;帮助评估开发应用需要的工作量;把应用设计的目标提供给最终用户,以得到对该设计的认可和肯定;作为应用开发过程的指南。
Transformer中的模型设计
Transformer界面包括四个基本窗格:维度图窗格,数据源窗格,度量窗格,PowerCubes窗格
数据源窗格:
数据源(Data Sources)窗格的作用是将数据集成到模型中来。根据模型设计文档,从能够支持应用的数据仓库及数据库中确定要查询哪些数据,并将它们加载进数据源窗格。然后再将数据源窗格的数据用于建立维度图,并创建PowerCube。
在数据源窗格中可以有一个或多个数据源,每个数据源来自于一个数据源文件(例如.iqd等) ,每个数据源都有自己的数据源名。每个数据源由构成它的若干列(Columns)组成。这是做模型的原始基本素材。
数据源窗格中列的数据类型:打开列的属性(双击列名)--General标签页--Data class;如果数据源不是来源于.iqd,则它的列的数据类型开始为Unspecified(未指定)。
维度图窗格:是一个用于建立多维立方体结构的工作区。根据数据源中的文本数据,各个维度以及每个维度下层的设定在此组织(维度和层)。最底层要对应数据源窗格中的一个列。维度图决定了数据在PowerPlay维度栏中出现的顺序。
度量窗格:用于建立和显示模型所需要的度量。度量值是在PowerPlay报表单元中可视的数据。根据模型设计文档,定义应用中需要的度量。度量在度量窗格中的顺序决定了它们在PowerPlay维度栏文件夹中度量的顺序。
模型中至少要有一个度量,度量与维度的最底一层关联。每个标准度量要在数据源中对应有一个列(计算度量除外)。
PowerCube窗格:显示用模型创建的PowerCube。
度量:定量评估业务成效的结果;主要说明数值性问题,如“多少?”;每个度量都增加了对数据的观察角度;要建立PowerCube必须至少要定义一个度量。
虽不是所有的业务指标都要包含在模型设计中,但应尽量寻找增添一些追加度量,因为用户提出的需求并不一定总能对数据分析提供完全有效的结果。通过增加这些新的度量,用户可以用不同的方法分析数据。
追加维度:who,how
层(Levels) 和类别(Categories):
数据被组织进各个维度,并放在相应级别的层里。类别是各维度每层中数据的具体取值。下层类与上层的某个类有父子关系。
类别在PowerPlay报表中出现在行、列的表头上。
维度、层和类别的关系: 维度是一个观察方向,层是该观察方向上的细分,类别是某个层的取值集合的元素。
作模型设计时,选好要说明的业务领域:选定能够说明业务领域关键成功因素的度量指标;确定能够准确地反映数据等级结构的层。为了使应用导航比较快速和易于操作,
尽量保持每个维度中的层数不超过5层。为了保证数据的分析最有意义,最好层到下层的类别数比例在1:10 以内。
选择的维度与度量要匹配。推荐维度数尽量保持在5~7个,因为较少的维度可以使得应用几乎更直观和易于使用。
在生成PowerCube前,在Transfomer模型中必须完成:集成数据源数据;建立维度图;定义需求的度量
第三章 组织数据源数据 (p358)
数据类型 Transformer 使用三种类型的数据:
日期:具有特定的数据格式,用于支持日期维度中指定的时间周期。日期数据定义时间周期
文本:定义维度结构和类别的描述数据,另外也叫结构数据。文本数据定义维度
数值:定义度量值的数值性数据,另外也叫作事务数据。数值数据定义度量
数据源文件是把数据带入模型的计算机文件:来自企业数据 或者 供给Transformer用于作为模型的全部或部分源数据
Transformer 可使用来自一个或多个数据源的数据,Transformer 可接受多种格式的数据源数据
为Transfomer准备数据源文件有两种方法:
单数据源:所有需求的数据放在同一个数据源文件中。文本型和日期型数据用于建立维度结构,数值型数据用于定义度量。
多数据源:由包含两种不同类型数据的数据源构成:结构数据源包含支持维度结构需要的文本数据;事务数据源主要包含用于定义度量值的数值数据。
数据源文件与数据源窗格一一对应:进入数据源的各个列成为组织模型的素材。
.IQD 的优越性:
.IQD包含从数据库抽取的结构信息。使用.IQD是维护和更新数据源数据的有效方法:提高了性能,从Transformer可以运行并更新数据源的列,Transformer能够识别在数据源中定义的列属性,支持穿透钻取到Impromptu.
.IQD 从Impromptu产生,可以直接在Transfomer中引用。你总可以访问最新数据,而避免了更新数据所需要进行的批处理。Impromptu提供对多种不同数据库的访问特性,使数据源的创建和维护简单化。
由于.IQD仅仅包含结构信息,它们占用的空间小。这避免了向生产平台传输大规模的文件。
Transfomer能够直接读解包含在.IQD中的数据的列属性。
如果数据源是一个.IQD文件,Transfomer自动加入相关的Impromptu报表(.imr)到每个度量的穿透钻取表中。
Transfomer用数据源文件:构造维度、层和类别,将度量与维度结构的最底层联接,将二维数据转换成多维数据
在Transfomer中,度量值总是与维度的最底层类别直接关联的,就是说度量值是从最底层类别集合计算(Rollup)到上层类别。当PowerPlay在显示最底层以上类别的度量值时,上层数据的集合计算值是在执行用户操作时完成的。
修改列:如果改变了数据源文件的结构,数据源数据可能与模型中当前有效的列不匹配。可以修改模型中的数据源。在数据源窗格中右击数据源名——Modify Columns。
第四章 建立模型 (p365)
手动创建模型结构:通过将数据源窗格中的列按顺序和层次摆放到维度图窗格和度量窗格中来建立模型结构。
生成类别:维度图窗格只是反映了多维结构的维度和层,并没有反映层上数据的具体取值,即“类别(Categories)”。事实上模型刚设计好时,也只有维度和层,没有“类别”。要想看到由不同层的“类别”构成的层次架构,就要首先生成“类别”。Run----Generate Categories类别生成后,可用类别计数来评估数据量。
维度图示(Diagram):类别是维度每层上的独立的数据元素。生成“类别”后,可以展开维度图示(Diagram)来查看类别,维度图示是Transformer的一个附加窗格。Diagram ----Show Diagram 或按工具条上图标可以看到每个维度上由不同层的“类别”构成的层次架构。
类别只在维度图示中可见。生成类别并不意味着生成立方体,此时在维度图示中虽然能够看到类别,但它们还没有和度量关联起来。
用维度图示修改:
在维度图示中指针的功能: 左-可以移动层或类别项.右-可以创建层或类别,或连接到其它项上.
使用以下图标增加或删除维度图示中的项:+、-
手工层:上层到下层的类别数比例最好在1:10 以内。如果一个上层类别带有太多的下层类别,可考虑在两层之间加一手工层。
拖拽维度图示中某层名的右侧,定义手工层。从某一个上层类别框的右侧向右拖拽,生成手工层的一个类别, 可重复生成多个手工层的类别。
逐个拖拽下层类别框的右侧,把它们分别归并到不同的手工层的类别之下。
在地区维度,国家层(上层)和办事处层(下层)之间可考虑加入一个手工层。专门用来针对“美国”。“美国”之下的办事处个数明显多于其他国家,显得不太平衡。手工层名为“东西部”,设“东部”和“西部”两个类别。各个办事处(城市)分别归到手工层的两个类别下。其他国家手工层上无类别。
特殊类别:在某些特殊情况下,我们可以把同一维度下不同层上的一些类别汇集到一起,构成一个“特殊类别”。并不去理会它们原来的层次关系。
在维度图示窗格下方框外定义,从维度名称右侧拖出。再从常规各层下选择一些类别接到它下面。特殊类别不参加所在维度的常规汇总,本身也不重复汇总。需要手工维护。
创建PowerCube:
检测模型无误后,按工具条上的Create PowerCubes按钮,即可生成立方体。在PowerCubes窗格中可以看见它的名字。双击该名字,可以看到它的存放路径。
也可以在生成立方体之前预先指定它的存放路径。选中PowerCubes窗格后点击工具条上的按钮,在Output标签页按Browse按钮为它指定存放路径。
维度属性表:Dimension
层属性表: Level (Level name,Source,General,Order By)
类别属性表:Category (Category lable,General,Order By,Category code,Source value,Inclusion,Orphanage)
数据源属性表: Data Source (Data Source name,Source,General,Description, Local data file : "c:\....\***.iqd",Source type:"Impromptu Query Definition",Isolation level :"Default",Database Signons :"PP-db")
列属性表: Column (Column name,Original name,Calculated,Data class数据类型,Position精度,Input scale 小数位数)
度量属性表:Measure (Measure name,Measure lable,Storage type,Drill Through 钻取,Rollup汇总)
PowerCube属性表: PowerCube (PowerCube name,PowerCube file name :"***.mdc",Database type )
维度或度量的屏蔽:在PowerCube属性表中Dimensions和Measures两个标签页里对某些维度和某些度量进行屏蔽,被屏蔽的维度和度量虽然定义在了模型中,但在生成的立方体中用户看不到它们。
维度中部分类别的屏蔽和排除:可以根据需要对某些类别加以屏蔽或排除。不同的需要可能屏蔽或排除的范围不同,这样就形成了不同的View。在维度图示窗格中,用鼠标右键点击某一个维度名,选择Add New View,可以为这个维度加一个View。可以针对一个View具体设定对类别屏蔽或排除的范围。
在View中进行具体设定:在视图中屏蔽和排除维度中的部分类别。
“类别”屏蔽和排除的种类:
Exclude: 把指定类别及全部下层类别都排除,既看不见,也不参加汇总。
Cloak: 把指定类别及全部下层类别都屏蔽,全都看不见,但它们参加汇总。
Suppress: 仅把本层指定的类别屏蔽,其下层类别提升。不影响其他兄弟类别,也不影响汇总。
Summarize: 把指定类别的全部下层类别屏蔽,使它们看不见,把它们的值汇总到当前类别,当前指定的类别看上去就象是处在最低层。
Apex: 以当前类别作为本维度层次构架的顶点,即只保留当前类别及其以下的部分。旁系分支全部排除,既看不见,也不参加汇总。
在维度图示窗格中设。
让PowerCube使用维度中的View:在PowerCubes窗格中,点开一个Cube,在Dimensions标签页中右击一个定义好View的维度,为它指定一个View的名字。这个Cube就使用这个View的设置。
第五章 日期维度 (p387)
日期维度包含表示时间周期的类别
日期维度有两种类型:
标准:由单独一列建立,通常是由Transformer预定义,可以自定义.
非标准:可以用多个列定义非标准日期维度,类别之间的关系完全由用户定义
定义日期格式:源数据--》Transformer-->日期列属性表--》判断数据源的列是否为日期型的数据,如果不是把数据设置为日期型--》设置日期输入格式--》设置详细程度
修改日期显示格式:在层属性表中设置日期格式。
标准日期维度:Transformer 用年、季度和月作为默认的标准日期维度的层。
日期维度中的层(如年、季、月),由于不是对应一个独立的列,在其属性中的Time标签页要用到一个日期函数。可根据情况选择适当的日期函数。如果要增加新层,可利用日期函数定义。
日期维度中的日期函数:双击维度图中日期维度的某一层,转到Time标签页,可看到日期函数。
在日期维度中增加“日”(day)层:把“订购日期”从数据源窗格拖到维度图中日期维度的最下端,作为一个新层;双击新加入的新层“订购日期”,展开Level对话框, 转到Time 标签页;
在Date Function 中目前没有对应的函数,把它改为函数Day;把层名(Level Name)改为“Day”;还可以修改日期的格式。
按工具条上按钮生成“类别”。可从维度图示中看到“Day”层上的类别。
在日期维度中增加“旬”层:
在数据源窗格加入一个自定义的列“旬”:鼠标右击数据源名,选择Insert Column,新列命名为“旬”。Column type 改为Calculated, 按Calculation按钮,形成表达式:If (day(订货日期)<=10) then('上旬') else (if (day(订货日期)<=20) then('中旬') else('下旬') )
把新定义的列“旬”加到维度图窗格日期维度的适当的位置。在层标“旬”上双击,在Order By标签页指定按订货日期排序。
基于时间分区的Cube(虚拟Cube):物理Cube可以按照时间值分割成多个分Cubes,这多个分立方体的总和提供了一个逻辑上完整的总Cube的单一视图。
如果按照年(Year)设分区,则每一个年份产生一个分Cube。如:19960101-19961231.mdc,19970101-19971231.mdc。这些分Cube可以单独使用,也可以联合成一个逻辑整体在时间维度上跨年份使用。
在PowerCube属性表Cube Group中选中Enable Time-based Partitioning (启用基于时间的分区),维度Dimension选择日期,层Level选择Year,即已年为分区依据。
第六章 多数据源 (p398)
在Transformer 模型中的多数据源:多数据源模型能够从多个不同数据源连接数据,它们可以是不同的存储格式。如,Excel表和.IQD文件。
加到模型中的数据源数目不限。Transfomer通过含有度量的数据源里的结构信息确定每个度量与维度的关系。
为什么使用多数据源:将不同类型数据源的数据用于同一个模型中;向已存在的模型加入新的数据源;提高模型的性能;数据易于管理。
提高模型的性能:多数据源减少了Transfomer处理的数据的总量,能够提高生成类别和创建PowerCube的速度。因为结构信息只需要定义说明一次,而不是对每个加载到模型的数据记录都要说明,因此提高了性能。
数据易于管理:不必象许多数据库管理那样要管理表连接,也不用做一些与数据访问有关的管理作业,更不需要使用公共的查询工具准备数据源。例如,某些数据是静态的,而另一些数据是要经常更新的。如果将静态和动态的数据分别放进不同的数据源,就不需要经常管理静态数据。
多数据源的不同类型:根据所含列的数据类型分为结构数据源和事物数据源。
事务数据源:指含有代表度量的事务数据(通常是数字型)。主要包含的列是数据库中事务数据(数值数据),还要包含各个维度最底层的文本型数据项。
结构数据源:指仅含有用于建立维度和层的结构数据(通常是文本型)。包含指定模型结构的某个维度下的各层的数据项。一般是文本型的数据,但有时也可能有数值数据列。
Transfomer不是做数据库连接,因此在将数据加入Transfomer之前,确定每个数据源应包含足够的生成维度类别的信息,或使用象Impromptu一样的数据库访问工具, 从各自独立的数据库表链接数据源。
多数据源的规则:
事务数据源:为提供度量, 可以创建一个或多个事务数据源。在事务数据源中提供充分的结构数据列,以便在每个维度中集合计算(Rollup)度量。
结构数据源:为每个维度创建一个结构数据源。按照将在维度图上出现的顺序,排放数据源和它们的列。最好将结构数据源放在事务数据源的前面。
多数据源与维度结构、度量的关系:要把每个维度最底层那个数据项也收集进事务数据源中以实现度量值的分解。
每个结构数据源对应一个维度结构,该维度的最下层需要记录在事务数据源中,然后依据最下层属性的不同汇总维度各层的度量。
将多数据源的列与维度的层相关联:出现在不同数据源中的相同含义的数据列应同名;需要考虑层中类别的唯一性问题。
声明唯一性:
当数据不唯一时,如果指定层的类别是唯一的,将产生无效的结果。因为通过声明唯一性,并不能使数据变成唯一,只是告诉Transfomer,模型源数据的属性。
如果一个维度的最底层不能保证数据有唯一性,可以在源数据中创建一个有唯一性的列。如果一个维度的最底层能保证数据有唯一性,可以在层属性表中声明唯一。
数据不唯一造成的问题:如果最底层数据不唯一,则需要把它的上一层的信息也要收集进事务数据源。即下层无法指定自己的父亲是谁时,必须在事务数据中引入父亲,以确定底层数据的唯一性。所以在对层进行编码是一定要注意编码的层次性,例如:日期的编码必须是年份+月份+日期,单独写个25号,根本不清楚那年那月的25号。
有效维度的关系:在维度图中查看各数据源对各个维度、层的作用范围。Edit ----Show Scope可看各个维度与各度量、各数据源之间的关系。
直接(深黄)未声明唯一性(红)间接(淡黄)无关(白)。在Data Sources上选择事务数据源即可。
声明层唯一性:从层属性表设置唯一性。双击层名展开Level对话框。Transformer在PowerCube产生期间验证类别的唯一性。
把代码显示成对应的名称:维度图中,产品、地区、客户三个维度的最低层为保证唯一用的都是代码,但我们希望在维度图示和PowerPlay报表中显示它们对应的产品名称、销售员名和客户名。双击层名,点开Label, 选择对应的列名。
多数据源模型的注意事项:
结构数据源放在前,事务数据源放在后;各维度底层数据项也要出现在事务数据源中以保证度量值能够带到各个维度上;
用Show Scope显示颜色检查覆盖关系;声明唯一性;将代码转换成文字。
增量更新:
Cube可采用“增量更新”方式。此时是把事务数据源中的数据添加到原有的Cube上,原有的数据保留,并不重做。此时的事务数据源应该另外设置成只含有增量的部分。做了若干次“增量更新”之后应该选择时机再做一次全量更新。
在PowerCube属性表点开Processing页签,勾选This cube is incrementally update即可。
最新资讯
热门视频
新品评测