Adobe Flex 3 ヘルプ

複雑な OLAP キューブのクエリの記述

複雑なキューブでは、1 つ以上のスキーマのディメンションに、複数のレベルが含まれます。例えば、フラットなデータに 3 つのフィールドがあるとします。

data:Object = {
    product:"ColdFusion"
    year :"2006"
    quarter :"Q1"
    revenue: "100.00", 
}

各レコードのデータフィールドには次の値を格納します。

  • product フィールドには、ColdFusion、Flex、Dreamweaver、および Illustrator という値を格納します。
  • year フィールドには、2006 および 2007 という値を格納します。
  • quarter フィールドには、Q1、Q2、Q3、および Q4 という値を格納します。

この例では、スキーマで 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

このキューブの以下の点に注目してください。

  • 四半期の情報は、階層として TimeDim ディメンションの下に追加され、レベルとして Time-PeriodHier 階層の下に追加されます。
  • Time-PeriodHier 階層の下の Quarter レベルには、各四半期の複数のエントリが含まれます。この例では、各年の各四半期に対してエントリが存在します。
  • メンバーの順序は各ディメンションに対応した値を表し、フラットなデータに記録されているメンバーの値の順序に基づいています。

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

このキューブの以下の点に注目してください。

  • Month レベルには、各年の各四半期について、各月の値が格納されます。そのため、1 月のエントリは、2006 年の Q1 および 2007 年の Q1 という 2 種類のエントリが存在することになります。

 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート