金融其它商业智能cognos

Cube增量更新

当刷新立方体时间过长的时候,增量更新是缩短刷新时间的好办法。增量更新的时候,只会对立方体加载新增加的数据,以前的数据不会进行更改,这样会缩短读取数据的时间;另外在刷新立方体的时候,也会缩短刷新时间。目前,增量更新的方式有两种:Ø普通增量更新(立方体属性/processing/The ...显示全部

当刷新立方体时间过长的时候,增量更新是缩短刷新时间的好办法。增量更新的时候,只会对立方体加载新增加的数据,以前的数据不会进行更改,这样会缩短读取数据的时间;另外在刷新立方体的时候,也会缩短刷新时间。

目前,增量更新的方式有两种:

Ø
普通增量更新(立方体属性/processing/The Cube is incrementally updated)(适用目前市场上的所有版本)

Tip 1: 在立方体的结构(包括指标,维度,层次等)发生变化,必须重新全部加载数据

Tip 2:推荐您定期重建PowerCube。第一次建立立方体时,自动分区( Auto-Partitioning)功能可以将维度和层分割为多个分区层(partitioning level)。在此之后所有新的类别将被加到“0”分区层上。如果随时间的变化增加了很多类别,PowerCube用户最终会遇到性能问题。使用所有当前类别重新生成PowerCube将允许Transformer设计出一种新的分区模式。下面的例子是每四次增量更新后进行一次完整重建的调度情况:

Build 处理行为

初始化加载

对build1进行增量更新1

在build 2上进行增量更新2

在build 3上进行增量更新3

在build 4上进行增量更新4

由初始加载和从增量更新1到增量更新4组成的完全加载

在build 5上进行增量更新5

在build 7上进行增量更新6…

Ø
按时间分区更新(新增立方体/Cube Group/Enable Time-based Partitioning)(7.0以后版本支持)

按时间分区更新技术是基于普通增量更新之上的,使用按时间分区会生成一个虚拟立方体(该立方体并不保存数据,只保存维度信息),一个定义文件,还有包含数据的若干子立方体。

举例说明:有一年的数据,按月分区,这样每个月就会有一个立方体,总共是12个。

Tip 1: 立方体增量更新之后,请保存模型,这样可以保证Category的完整性。如果Category不完整,可能会存在子立方体的Category在虚拟立方体中找不到的情况,这样立方体的刷新是无法继续的。

Tip 2: 子立方体默认都是增量更新的,所以和普通增量更新一样,如果某个子立方体有了多次刷新之后,也必须进行一次全量更新。比如:按月分区但是每天都刷新数据,当月的立方体必然会进行多次更新,这时候就必须删掉当月的立方体,重新刷新一下。

Tip 3: 通常建议按月分区,按日分区的话,一年的子立方体太多,打开虚拟立方体的时候速度会比较慢,如果按季度、年分区的话,可能会有Tip 2中的问题。

二、


简述全量与增量设计思路
什么是全量?什么是增量?通过字义可理解实际含义。我们常说全量与增量是针对计算机学科而言,以OLAP型数据库应用较广泛。设计数据仓库与数据集市,都会考虑一次全量,多次增量加载。数据仓库架构师会根据业务系统特点设计什么时间段按全量,什么时间点该考虑增量,但常规做法,初次入库加载部分测试数据,而生产系统加载全量实例。本次不多谈EDW数据加载方案。
Cognos Transfomer设计Cube模型也有全量与增量设计功能,全量与增量区别在于只加载新增数据,还是同历史数据一起加载呢?什么时候用全量,什么时候用增量。根据第一次生成数据的时间决定,个别需求本身不适合做增量,尽量用全量加载,减少不用的维度。在设计上也有区别,增量刷新首先考虑维度成员不能渐变,节点成员必须唯一性。
设计理想状态下的模型,必须从业务需求开始,了解自身企业数据仓库的架构,结合Cognos工具特点,遵循以下几点设计:
1、
需求分析与调研,考虑模型架构设计。
2、
通过需求定位数据源,整理指标口径
3、
确认源数据量、存储方式、远程服务器网络等因素。
4、
设计CognosCube按照全量还是增量,增量有自动增量,分组增量。
5、
增量与全量的维护要求
全量设计案例
       Cube全量设计没有特殊的配置,对于表数据量低于100万级,可以考虑全量,毕竟全量不仅仅是看一个表的数据,而是看你模型要加载多少张表,累计每张表数据,通过手工计算,Cognos Transfomer抽取10000条记录大概是0.5~1秒钟。模型加载的数据源越多,数据量巨大,维度层级越深,生成的数据结果越不稳定。建议模型设计与需求人员讨论,确定需求范围,结合设计工具性能。模型设计越简单越好,维护更轻松。

数据源、维度层级、度量设计好之后,对PowerCube窗口新增加一个Cube名称,如果不按某个维度进行分组,因Cube最大限制2G,考虑Cube的限制,可以设置“Cube Group”属性。全量设计就不考虑限制问题,其他属性默认。

全量设计必须面临一个刷新数据时间问题,每次运行都是取全部的表数据,并不是新增数据自动增加到Cube中,我可以设计一个合理的方案,改变数据源存储,以视图或者配置表形式控制,对新增数据做标识。如:每月新增,可以在视图直接指定,或者在配置表关联事实表等方式结合,达到每次只取最新记录。同时修改PowerCube属性下的“Processing”选项“This Cube is incrementally updated”。如下图:

       本选项随时可以修改,目的是减少生成Cube的时间。但要注意,维度层级选项不能设置“Move”,增量刷新的前提:所有维度成员与指标是相当静止不可改变。

增量设计案例
增量设计有两种思路:
第一种,不分组设置“Processing”选项中的“This Cube is incrementally updated”。全量设计案例已经提到该方法。
第二种,基于日期分割Cube,新创建PowerCube名称,在属性设置“Cube Group”选项 “Enable Time-based Partitioning”。如下图:

       设置了“Cube Group”选项中的 “Enable Time-based Partitioning”。而“Processing”选项中的“This Cube is incrementally updated”变成灰色,控件失效。

注意:增量按日期分组设计Cube要保证维度成员在某一段时间是不发生变化,如果有变化的维度,必须刷一次全量,以后基于本次全量再刷增量。增量分组会自动创建三个文件,其中文件夹下保存了多个子Cube,子Cube可以独立运行。对于新增角色、并加载权限到Cube中,只需PowerCube Update动作。收起
参与7

查看其它 4 个回答Steve_hust的回答

Steve_hustSteve_hust研发工程师杭州某集团医院
学习下,好好研究下看看
事业单位 · 2015-04-01
浏览1173

回答者

Steve_hust
研发工程师杭州某集团医院

Steve_hust 最近回答过的问题

回答状态

  • 发布时间:2015-04-01
  • 关注会员:2 人
  • 回答浏览:1173
  • X社区推广