複雑なキューブでは、1 つ以上のスキーマのディメンションに、複数のレベルが含まれます。例えば、フラットなデータに 3 つのフィールドがあるとします。
data:Object = {
product:"ColdFusion"
year :"2006"
quarter :"Q1"
revenue: "100.00",
}
各レコードのデータフィールドには次の値を格納します。
この例では、スキーマで 2 つのディメンションを定義します。そのうち、TimeDim ディメンションでは、次の例のように year および quarter に対して複数のレベルを定義します。
<mx:OLAPCube name="FlatSchemaCube"
dataProvider="{flatData}"
id="myMXMLCube"
complete="runQuery(event);">
<mx:OLAPDimension name="ProductDim">
<mx:OLAPAttribute name="Product" dataField="product"/>
<mx:OLAPHierarchy name="ProductHier" hasAll="true">
<mx:OLAPLevel attributeName="Product"/>
</mx:OLAPHierarchy>
</mx:OLAPDimension>
<mx:OLAPDimension name="TimeDim">
<mx:OLAPAttribute name="Year" dataField="year"/>
<mx:OLAPAttribute name="Quarter" dataField="quarter"/>
<mx:OLAPHierarchy name="Time-PeriodHier" hasAll="true">
<mx:OLAPLevel attributeName="Year"/>
<mx:OLAPLevel attributeName="Quarter"/>
</mx:OLAPHierarchy>
</mx:OLAPDimension>
<mx:OLAPMeasure name="Revenue"
dataField="revenue"
aggregator="SUM"/>
</mx:OLAPCube>
キューブは、次の構造を持ちます。
ProductDim // Dimension
Product // Hierarchy
(All) // Member
ColdFusion // Member
Flex // Member
Dreamweaver // Member
Illustrator // Member
ProductHier // Hierarchy
(All) // Level
ColdFusion // Member
Flex // Member
Dreamweaver // Member
Illustrator // Member
Product // Level
ColdFusion // Member
Flex // Member
Dreamweaver // Member
Illustrator // Member
TimeDim // Dimension
Year // Hierarchy
(All) // Member
2006 // Member
2007 // Member
Quarter // Hierarchy
(All) // Member
Q1 // Member
Q2 // Member
Q3 // Member
Q4 // Member
Time-PeriodHier // Hierarchy
(All) // Level
2006
Q1
Q2
Q3
Q4
2007
Q1
Q2
Q3
Q4
Year // Level
2006 // Member
2007 // Member
Quarter // Level
Q1 (having 2006 as a parent) // Member
Q1 (having 2007 as a parent) // Member
Q2 (having 2006 as a parent) // Member
Q2 (having 2007 as a parent) // Member
Q3 (having 2006 as a parent) // Member
Q3 (having 2007 as a parent) // Member
Q4 (having 2006 as a parent) // Member
Q4 (having 2007 as a parent) // Member
このキューブの以下の点に注目してください。
Time-PeriodHier 階層の下にある Quarter レベルの単一の四半期に対して複数のエントリが存在するのは、キューブが各年の各四半期に対する結果を返せるようにするためです。例えば、この構造では、すべての年のすべての四半期のデータ集計だけでなく、2006 年のすべての四半期や 2007 年のすべての四半期についても、データ集計を返すクエリを記述することができます。
ProductDim には単一のレベルが含まれているので、単純なキューブの場合と同様の方法でクエリを記述できます。詳細については、単純な OLAP キューブのクエリの記述を参照してください。
次の表は、findAttribute() メソッドを呼び出し、様々な方法で TimeDim にアクセスした場合に返される情報を示したものです。
|
メソッドおよびプロパティへの参照 |
戻り値 |
|---|---|
| findDimension("TimeDim").findAttribute("Year").children |
2006, 2007 |
| findDimension("TimeDim").findAttribute("Year").members |
(All)、2006、2007 |
| findDimension("TimeDim").findMember("2006") |
2006 |
| findDimension("TimeDim").findAttribute("Quarter").children |
Q1、Q2、Q3、Q4 |
| findDimension("TimeDim").findAttribute("Quarter").members |
(All)、Q1、Q2、Q3、Q4 |
| findDimension("TimeDim").findMember("Q2") |
Q2 は、親として 2006 を持ちます。これは、キューブの Q2 の最初のインスタンスです。 |
次の表は、OLAPDimension.findHierarchy()、OLAPHierarchy.findLevel() および OLAPLevel.findMember() の各メソッドを使用する方法で返される情報を示したものです。
|
メソッドおよびプロパティへの参照 |
戻り値 |
|---|---|
| findDimension("TimeDim").findHierarchy("Time-PeriodHier"). findLevel("Year").children |
2006, 2007 |
| findDimension("TimeDim").findHierarchy("Time-PeriodHier"). findLevel("Year").members |
(All)、2006、2007 |
| IOLAPElement(cube.findDimension("TimeDim"). findHierarchy("Time-PeriodHier").findLevel("Year"). findMember("2006").getItemAt(0)) |
2006 |
| findDimension("QuarterDim").findHierarchy("QuarterHier"). findLevel("Quarter").children |
Q1、Q2、Q3、Q4 |
| findDimension("QuarterDim").findHierarchy("QuarterHier"). findLevel("Quarter").members |
(All)、Q1、Q2、Q3、Q4 |
| findDimension("TimeDim").findHierarchy("Time- PeriodHier").findLevel("Quarter").findMember("Q1") |
すべての Q1 のメンバー |
| IOLAPElement(cube.findDimension("QuarterDim"). findHierarchy("QuarterHier").findLevel("Quarter"). findMember("Q2").getItemAt(0)) |
Q2 は、親として 2006 を持ちます。getItemAt() はオブジェクトを返すので、IOLAPElement のインスタンスに結果をキャストします。 |
| IOLAPElement(cube.findDimension("QuarterDim"). findHierarchy("QuarterHier").findLevel("Quarter"). findMember("Q2").getItemAt(1)) |
Q2 は、親として 2007 を持ちます。getItemAt() はオブジェクトを返すので、IOLAPElement のインスタンスに結果をキャストします。 |
次の TimeDim の定義のように、TimeDim に Month レベルを追加することもできます。
<mx:OLAPDimension name="TimeDim">
<mx:OLAPAttribute name="Year" dataField="year"/>
<mx:OLAPAttribute name="Quarter" dataField="quarter"/>
<mx:OLAPAttribute name="Month" dataField="month"/>
<mx:OLAPHierarchy name="Time-PeriodHier" hasAll="true">
<mx:OLAPLevel attributeName="Year"/>
<mx:OLAPLevel attributeName="Quarter"/>
<mx:OLAPLevel attributeName="Month"/>
</mx:OLAPHierarchy>
</mx:OLAPDimension>
この例では、TimeDim ディメンションの構造は次のようになります。
TimeDim // Dimension
Year // Hierarchy
(All) // Member
2006 // Member
2007 // Member
Quarter // Hierarchy
(All) // Member
Q1 // Member
Q2 // Member
Q3 // Member
Q4 // Member
Month // Hierarchy
(All) // Member
Jan // Member
Feb // Member
... // Adiitional members for each month
Time-PeriodHier // Hierarchy
(All) // Level
2006
Q1
Jan
Feb
Mar
...
2007
Q1
Jan
Feb
Mar
...
Year // Level
2006 // Member
2007 // Member
Quarter // Level
Q1 (having 2006 as a parent) // Member
Q1 (having 2007 as a parent) // Member
Q2 (having 2006 as a parent) // Member
Q2 (having 2007 as a parent) // Member
Q3 (having 2006 as a parent) // Member
Q3 (having 2007 as a parent) // Member
Q4 (having 2006 as a parent) // Member
Q4 (having 2007 as a parent) // Member
Month // Level
Jan (having Q1 having 2006 as a parent) // Member
Feb (having Q1 having 2006 as a parent) // Member
Jan (having Q1 having 2007 as a parent) // Member
Feb (having Q1 having 2007 as a parent) // Member
... // Additional members for each possible
// combination of month, quarter,
// and year
このキューブの以下の点に注目してください。
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート