In Flex 3 OLAP APIs were introduced and there have been many queries about how to create a OLAPCube in AS instead of defining it in MXML.
Here is a sample :
private var salesCube:OLAPCube;
private function createCube():void
{
salesCube = new OLAPCube();
var dim1:OLAPDimension = new OLAPDimension("SalesData");
//add attributes to the dimension
var attr1:OLAPAttribute = new OLAPAttribute("Region");
attr1.dataField = "region";
var attr2:OLAPAttribute = new OLAPAttribute("Market");
attr2.dataField = "market";
var attr3:OLAPAttribute = new OLAPAttribute("Store");
attr3.dataField = "store";
var attr4:OLAPAttribute = new OLAPAttribute("LineOfBusiness");
attr4.dataField = "line_of_business";
var attr5:OLAPAttribute = new OLAPAttribute("Model");
attr5.dataField = "model";
dim1.attributes = new ArrayCollection([ attr1, attr2, attr3, attr4, attr5 ]);
//add a user defined hierarchy
var regionHierarchy:OLAPHierarchy = new OLAPHierarchy("Region-Market-Store");
//define the levels of the hierarchy
var level1:OLAPLevel = new OLAPLevel();
level1.attributeName = "Region" ;
var level2:OLAPLevel = new OLAPLevel();
level2.attributeName = "Market" ;
var level3:OLAPLevel = new OLAPLevel();
level3.attributeName = "Store" ;
var level4:OLAPLevel = new OLAPLevel();
level4.attributeName = "LineOfBusiness" ;
var level5:OLAPLevel = new OLAPLevel();
level5.attributeName = "Model" ;
//add levels to the hierarchy
regionHierarchy.levels = new ArrayCollection([ level1, level2, level3, level4, level5 ]);
//add hierarchy to the dim
dim1.hierarchies = new ArrayCollection([ regionHierarchy ]);
//more dimensions can be defined here
var measure:OLAPMeasure = new OLAPMeasure("Revenue");
measure.dataField = "revenue" ;
//more measures can be defined here
//add the dimensions and measures to the cube.
salesCube.elements = [ dim1, measure ];
}
This creates the same OLAPCube as the following in MXML
<mx:OLAPCube id="salesCube" >
<mx:OLAPDimension name="SalesData" >
<mx:OLAPAttribute name="Region" dataField="region" />
<mx:OLAPAttribute name="Market" dataField="market" />
<mx:OLAPAttribute name="Store" dataField="store" />
<mx:OLAPAttribute name="LineOfBusiness" dataField="line_of_business" />
<mx:OLAPAttribute name="Model" dataField="model" />
<mx:OLAPHierarchy name="Region-Market-Store" >
<mx:OLAPLevel attributeName="Region" />
<mx:OLAPLevel attributeName="Market" />
<mx:OLAPLevel attributeName="Store" />
<mx:OLAPLevel attributeName="LineOfBusiness" />
<mx:OLAPLevel attributeName="Model" />
</mx:OLAPHierarchy>
</mx:OLAPDimension>
<mx:OLAPMeasure name="Revenue" dataField="revenue" />
</mx:OLAPCube>