使用 Flex3 开发 OLAP 应用
2010-03-31 00:00:00 来源:WEB开发网然后我们创建 OLAPQuery 来查询。myCube.addEventListener(CubeEvent.CUBE_COMPLETE, runQuery); 在这句话中,用到了 Flex 中常用的回调机制——当 cube 模型建立完成后,会自动调用 runQuery 方法来执行默认的查询。在 runQuery 方法中,接收 CubeEvent 的 target 作为其 IOLAPCube,然后构建一个 IOLAPQuery 并继而执行之。
在每个 IOLAPQuery 中,均有 ROW_AXIS 与 COLUMN_AXIS 两个维度。并继而对横轴和纵轴分别添加相应的 OLAPSet 信息以填充具体的数据信息。
清单 7. runQuery
private function runQuery(cubeEvent:CubeEvent):void {
// 得到清单 6 创建好的 cube,cubeEvent 通过回调的方式将其返回
var cube:IOLAPCube = IOLAPCube(cubeEvent.currentTarget);
// 创建查询实例
var query:IOLAPQuery = getQuery(cube);
// 执行查询
var token:AsyncToken = cube.execute(query);
// 设置回调函数来处理返回结果及错误信息
token.addResponder(new AsyncResponder(showResult, showFault));
}
清单 8. getQuery
private function getQuery(cube:IOLAPCube):IOLAPQuery {
// 创建 OLAPQuery 实例来表示一次查询
var query:OLAPQuery = new OLAPQuery;
// 得到此查询的横轴
var rowQueryAxis:IOLAPQueryAxis = query.getAxis(OLAPQuery.ROW_AXIS);
// 创建对应于横轴的 OLAPSet
var productSet:OLAPSet = new OLAPSet;
// 从 cube 中将关于产品维的聚集数据加入此 OLAPSet 中
productSet.addElements(
cube.findDimension("Dim1").findAttribute(chartXML.dim1label).children);
rowQueryAxis.addSet(productSet);
// 得到此查询的纵轴
var colQueryAxis:IOLAPQueryAxis = query.getAxis(OLAPQuery.COLUMN_AXIS);
// 创建对应于纵轴的 OLAPSet
var quarterSet:OLAPSet= new OLAPSet;
// 从 cube 中将关于时间维的聚集数据加入此 OLAPSet 中
quarterSet.addElements(
cube.findDimension("Dim2").findAttribute(chartXML.dim2label).children);
colQueryAxis.addSet(quarterSet);
return query;
}
更多精彩
赞助商链接