百灵报表(BIRT)接口学习:执行Cube Query

首先我们通过Designer定义下面的Cube(用接口当然也可以)

 

Cube -> Groups

         -> Group -> Customer Age

         -> Group1 -> Country, State, City

         -> Group2 -> Year, Quarter, Month

         -> Measures

         -> Total

 

第一步,从design中拿到cube的定义。

 

IDesignEngine designEngine = new DesignEngine( new DesignConfig( ) );

SessionHandle sessionHandle = designEngine.newSessionHandle( ULocale.ENGLISH );

ReportDesignHandle reportDesignHandle = sessionHandle.openDesign( “design” );

CubeHandle cubeHandle = reportDesignHandle.getModuleHandle( ).findCube( "cube" );

 

第二步,在DataRequestSession的对象中注册cube的定义。

 

DataSessionContext dataSessionContext = new DataSessionContext(

                        DataEngineContext.DIRECT_PRESENTATION );

DataRequestSession dataRequestSession = DataRequestSession

                        .newSession( dataSessionContext );

dataRequestSession.defineCube( cubeHandle );

 

第三步,准备Cube Querycube的实体在这里会被创建。

 

ICubeQueryDefinition cubeQueryDefinition = new CubeQueryDefinition(

                        cubeHandle.getName( ) );

IPreparedCubeQuery preparedCubeQuery = dataRequestSession

                        .prepare( cubeQueryDefinition );

 

第四步,定义Cube Query

 

IEdgeDefinition columnEdge = cubeQueryDefinition

                        .createEdge( ICubeQueryDefinition.COLUMN_EDGE );

 

IDimensionDefinition dimension = columnEdge

                        .createDimension( "Group" );

IHierarchyDefinition hierarchy = dimension

                        .createHierarchy( "NewTabularHierarchy" );

hierarchy.createLevel( "Customer_Age" );

 

IEdgeDefinition rowEdge = cubeQueryDefinition

                        .createEdge( ICubeQueryDefinition.ROW_EDGE );

 

IDimensionDefinition dimension1 = rowEdge

                        .createDimension( "Group1" );

IHierarchyDefinition hierarchy1 = dimension1

                        .createHierarchy( "NewTabularHierarchy1" );

hierarchy1.createLevel( "Country" );

hierarchy1.createLevel( "State" );

hierarchy1.createLevel( "City" );

 

IDimensionDefinition dimension2 = rowEdge

                        .createDimension( "Group2" );

IHierarchyDefinition hierarchy2 = dimension2

.createHierarchy( "NewTabularHierarchy2" );

hierarchy2.createLevel( "Year" );

hierarchy2.createLevel( "Quarter" );

hierarchy2.createLevel( "Month" );

 

cubeQueryDefinition.createMeasure( "Total" );

 

IBinding binding1 = new Binding( "edge1level1" );

String script1 = "dimension[/"Group/"][/"Customer_Age/"]";

binding1.setExpression( new ScriptExpression( script1 ) );

cubeQueryDefinition.addBinding( binding1 );

 

IBinding binding2 = new Binding( "edge2level1" );

String script2 = "dimension[/"Group1/"][/"Country/"]";

binding2.setExpression( new ScriptExpression( script2 ) );

cubeQueryDefinition.addBinding( binding2 );

 

IBinding binding3 = new Binding( "edge2level2" );

String script3 = "dimension[/"Group1/"][/"State/"]";

binding3.setExpression( new ScriptExpression( script3 ) );

cubeQueryDefinition.addBinding( binding3 );

 

IBinding binding4 = new Binding( "edge2level3" );

String script4 = "dimension[/"Group1/"][/"City/"]";

binding4.setExpression( new ScriptExpression( script4 ) );

cubeQueryDefinition.addBinding( binding4 );

 

IBinding binding5 = new Binding( "edge3level1" );

String script5 = "dimension[/"Group2/"][/"Year/"]";

binding5.setExpression( new ScriptExpression( script5 ) );

cubeQueryDefinition.addBinding( binding5 );

 

IBinding binding6 = new Binding( "edge3level2" );

String script6 = "dimension[/"Group2/"][/"Quarter/"]";

binding6.setExpression( new ScriptExpression( script6 ) );

cubeQueryDefinition.addBinding( binding6 );

 

IBinding binding7 = new Binding( "edge3level3" );

String script7 = "dimension[/"Group2/"][/"Month/"]";

binding7.setExpression( new ScriptExpression( script7 ) );

cubeQueryDefinition.addBinding( binding7 );

 

IBinding binding8 = new Binding( "Total" );

String script8 = "measure[/"Total/"]";

binding8.setExpression( new ScriptExpression( script8 ) );

cubeQueryDefinition.addBinding( binding8 );

 

第四步,执行Cube Query

 

ICubeQueryResults cubeQueryResults = preparedCubeQuery

.execute( null );

ICubeCursor cubeCursor = cubeQueryResults.getCubeCursor( );

 

分析输出ICubeCursor的对象可以检验结果是否正确。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值