使用 Flex3 开发 OLAP 应用
2010-03-31 00:00:00 来源:WEB开发网图 3. Pie Chart – customized style
OLAPDataGrid 的使用
在 Flex3 之前,大多数的表格都是基于 DataGrid 的,其以多列布局显示给定的数据集。而在 Flex3 中,添加了两个类似于 DataGrid 的控件:AdvancedDataGrid 和 OLAPDataGrid。其中 OLAPDataGrid 组件的出现,大大加速了 OLAP 应用中常见的多表头数据集的开发。接下来我们重点介绍 OLAPDataGrid 的用法及相应扩展。
在 .mxml 中定义 OLAPDataGrid 组件的代码如下:
<mx:OLAPDataGrid id="myOLAPDG" width="100%" height="100%"></mx:OLAPDataGrid>
而具体的构建 OLAPDataGrid 的动作,同样我们也放在 actionscript 中进行。数据立方体模型作为 OLAP 应用中的模型核心,在 Flex 的 OLAPDataGrid 组件中亦如此。
数据立方体数据立方体是一类多维矩阵,允许以多维角度对数据建模和观察。
首先我们需要在逻辑定义 cube 模型的各维度信息,本例子就是清单 1 中所示的产品维和时间维。
接着我们就可以构建这个 cube。OLAPCube 的 elements 属性包含了所有需要显示的维度,所以此例中将两维信息(产品,时间)以 OLAPDimension 加入其中,而度量值(销售额)则以 OLAPMeasure 的方式加入其中。对于产品维和时间维需要用 OLAPDimension 来设置相应的 OLAPAttribute 与 OLAPHierarchy,销售额维则采用 OLAPMeasure 来设置。
清单 6. createCube
private function createMyCube():void {
myCube = new OLAPCube();
myCube.addEventListener(CubeEvent.CUBE_COMPLETE, runQuery);
// 创建 dim1 维度
var dim1:OLAPDimension = new OLAPDimension("Dim1");
// 对于 dim1 创建其 attributes
var attr1:OLAPAttribute = new OLAPAttribute(chartXML.dim1label);
attr1.dataField = "dim1";
attr1.displayName = chartXML.dim1label;
dim1.attributes = new ArrayCollection([ attr1 ]);
// 在维上创建用户定义的 hierarchy
var dim1Hierarchy:OLAPHierarchy = new OLAPHierarchy("Dim1");
// 在 hierarchy 上定义 level
var level1:OLAPLevel = new OLAPLevel();
level1.attributeName = chartXML.dim1label;
dim1Hierarchy.levels = new ArrayCollection([ level1 ]);
// 将创建好的 hierarchy 设置在 dim1 上
dim1.hierarchies = new ArrayCollection([ dim1Hierarchy ]);
// 创建 dim2 维度
var dim2:OLAPDimension = new OLAPDimension("Dim2");
// 对于 dim2 创建其 attributes
var attr2:OLAPAttribute = new OLAPAttribute(chartXML.dim2label);
attr2.dataField = "dim2";
//attr2.displayName = chartXML.dim2label;
dim2.attributes = new ArrayCollection([ attr2 ]);
// 在维上创建用户定义的 hierarchy
var dim2Hierarchy:OLAPHierarchy = new OLAPHierarchy("Dim2");
// 在 hierarchy 上定义 level
var level2:OLAPLevel = new OLAPLevel();
level2.attributeName = chartXML.dim2label ;
dim2Hierarchy.levels = new ArrayCollection([ level2 ]);
// 将创建好的 hierarchy 设置在 dim2 上
dim2.hierarchies = new ArrayCollection([ dim2Hierarchy ]);
// 创建 measure 度量信息
var measure:OLAPMeasure = new OLAPMeasure("Measure");
measure.dataField = "measure";
measure.aggregator = "SUM";
// dim1 维度,dim2 维度以及 measure 度量信息构成了整个 cube 的所有元素
myCube.elements = [ dim1, dim2, measure ];
}
更多精彩
赞助商链接