TransFormer 设计宝典.docx
《TransFormer 设计宝典.docx》由会员分享,可在线阅读,更多相关《TransFormer 设计宝典.docx(25页珍藏版)》请在冰点文库上搜索。
![TransFormer 设计宝典.docx](https://file1.bingdoc.com/fileroot1/2023-5/7/c38e6143-261f-4e05-941d-440fd2d34a1a/c38e6143-261f-4e05-941d-440fd2d34a1a1.gif)
TransFormer设计宝典
CognosTransformerOLAP设计手册
一、关于Transformer及其设计相关说明
Transformer是用于创建PowerPlay应用模型的工具。
Transformer模型将数据从各种数据源组织进多维的PowerCube。
在最佳设计的PowerCube中,可以创建能够比较数据和发现趋势的报表。
在用Transformer建立模型之前,非常重要的一点是,首先要评测数据,以及确定如何构造它们,以使它们能够支持业务分析的类型;然后用Transformer构造创建数据的模型;最后创建一个PowerCube。
Transformer不需要编程,因此它易于使用;并能够以快速有效的方法传递多维数据。
二、多维模型设计要点
作模型设计时,选好要说明的业务领域:
●选定能够说明业务领域关键成功因素的度量指标;
●确定能够准确地反映数据等级结构的层。
为了使应用导航比较快速和易于操作,尽量保持每个维度中的层数不超过5层。
为了保证数据的分析最有意义,最好层到下层的类别数比例在1:
10以内。
●选择的维度与度量要匹配。
推荐维度数尽量保持在5~7个,因为较少的维度可以使得应用几乎更直观和易于使用。
在生成PowerCube前,在Transformer模型中必须完成:
●集成数据源数据
●建立维度图
●定义需求的度量
Transformer使用以下三种数据类型:
日期:
具有特定的数据格式,用于支持日期维度中指定的时间周期
文本:
定义维度结构和类别的描述数据,另外也叫结构数据
数值:
定义度量值的数值性数据,另外也叫作事务数据
在Transformer中,度量值总是与维度的最底层类别直接关联的,就是说度量值是从最底层类别集合计算(Rollup)到上层类别。
当PowerPlay在显示最底层以上类别的度量值时,上层数据的集合计算值是在执行用户操作时完成的。
对列、列名、日期等的要求:
●列:
Ø每个维度的最底层需要一个列(集合详细信息到上层)
Ø高层也可以要一个列(建议所有层都有一个相关列)
Ø每个标准度量需要一个列(计算度量除外)
●列名:
在同一数据源中的列名必须唯一
●日期:
如果模型有日期维度,数据源应该包含有日期列
Transformer可以保存两种格式的模型:
●.PYJ----项目文件,以二进制文件存储,各个版本独立.
●.MDC----生成的PowerCube文件格式
三、多维的PowerCube设计流程
1.启动Transformer
2.新建项目,选择包数据源类型:
Transformer可接受多种格式的数据源数据,如package包,access,excel等文件数据源等。
Transformer不支持关系数据库直接连接,因此在将数据加入Transformer之前,确定每个数据源应包含足够的生成维度类别的信息,或使用象Impromptu一样的数据库访问工具,从各自独立的数据库表链接数据源。
常用的数据源为:
FM生成的package包。
为Transformer准备数据源文件有两种方法:
●单数据源:
所有需求的数据放在同一个数据源文件中。
文本型和日期型数据用于建立维度结构,数值型数据用于定义度量。
●多数据源:
由包含两种不同类型数据的数据源构成:
Ø结构数据源包含支持维度结构需要的文本数据;
Ø事务数据源主要包含用于定义度量值的数值数据。
对于已经在Transformer中加载好的数据源,如果需要在FM中对正在使用的包做了相关的修改操作,Transformer并不能立即刷新而识别,需要重新导入数据源,这样CUBE需要重新生成,增加很多的重复工作量。
在实施中多次遇到这种现象,所以做Transformer的工作量和工作时间远远大于FM的设计。
所以,最好确保设计的Package包不需要再次修改,这样极大提高工作效率,但是在项目实施中,由于报表需求、数据需求等的不确定因素,往往需要进行后续修改。
如果改变了数据源文件的结构,数据源数据可能与模型中当前有效的列不匹配。
可以修改模型中的数据源。
在数据源窗格中右击数据源名——ModifyColumn。
2.首先用CognosFrameWork制作准备好package包,然后可选择所需要的Package包文件:
3.选择需要的字段来源:
此处如果需要加载的表比较大,或者字段比较多最好分次进行,同时注意:
此处的数据是直接从数据库查询,会进行全表扫描,速度较慢。
4.去掉自动design的勾选
自动设计检查数据源的列属性,并查找不同列数据之间的关系。
将数据源文件的各列设计为维度、层或度量。
由于自动设计是数据驱动,数据的性质影响创建结构的性质。
通常,自动设计用于提供.
Transformer模型的初始设计,为了满足模型设计的要求可以对其进行进一步的修改和定制。
由于系统自动生成的维度及其类别或者指标不一定是用户所需要的,因此可以自由控制指定维度和指标。
之后,可以在选择另外的数据源数据进行加载,也就是说Transformer支持多数据源数据来源。
5.从数据源选择需要的指标:
可以对维度进行简单的计算,操作界面如下:
右击维度选择showprogram可以显示维度的关系图,可以把不匹配或者为blank的项exclude隐藏掉。
插入计算指标:
注意:
以下三点的设置直接影响数据的正确性,这里是处理延伸计算指标的关键。
●设置number类型数据的outputscale(小数)和precision(数据精度)。
●BeforeRollup度量是先对每个记录作计算,然后再集合计算。
即根据源数据值而不是汇总值计算出度量的值,然后分别Rollup。
●AfterRollup度量是先集合计算,然后根据汇总值计算。
即先汇总值计算出度量的值,然后再执行Rollup。
●设置指标rollup属性时,系统要与关联指标的rollup属性一致,如果不一致系统会提示警告。
格式化数据:
设计金额的指标度量尽量把Allowcurrencyconversion(允许货币转换)勾选上。
双击PowerCubes图标,弹出PowerCube对话框。
我们可以在Dimensions和Measures两个标签页里对某些维度和某些度量进行屏蔽,被屏蔽的维度和度量虽然定义在了模型中,但在生成的立方体中用户看不到它们。
设置为OmitDimension
Transformer的计算功能较少,一些计算可以先在FM包里面先行计算好。
但是有一点,在实施过程中发现如果在FM中的计算指标比较多的话,在Transformer中生成PowerCUBE时时间将会很长,而在Transformer中处理计算生成cube的速度较快,所以最好平衡处理。
在遇到包含小数的指标值时,transformer有时不能完全识别出想要的小数位和精度,需要手工设置,否则,这个地方数据显示会有问题。
6.选择需要的维度。
维度和层的相关说明:
♦维度表示数据的最高层
♦层表示维度数据逻辑上的等级关系(相当于数据的定位)
维度可以典型地说明谁、什么、什么时间和什么地方一类的问题。
在模型中的有效维度决定了应用能够回答问题的类型。
层次化的维度是按业务的组织结构表达数据的等级关系。
每个维度层的等级规则确定了PowerPlay钻取的路径。
注意有层次级别的从高级别到底级别.
设置维度属性:
为了规范设计流程和方便OLAP报表制作用户识别维度的含义,最好把原来维度的名称改为相应的中文描述。
一旦确定了主维度和层,可进一步确定是否有其它的数据可以加到应用中以增强分析,也就是通过计算得出的额外维度。
类别(categories)说明:
●是位于一个维度中层上独立的数据元素(层中数据的具体取值)。
●维度的每一层都有它自己的类别集。
类别在PowerPlay报表中作为行、列或层上的数据项,是必不可少的元素。
●最底层类别表示每个维度中最详细的数据元素。
一般勾选unique属性。
将多数据源的列与维度的层关联有两个步骤:
●出现在不同数据源中的相同含义的数据列应同名。
●需要考虑层中类别的唯一性问题。
关联多数据源列与层说明:
当Transformer在多数据源模型中生成类别时,每个数据源分别被参照模型进行处理。
数据源中的每一列被直接关联到维度图中的层上。
用多数据源模型时,必须将数据源的每个列与维度图中的层准确地关联,因为Transformer:
●不支持列之间的join
●要求每个数据源都能产生模型中的一些类别
●必须至少有一个度量能够与所有的类别相关
●要求包含在多个数据源中的列的类别唯一
为了正确地将多数据源的列与维度图中的层关联:
1.在不同数据源中,给相同含义的列指定相同的名称。
2.如果维度中的层包含唯一的类别,声明层唯一。
3.如果维度中的层不包含唯一的类别,可有两种选择:
增加查询内容,即通过增加一列使得相关层唯一;或在源数据中建一个唯一列。
生成类别:
生成类别并不意味着生成立方体,此时在维度图示中虽然能够看到类别,但它们还没有和度量关联起来。
维度图窗格只是反映了多维结构的维度和层,并没有反映层上数据的具体取值,即“类别(Categories)”。
事实上模型刚设计好时,也只有维度和层,没有“类别”。
要想看到由不同层的“类别”构成的层次架构,就要首先生成“类别”。
Run----GenerateCategories
类别生成后,可用类别计数来评估数据量。
维度中部分类别的屏蔽和排除
设置方法如图:
●可以根据需要对某些类别加以屏蔽或排除。
不同的需要可能屏蔽或排除的范围不同,这样就形成了不同的View。
●在维度图示窗格中,用鼠标右键点击某一个维度名,选择AddNewView,可以为这个维度加一个View。
●可以针对一个View具体设定对类别屏蔽或排除的范围。
“类别”屏蔽和排除的种类
●Exclude:
把指定类别及全部下层类别都排除,既看不见,也不参加汇总。
●Cloak:
把指定类别及全部下层类别都屏蔽,全都看不见,但它们参加汇总。
●Suppress:
仅把本层指定的类别屏蔽,其下层类别提升。
不影响其他兄弟类别,也不影响汇总。
●Summarize:
把指定类别的全部下层类别屏蔽,使它们看不见,把它们的值汇总到当前类别,当前指定的类别看上去就象是处在最低层,
●Apex:
以当前类别作为本维度层次构架的顶点,即只保留当前类别及其以下的部分。
旁系分支全部排除,既看不见,也不参加汇总。
7.插入PowerCUBE
8.设置auto-paration选项,
这里主要影响的是CUBE的生成时间和报表的展现时间。
9。
设置cube_group
如果单个cube文件过大,可以根据维度来分组,进而对CUBE多维数据进行优化。
让PowerCube使用维度中的View
●在PowerCubes窗格中,点开一个Cube,在Dimensions标签页中右击一个定义好View的维度,为它指定一个View的名字。
这个Cube就使用这个View的设置。
10.生成CUBE
12.发布CUBE
对于已经生成被报表正在使用powercube如果需要重新生成或者需要更新或者重新发布cube和数据源,这时都是不允许的,因为正在使用的cube是被锁定的。
因此,需要把所有相关应用全部关闭或者生成另外一个cube.
13.发布生成数据源:
14.注意测试连接
此时一定要修改模型的字符集为UTF-8,否则出错。
并且修改完模型的字符集以后,并不是立即生效,有时要把所有相应得应用关闭在重新打开,可能会重复多次才生效。
多维模型字符集修改界面:
四、使用技巧总结
4.1在日期维度中增加“旬”层
在数据源窗格加入一个自定义的列“旬”:
鼠标右击数据源名,选择InsertColumn,新列命名为“旬”。
Columntype改为Calculated,按Calculation按钮,形成表达式:
If(day(订货日期)<=10)then('上旬')else
(if(day(订货日期)<=20)then('中旬')else('下旬'))
把新定义的列“旬”加到维度图窗格日期维度的适当的位置。
在层标“旬”上双击,在OrderBy标签页指定按订货日期排序。
4.2跨时间的趋势比较(当期同期数据处理)
如何比较这个月和上个月或去年同月的销售情况?
或这个季度的最后两个月与上个季度的最后两个月里指定产品销售的增长情况?
基于日期维度,Transformer自动创建几个标准的相对日期类别,并将它们按组构造以便于理解和定义。
这些相对日期类别易于使用户得出比较时间问题的答案。
由于在立方体中包括了比较常用的相对日期类别,避免了在每个PowerPlay报表中重新计算。
在标准日期里,相对日期类别是默认产生的。
在非标准日期里,相对日期类别必须创建生成。
相对日期类别是跟踪指定时间周期度量值,相对于当前日期的特殊日期类别。
如果需要创建一个相对日期类别或修改隐含的设置,应使用特殊类别对话框。
相对日期组的构成:
●priorperiodto-date
●periodto-date
●差值计算
●增长率计算
QTDGrouped~Change计算PriorQTD和当前QTD之间的不同
QTDGrouped~Percent-growth计算PriorQTD和当前QTD之间的不同,并按PriorQTD的百分比表示
4.3日期维度有两种类型:
●标准
Ø由单独一列建立
Ø通常是由Transformer预定义
Ø可以自定义.
●非标准
Ø可以用多个列定义非标准日期维度
Ø类别之间的关系完全由用户定义
五、实施中常见问题总结
5.1延伸计算指标的Rollup属性设置
5.2数值型数据精度和小数的设置
5.3跨时间的趋势比较(当期同期数据处理)
5.4比值或者百分比比率的计算
5.5时间等复杂维度的设置