2 OLAP関数

OLAP関数はSQL分析関数の構文を拡張します。この構文はSQL開発者およびDBAにとって使い慣れたものであるので、独自のOLAP言語およびAPIよりも容易に採用できます。OLAP関数を使用して、ランク、シェア、前期間および将来期間、現在までの期間、平行期間、移動集計、累積集計などの、すべての標準の計算済メジャーを作成できます。

この章ではOLAP関数について説明します。この項の内容は、次のとおりです。

AVERAGE_RANK

AVERAGE_RANKは、式の値に基づいてディメンションのメンバーをソートします。この関数は、ディメンション番号の順序番号を返します。

AVERAGE_RANKでは、同じ値には同じ平均ランクが割り当てられます。たとえば、5つのディメンション番号に対して、AVERAGE_RANKから、1、2、3.5、3.5、5が返されることがあります。

戻り値

NUMBER

構文

AVERAGE_RANK ( ) OVER (rank_clause)

rank_clause::=

{ DIMENSION dimension_id | HIERARCHY hierarchy_id }
  ORDER BY order_by_clause [, order_by_clause]...
  [ WITHIN { LEVEL 
           | PARENT 
           | ANCESTOR AT { DIMENSION LEVEL dim_level_id
                         | HIERARCHY LEVEL hier_level_id
                         }
           }
  ]

order_by_clause::=

expression [ASC | DESC] [NULLS {FIRST | LAST}] 

引数

dimension_id

デフォルト階層を使用して値が計算されるディメンション。

hierarchy_id

値が計算される階層。かわりにdimension_idが使用される場合、デフォルト階層が使用されます。

ORDER BY

ランクの基準を指定します。同順位となるものをさらにソートするために、ORDER BY句を追加することができます。

expression

ランクの基準として使用する値を指定します。

ASC | DESC

最小値から最大値(昇順)または最大値から最小値(降順)の順にランクをソートします。

NULLS {FIRST | LAST}

NULL値を含む数を最初にリストするか最後にリストするかを決定します。

WITHIN

一連の関連するディメンション・メンバーをランク付けするために選択します。

LEVEL: 同じレベルのすべてのメンバーをランク付けします。

PARENT: 同じ親を持つ同一レベルのメンバーをランク付けします。

ANCESTOR: 指定したレベルで、同じ祖先を持つ同一レベルのすべてのメンバーをランク付けします。

dim_level_id

dimension_idのレベルの名前。

hier_level_id

hierarchy_idのレベルの名前。

次の例は、カレンダ年の期間をユニット・コスト別にランク付けします。2か月(JAN-02とJUL-02)が同じ値と同じランク(6.5)を持つため、7にランク付けされている月はないことに注意してください。

AVERAGE_RANK() OVER (HIERARCHY TIME.CALENDAR ORDER BY PRICE_CUBE.UNIT_COST DESC NULLS LAST WITHIN ANCESTOR AT DIMENSION LEVEL TIME.CALENDAR_YEAR)

製品 時間 コスト 平均ランク

Deluxe Mouse

MAR-02

24.05

1

Deluxe Mouse

APR-02

23.95

2

Deluxe Mouse

FEB-02

23.94

3

Deluxe Mouse

AUG-02

23.88

4

Deluxe Mouse

MAY-02

23.84

5

Deluxe Mouse

JAN-02

23.73

6.5

Deluxe Mouse

JUL-02

23.73

6.5

Deluxe Mouse

JUN-02

23.72

8

Deluxe Mouse

SEP-02

23.71

9

Deluxe Mouse

NOV-02

23.65

10

Deluxe Mouse

DEC-02

23.62

11

Deluxe Mouse

OCT-02

23.37

12

関連項目

DENSE_RANKRANKROW_NUMBER

AVG

AVGは、時間ディメンションで計算した値を選択して平均を返します。この関数を使用して、累積平均と移動平均を作成します。

GREGORIANリレーションは、時間ディメンションにグレゴリオ暦を追加します。このリレーションは、会計や非標準の階層での計算に便利です。

戻り値

NUMBER

構文

AVG (value_expr) OVER (window_clause)

window_clause::=

[ { DIMENSION dimension_id | HIERARCHY hierarchy_id } ]
    BETWEEN preceding_boundary | following_boundary 
     [WITHIN { LEVEL
             | PARENT
             | GREGORIAN {YEAR | QUARTER | MONTH | WEEK}
             | ANCESTOR AT { DIMENSION LEVEL dim_level_id
                           | HIERARCHY LEVEL hier_level_id 
                           }
             }
     ]

preceding_boundary::=

{UNBOUNDED PRECEDING | expression PRECEDING} AND 
   { CURRENT MEMBER 
   | expression {PRECEDING | FOLLOWING}
   | UNBOUNDED FOLLOWING
   }

following_boundary::=

{CURRENT MEMBER | expression FOLLOWING} AND
  { expression FOLLOWING 
  | UNBOUNDED FOLLOWING
  }

引数

value_expr

計算する値を含むディメンション式。

dimension_id

デフォルト階層を使用して値が計算される時間ディメンション。

hierarchy_id

値が計算される階層。かわりにdimension_idが使用される場合、デフォルト階層が使用されます。

dim_level_id

dimension_idのレベルの名前。

hier_level_id

hierarchy_idのレベルの名前。

boundary

preceding_boundaryおよびfollowing_boundaryは、ディメンションまたは階層で特定されるグループ内の期間の範囲を特定します。

UNBOUNDED: グループの最初の期間で始まるか、最後の期間で終わります。

CURRENT MEMBER: 現在の期間の計算を開始または終了します。

expression

数値は、範囲を開始するまたは終了する、現在の期間から特定の距離にある期間を示します。

WITHIN

計算に使用する期間の範囲を指定します。次は、キーワードの説明です。

範囲 説明

LEVEL

同一レベルのすべての期間を計算します。(デフォルト)

PARENT

同じ親を持つ同一レベルの期間を計算します。

GREGORIAN YEAR

同じ年(グレゴリオ暦)の期間を計算します。

GREGORIAN QUARTER

同じ四半期(グレゴリオ暦)の期間を計算します。

GREGORIAN MONTH

同じ月(グレゴリオ暦)の期間を計算します。

GREGORIAN WEEK

同じ週(グレゴリオ暦)の期間を計算します。

ANCESTOR

指定したレベルで、同じ祖先を持つ同一レベルの期間を含めます。

次の例は、各親の中の累積平均を計算します。データの選択は、2005と2006のカレンダ年の中での四半期の累積平均を示します。

AVG(GLOBAL.UNITS_CUBE.UNITS) OVER (HIERARCHY GLOBAL.TIME.CALENDAR BETWEEN UNBOUNDED PRECEDING AND CURRENT MEMBER WITHIN PARENT)

時間 ユニット 平均

Q1.05

CY2005

143607

143607

Q2.05

CY2005

138096

140852

Q3.05

CY2005

138953

140219

Q4.05

CY2005

145062

141430

Q1.06

CY2006

146819

146819

Q2.06

CY2006

145233

146026

Q3.06

CY2006

143572

145208

Q4.06

CY2006

149305

146232

関連項目

COUNTMAXMINSUM

カウント

COUNTは、時間ディメンションの選択メンバーによって識別されるデータ値の数を計算します。

GREGORIANリレーションは、時間ディメンションにグレゴリオ暦を追加します。このリレーションは、会計や非標準の階層での計算に便利です。

戻り値

NUMBER

構文

COUNT (value_expr) OVER (window_clause)

window_clause::=

{ DIMENSION dimension_id | HIERARCHY hierarchy_id }
  BETWEEN preceding_boundary AND following_boundary 
   [WITHIN { LEVEL
           | PARENT
           | GREGORIAN {YEAR | QUARTER | MONTH | WEEK}
           | ANCESTOR AT { DIMENSION LEVEL dim_level_id
                         | HIERARCHY LEVEL hier_level_id 
                         }
           }
   ]

preceding_boundary::=

{UNBOUNDED PRECEDING | expression PRECEDING} AND 
   { CURRENT MEMBER 
   | expression {PRECEDING | FOLLOWING}
   | UNBOUNDED FOLLOWING
   }

following_boundary::=

{CURRENT MEMBER | expression FOLLOWING} AND
  { expression FOLLOWING 
  | UNBOUNDED FOLLOWING
  }

引数

value_expr

計算する値を含むディメンション式。

dimension_id

デフォルト階層を使用して値が計算される時間ディメンション。

hierarchy_id

値が計算される階層。かわりにdimension_idが使用される場合、デフォルト階層が使用されます。

dim_level_id

dimension_idのレベルの名前。

hier_level_id

hierarchy_idのレベルの名前。

boundary

preceding_boundaryおよびfollowing_boundaryは、ディメンションまたは階層で特定されるグループ内の期間の範囲を特定します。

UNBOUNDED: グループの最初の期間で始まるか、最後の期間で終わります。

CURRENT MEMBER: 現在の期間の計算を開始または終了します。

expression

数値は、範囲を開始するまたは終了する、現在の期間から特定の距離にある期間を示します。

WITHIN副句

計算に使用する期間の範囲を指定します。次は、キーワードの説明です。

範囲 説明

LEVEL

同一レベルのすべての期間を計算します。(デフォルト)

PARENT

同じ親を持つ同一レベルの期間を計算します。

GREGORIAN YEAR

同じ年(グレゴリオ暦)の期間を計算します。

GREGORIAN QUARTER

同じ四半期(グレゴリオ暦)の期間を計算します。

GREGORIAN MONTH

同じ月(グレゴリオ暦)の期間を計算します。

GREGORIAN WEEK

同じ週(グレゴリオ暦)の期間を計算します。

ANCESTOR

指定したレベルで、同じ祖先を持つ同一レベルの期間を含めます。

この例では、現在の期間までを含む、同じレベルと同じ年の期間数を総計します。選択したデータは、年の各月数を表示します。

COUNT(GLOBAL.UNITS_CUBE.UNITS) OVER (HIERARCHY GLOBAL.TIME.CALENDAR BETWEEN UNBOUNDED PRECEDING AND CURRENT MEMBER WITHIN ANCESTOR AT DIMENSION LEVEL GLOBAL.TIME.CALENDAR_YEAR)

時間 ユニット カウント

JAN-06

47776

1

FEB-06

47695

2

MAR-06

51348

3

APR-06

47005

4

MAY-06

52809

5

JUN-06

45419

6

JUL-06

48388

7

AUG-06

48830

8

SEP-06

46354

9

OCT-06

47411

10

NOV-06

46842

11

DEC-06

55052

12

関連項目

AVGMAXMINSUM

DENSE_RANK

DENSE_RANKは、式の値に基づいてディメンションのメンバーをソートします。この関数は、ディメンション番号の順序番号を返します。

DENSE_RANKは、同じ値に同じ最小ランクを割り当て、結果を順次リストで返します。結果のランク数は、リスト中の値の数よりも少なくなることがあります。たとえば、DENSE_RANKは5つのディメンション・メンバーに対して1、2、3、3、4を返すことがあります。

戻り値

NUMBER

構文

DENSE_RANK ( ) OVER (rank_clause)

rank_clause::=

{ DIMENSION dimension_id | HIERARCHY hierarchy_id }
  ORDER BY order_by_clause [, order_by_clause]...
  [ WITHIN { LEVEL 
           | PARENT 
           | ANCESTOR AT { DIMENSION LEVEL dim_level_id
                         | HIERARCHY LEVEL hier_level_id
                         }
           }
  ]

order_by_clause::=

expression [ASC | DESC] [NULLS {FIRST | LAST}] 

引数

dimension_id

デフォルト階層を使用して値が計算されるディメンション。

hierarchy_id

値が計算される階層。かわりにdimension_idが使用される場合、デフォルト階層が使用されます。

ORDER BY

ランクの基準を指定します。同順位となるものをさらにソートするために、ORDER BY句を追加することができます。

expression

ランクの基準として使用する値を指定します。

ASC | DESC

最小値から最大値(昇順)または最大値から最小値(降順)の順にランクをソートします。

NULLS {FIRST | LAST}

NULL値を含む数を最初にリストするか最後にリストするかを決定します。

WITHIN

一連の関連するディメンション・メンバーをランク付けするために選択します。

LEVEL: 同じレベルのすべてのメンバーをランク付けします。

PARENT: 同じ親を持つ同一レベルのメンバーをランク付けします。

ANCESTOR: 指定したレベルで、同じ祖先を持つ同一レベルのすべてのメンバーをランク付けします。

dim_level_id

dimension_idのレベルの名前。

hier_level_id

hierarchy_idのレベルの名前。

次の例は、デフォルトのカレンダ階層を使用して、カレンダ年の期間をユニット・コスト別にランク付けします。2か月(JAN-02とJUL-2)が同じ値と同じランク(6)を持ちますが、ランキングはJUN-02に対して7から継続されることに注意してください。

DENSE_RANK() OVER (DIMENSION "TIME" ORDER BY PRICE_CUBE.UNIT_COST DESC NULLS LAST WITHIN ANCESTOR AT DIMENSION LEVEL TIME.CALENDAR_YEAR)

製品 時間 コスト Denseランク

Deluxe Mouse

MAR-02

24.05

1

Deluxe Mouse

APR-02

23.95

2

Deluxe Mouse

FEB-02

23.94

3

Deluxe Mouse

AUG-02

23.88

4

Deluxe Mouse

MAY-02

23.84

5

Deluxe Mouse

JAN-02

23.73

6

Deluxe Mouse

JUL-02

23.73

6

Deluxe Mouse

JUN-02

23.72

7

Deluxe Mouse

SEP-02

23.71

8

Deluxe Mouse

NOV-02

23.65

9

Deluxe Mouse

DEC-02

23.62

10

Deluxe Mouse

OCT-02

23.37

11

関連項目

AVERAGE_RANKRANKROW_NUMBER

HIER_ANCESTOR

HIER_ANCESTORは、階層の特定のレベルで、階層のすべてのメンバーまたは特定のメンバーの祖先を返します。階層は、レベル・ベースである必要があります。

戻り値

VARCHAR2

構文

HIER_ANCESTOR( 
  [member_expression] [WITHIN]
  {DIMENSION dimension_id | HIERARCHY hierarchy_id}
  {DIMENSION LEVEL dim_level_id | HIERARCHY LEVEL hier_level_id} ) 

引数

member_expression

祖先が返される、階層内のディメンション・メンバーを指定します。このオプションの引数を指定すると、結果がディメンション・メンバー間で変化しません。

dimension_id

デフォルト階層を使用して値が計算されるディメンション。

hierarchy_id

値が計算される階層。かわりにdimension_idが使用される場合、デフォルト階層が使用されます。

dim_level_id

dimension_idの祖先のレベル。

hier_level_id

hierarchy_idの祖先のレベル。

次の例では、時間ディメンションのデフォルト・カレンダ階層のメンバーについてカレンダ四半期レベルでの祖先を返します。

HIER_ANCESTOR(DIMENSION "TIME" DIMENSION LEVEL TIME.CALENDAR_QUARTER)

時間 祖先

2006

--

Q1.06

CY2006.Q1

Q2.06

CY2006.Q2

Q3.06

CY2006.Q3

Q4.06

CY2006.Q4

JAN-06

CY2006.Q1

FEB-06

CY2006.Q1

MAR-06

CY2006.Q1

APR-06

CY2006.Q2

MAY-06

CY2006.Q2

JUN-06

CY2006.Q2

JUL-06

CY2006.Q3

AUG-06

CY2006.Q3

SEP-06

CY2006.Q3

OCT-06

CY2006.Q4

NOV-06

CY2006.Q4

DEC-06

CY2006.Q4

次の例は、顧客ディメンションのマーケット階層の顧客マーケット・セグメント・レベルでの米国労働省の祖先としてGOVを返します。

HIER_ANCESTOR('US DPT LBR' WITHIN HIERARCHY CUSTOMER.MARKET DIMENSION LEVEL CUSTOMER.MARKET_SEGMENT)

HIER_CHILD_COUNT

HIER_CHILD_COUNTは、階層のすべてのディメンションまたは特定のメンバーの子の数を返します。階層は、レベル・ベースと値ベースのいずれも可能です。

戻り値

NUMBER

構文

HIER_CHILD_COUNT ( 
   [member_expression] [WITHIN]
   {DIMENSION dimension_id | HIERARCHY hierarchy_id} ) 

引数

member_expression

計算に使用される、階層内の1つのディメンション・メンバーを指定します。このオプションの引数を指定すると、結果がディメンション・メンバー間で変化しません。

dimension_id

デフォルト階層を使用して値が計算されるディメンション。

hierarchy_id

値が計算される階層。かわりにdimension_idが使用される場合、デフォルト階層が使用されます。

次の例では、時間ディメンションのデフォルト階層の各メンバーの子の数を返します。

HIER_CHILD_COUNT(DIMENSION "TIME")

時間

2006

4

Q1.06

3

Q2.06

3

Q3.06

3

Q4.06

3

JAN-06

0

FEB-06

0

MAR-06

0

APR-06

0

MAY-06

0

JUN-06

0

JUL-06

0

AUG-06

0

SEP-06

0

OCT-06

0

NOV-06

0

DEC-06

0

次の例では、顧客ディメンションのマーケット階層内の政府の子の数として8を返します。

HIER_CHILD_COUNT('GOV' WITHIN HIERARCHY CUSTOMER.MARKET)

HIER_DEPTH

HIER_DEPTHは、0が最上位レベルである階層のすべてのメンバーまたは特定のメンバーのレベルの深さを表す数を返します。階層は、レベル・ベースと値ベースのいずれも可能です。

戻り値

NUMBER

構文

HIER_DEPTH ( 
   [member_expression] [WITHIN]
   {DIMENSION dimension_id | HIERARCHY hierarchy_id} ) 

引数

member_expression

計算に使用される、階層内の1つのディメンション・メンバーを指定します。このオプションの引数を指定すると、結果がディメンション・メンバー間で変化しません。

dimension_id

デフォルト階層を使用して値が計算されるディメンション。

hierarchy_id

値が計算される階層。かわりにdimension_idが使用される場合、デフォルト階層が使用されます。

次の例では、時間ディメンションのデフォルト階層の各メンバーの深さを返します。

HIER_DEPTH(DIMENSION "TIME")

時間 深さ

2006

1

Q1.06

2

Q2.06

2

Q3.06

2

Q4.06

2

JAN-06

3

FEB-06

3

MAR-06

3

APR-06

3

MAY-06

3

JUN-06

3

JUL-06

3

AUG-06

3

SEP-06

3

OCT-06

3

NOV-06

3

DEC-06

3

次の例では、デフォルト顧客階層のイタリアの深さとして2を返します。

HIER_DEPTH('ITA' WITHIN DIMENSION CUSTOMER)

HIER_LEVEL

HIER_LEVELは、階層のすべてのメンバーまたは特定のメンバーのレベルを返します。階層は、レベル・ベースである必要があります。

戻り値

VARCHAR2

構文

HIER_LEVEL ( 
   [member_expression] [WITHIN]
   {DIMENSION dimension_id | HIERARCHY hierarchy_id} ) 

引数

member_expression

計算に使用される、階層内の1つのディメンション・メンバーを指定します。このオプションの引数を指定すると、結果がディメンション・メンバー間で変化しません。

dimension_id

デフォルト階層を使用して値が計算されるディメンション。

hierarchy_id

値が計算される階層。かわりにdimension_idが使用される場合、デフォルト階層が使用されます。

次の例では、時間ディメンションのデフォルト階層の各メンバーのレベルを返します。

HIER_LEVEL(DIMENSION "TIME")

時間 レベル

2006

CALENDAR_YEAR

Q1.06

CALENDAR_QUARTER

Q2.06

CALENDAR_QUARTER

Q3.06

CALENDAR_QUARTER

Q4.06

CALENDAR_QUARTER

JAN-06

MONTH

FEB-06

MONTH

MAR-06

MONTH

APR-06

MONTH

MAY-06

MONTH

JUN-06

MONTH

JUL-06

MONTH

AUG-06

MONTH

SEP-06

MONTH

OCT-06

MONTH

NOV-06

MONTH

DEC-06

MONTH

次の例では、顧客ディメンションのマーケット階層のビジネス界のレベルとしてACCOUNTを返します。

HIER_LEVEL('BUSN WRLD' WITHIN HIERARCHY CUSTOMER.MARKET)

HIER_ORDER

HIER_ORDERは、親直下の子のディメンション・メンバーをソートし、各メンバーの連番を返します。

戻り値

NUMBER

構文

HIER_ORDER ( 
   [member_expression] [WITHIN]
   {DIMENSION dimension_id | HIERARCHY hierarchy_id} ) 

引数

member_expression

計算に使用される、階層内の1つのディメンション・メンバーを指定します。このオプションの引数を指定すると、結果がディメンション・メンバー間で変化しません。

dimension_id

デフォルト階層を使用して値が計算されるディメンション。

hierarchy_id

値が計算される階層。かわりにdimension_idが使用される場合、デフォルト階層が使用されます。

この例では、時間ディメンションの値が順序付けされます。

HIER_ORDER(DIMENSION "TIME")

時間 順序

2006

138

Q1.06

139

JAN-06

140

FEB-06

141

MAR-06

142

Q2.06

143

APR-06

144

MAY-06

145

JUN-06

146

Q3.06

147

JUL-06

148

AUG-06

149

SEP-06

150

Q4.06

151

OCT-06

152

NOV-06

153

DEC-06

154

次の例では、顧客ディメンションのマーケット階層のビジネス界の順序番号として78を返します。

HIER_ORDER('BUSN WRLD' WITHIN HIERARCHY CUSTOMER.MARKET)

HIER_PARENT

HIER_PARENTは、階層のすべてのディメンション・メンバーまたは特定のメンバーの親を返します。階層は、レベル・ベースと値ベースのいずれも可能です。

戻り値

VARCHAR2

構文

HIER_PARENT ( 
   [member_expression] [WITHIN]
   {DIMENSION dimension_id | HIERARCHY hierarchy_id} ) 

引数

member_expression

計算に使用される、階層内の1つのディメンション・メンバーを指定します。このオプションの引数を指定すると、結果がディメンション・メンバー間で変化しません。

dimension_id

デフォルト階層を使用して値が計算されるディメンション。

hierarchy_id

値が計算される階層。かわりにdimension_idが使用される場合、デフォルト階層が使用されます。

次の例では、時間ディメンションのデフォルト階層のすべてのメンバーの親を返します。

HIER_PARENT(DIMENSION GLOBAL.TIME)

時間

2006

TOTAL

Q1.06

CY2006

Q2.06

CY2006

Q3.06

CY2006

Q4.06

CY2006

JAN-06

CY2006.Q1

FEB-06

CY2006.Q1

MAR-06

CY2006.Q1

APR-06

CY2006.Q2

MAY-06

CY2006.Q2

JUN-06

CY2006.Q2

JUL-06

CY2006.Q3

AUG-06

CY2006.Q3

SEP-06

CY2006.Q3

OCT-06

CY2006.Q4

NOV-06

CY2006.Q4

DEC-06

CY2006.Q4

次の例では、顧客ディメンションのデフォルト階層内のイタリアの親としてEMEAを返します。

HIER_PARENT('ITA' WITHIN DIMENSION CUSTOMER)

HIER_TOP

HIER_TOPは、階層のすべてのメンバーまたは特定のメンバーの最上位の祖先を返します。階層は、レベル・ベースと値ベースのいずれも可能です。

戻り値

VARCHAR2

構文

HIER_TOP ( 
   [member_expression] [WITHIN]
   {DIMENSION dimension_id | HIERARCHY hierarchy_id} ) 

引数

member_expression

計算に使用される、階層内の1つのディメンション・メンバーを指定します。このオプションの引数を指定すると、結果がディメンション・メンバー間で変化しません。

dimension_id

デフォルト階層を使用して値が計算されるディメンション。

hierarchy_id

値が計算される階層。かわりにdimension_idが使用される場合、デフォルト階層が使用されます。

次の例では、時間ディメンションのデフォルト階層の最上位メンバーを返します。

HIER_TOP(DIMENSION "TIME")

時間 最上位

2006

TOTAL

Q1.06

TOTAL

Q2.06

TOTAL

Q3.06

TOTAL

Q4.06

TOTAL

JAN-06

TOTAL

FEB-06

TOTAL

MAR-06

TOTAL

APR-06

TOTAL

MAY-06

TOTAL

JUN-06

TOTAL

JUL-06

TOTAL

AUG-06

TOTAL

SEP-06

TOTAL

OCT-06

TOTAL

NOV-06

TOTAL

DEC-06

TOTAL

次の例では、顧客ディメンションのデフォルト階層内のヨーロッパの最上位メンバーであるTOTALを返します。

HIER_TOP('EMEA' WITHIN DIMENSION CUSTOMER)

LAG

LAGは、過去の期間の値を返します。

戻り値

値式と同じデータ型

構文

LAG (lag_args) OVER (lag_clause)

lag_args::=

expression, offset [, {default_expression | CLOSEST} ]

lag_clause::=

[ {DIMENSION dimension_id | HIERARCHY hierarchy_id} ]
[ [BY] { LEVEL 
       | PARENT 
       | GREGORIAN {YEAR | QUARTER | MONTH | WEEK | DAY}
       | ANCESTOR AT { DIMENSION LEVEL dim_level_id
                     | HIERARCHY LEVEL hier_level_id
                     }
       }
  [POSITION FROM {BEGINNING | END}] 
] 

引数

オフセット・ユニット 説明

LEVEL

現行メンバーよりもoffsetの期間数分前の、同一レベルのメンバーです。(デフォルト)

PARENT

現行メンバーよりもoffsetの期間数分前の、同じ親を持つ同一レベルのメンバーです。

GREGORIAN YEAR

開始日が、現行期間の開始日よりもoffsetの年数分前の、同一レベルの期間です。

GREGORIAN QUARTER

開始日が、現行期間の開始日よりもoffsetの四半期数分前の、同一レベルの期間です。

GREGORIAN MONTH

開始日が、現行期間の開始日よりもoffsetの月数分前の、同一レベルの期間です。

GREGORIAN WEEK

開始日が、現行期間の開始日よりもoffsetの週数分前の、同一レベルの期間です。

GREGORIAN DAY

開始日が、現行期間の開始日よりもoffsetの日数分前の、同一レベルの期間です。

ANCESTOR

現行期間と同じレベルにあり、祖先が現行期間の祖先よりも前のoffset位置にある期間です。

expression

計算する値を含むディメンション式。

offset

現行期間からいくつ前の期間に戻るかを表す数値式です。

default_expression

offsetで有効な期間が指定されない場合に返される値です。この句は、任意のデータ型の式、または近接を表すキーワードCLOSESTです。近接とは、後方に移動した場合の直後のメンバーです。

dimension_id

ラグを計算する時間ディメンションです。

hierarchy_id

ラグを計算する階層です。指定しない場合は、dimension_idのデフォルト階層が使用されます。

dim_level_id

dimension_idのレベルの名前。

hier_level_id

hierarchy_idのレベルの名前。

BY副句

BY副句はオフセットの計算に使用する期間の範囲を指定します。次は、キーワードの説明です。

次の例は、各期間の前年の値を返します。

LAG(UNITS_CUBE.UNITS, 1) OVER (HIERARCHY "TIME".CALENDAR ANCESTOR AT DIMENSION LEVEL "TIME".CALENDAR_YEAR)

時間 ユニット 前年

Q1.05

143607

146529

Q2.05

138096

143070

Q3.05

138953

148292

Q4.05

145062

149528

Q1.06

146819

143607

Q2.06

145233

138096

Q3.06

143572

138953

Q4.06

149305

145062

LAG_VARIANCE

LAG_VARIANCEは、現行期間と過去の期間の値の差を返します。

戻り値

値式と同じデータ型

構文

LAG_VARIANCE (lag_args) OVER (lag_clause)

lag_args::=

expression, offset [, {default_expression | CLOSEST} ]

lag_clause::=

[ {DIMENSION dimension_id | HIERARCHY hierarchy_id} ]
[ [BY] { LEVEL 
       | PARENT 
       | GREGORIAN {YEAR | QUARTER | MONTH | WEEK | DAY}
       | ANCESTOR AT { DIMENSION LEVEL dim_level_id
                     | HIERARCHY LEVEL hier_level_id
                     }
       }
  [POSITION FROM {BEGINNING | END}] 
] 

引数

オフセット・ユニット 説明

LEVEL

現行メンバーよりもoffsetの期間数分前の、同一レベルのメンバーです。(デフォルト)

PARENT

現行メンバーよりもoffsetの期間数分前の、同じ親を持つ同一レベルのメンバーです。

GREGORIAN YEAR

開始日が、現行期間の開始日よりもoffsetの年数分前の、同一レベルの期間です。

GREGORIAN QUARTER

開始日が、現行期間の開始日よりもoffsetの四半期数分前の、同一レベルの期間です。

GREGORIAN MONTH

開始日が、現行期間の開始日よりもoffsetの月数分前の、同一レベルの期間です。

GREGORIAN WEEK

開始日が、現行期間の開始日よりもoffsetの週数分前の、同一レベルの期間です。

GREGORIAN DAY

開始日が、現行期間の開始日よりもoffsetの日数分前の、同一レベルの期間です。

ANCESTOR

現行期間と同じレベルにあり、祖先が現行期間の祖先よりも前のoffset位置にある期間です。

expression

計算する値を含むディメンション式。

offset

現行期間からいくつ前の期間に戻るかを表す数値式です。

default_expression

offsetで有効な期間が指定されない場合に返される値です。この句は、任意のデータ型の式、または近接を表すキーワードCLOSESTです。近接とは、後方に移動した場合の直後のメンバーです。

dimension_id

ラグを計算する時間ディメンションです。

hierarchy_id

ラグを計算する階層です。指定しない場合は、dimension_idのデフォルト階層が使用されます。

dim_level_id

dimension_idのレベルの名前。

hier_level_id

hierarchy_idのレベルの名前。

BY副句

BY副句はオフセットの計算に使用する期間の範囲を指定します。次は、キーワードの説明です。

次の例は、現在の期間と前年の同等の期間の値の差を返します。

LAG_VARIANCE (GLOBAL.UNITS_CUBE.UNITS, 1) OVER (HIERARCHY GLOBAL.TIME.CALENDAR ANCESTOR AT DIMENSION LEVEL GLOBAL.TIME.CALENDAR_YEAR)

時間 ユニット 前年 差異

Q1.05

143607

146529

-2922

Q2.05

138096

143070

-4974

Q3.05

138953

148292

-9339

Q4.05

145062

149528

-4466

Q1.06

146819

143607

3212

Q2.06

145233

138096

7137

Q3.06

143572

138953

4619

Q4.06

149305

145062

4243

関連項目

LAGLAG_VARIANCE_PERCENTLEAD

LAG_VARIANCE_PERCENT

LAG_VARIANCE_PERCENTは、現行期間と過去の期間の値の差異率を返します。

戻り値

NUMBER

構文

LAG_VARIANCE_PERCENT (lag_args) OVER (lag_clause)

lag_args::=

expression, offset [, {default_expression | CLOSEST} ]

lag_clause::=

[ {DIMENSION dimension_id | HIERARCHY hierarchy_id} ]
[ [BY] { LEVEL 
       | PARENT 
       | GREGORIAN {YEAR | QUARTER | MONTH | WEEK | DAY}
       | ANCESTOR AT { DIMENSION LEVEL dim_level_id
                     | HIERARCHY LEVEL hier_level_id
                     }
       }
  [POSITION FROM {BEGINNING | END}] 
] 

引数

オフセット・ユニット 説明

LEVEL

現行メンバーよりもoffsetの期間数分前の、同一レベルのメンバーです。(デフォルト)

PARENT

現行メンバーよりもoffsetの期間数分前の、同じ親を持つ同一レベルのメンバーです。

GREGORIAN YEAR

開始日が、現行期間の開始日よりもoffsetの年数分前の、同一レベルの期間です。

GREGORIAN QUARTER

開始日が、現行期間の開始日よりもoffsetの四半期数分前の、同一レベルの期間です。

GREGORIAN MONTH

開始日が、現行期間の開始日よりもoffsetの月数分前の、同一レベルの期間です。

GREGORIAN WEEK

開始日が、現行期間の開始日よりもoffsetの週数分前の、同一レベルの期間です。

GREGORIAN DAY

開始日が、現行期間の開始日よりもoffsetの日数分前の、同一レベルの期間です。

ANCESTOR

現行期間と同じレベルにあり、祖先が現行期間の祖先よりも前のoffset位置にある期間です。

expression

計算する値を含むディメンション式。

offset

現行期間からいくつ前の期間に戻るかを表す数値式です。

default_expression

offsetで有効な期間が指定されない場合に返される値です。この句は、任意のデータ型の式、または近接を表すキーワードCLOSESTです。近接とは、後方に移動した場合の直後のメンバーです。

dimension_id

ラグを計算する時間ディメンションです。

hierarchy_id

ラグを計算する階層です。指定しない場合は、dimension_idのデフォルト階層が使用されます。

dim_level_id

dimension_idのレベルの名前。

hier_level_id

hierarchy_idのレベルの名前。

BY副句

BY副句はオフセットの計算に使用する期間の範囲を指定します。次は、キーワードの説明です。

次の例は、現在の期間と前年の同等の期間の値の相違率を返します。

LAG_VARIANCE_PERCENT (GLOBAL.UNITS_CUBE.UNITS, 1) OVER (HIERARCHY GLOBAL.TIME.CALENDAR ANCESTOR AT DIMENSION LEVEL GLOBAL.TIME.CALENDAR_YEAR)

時間 ユニット 前年 差異 パーセント

Q1.05

143607

146529

-2922

-.02

Q2.05

138096

143070

-4974

-.03

Q3.05

138953

148292

-9339

-.06

Q4.05

145062

149528

-4466

-.03

Q1.06

146819

143607

3212

.02

Q2.06

145233

138096

7137

.05

Q3.06

143572

138953

4619

.03

Q4.06

149305

145062

4243

.03

関連項目

LAGLAG_VARIANCELEAD

LEAD

LEADは、将来の期間に関する式の値を返します。

戻り値

値式と同じデータ型

構文

LEAD (lead_args) OVER (lead_clause)

lead_args::=

expression, offset [, {default_expression | CLOSEST} ]

lead_clause::=

[ {DIMENSION dimension_id | HIERARCHY hierarchy_id} ]
[ [BY] { LEVEL 
       | PARENT 
       | GREGORIAN {YEAR | QUARTER | MONTH | WEEK | DAY}
       | ANCESTOR AT { DIMENSION LEVEL dim_level_id
                     | HIERARCHY LEVEL hier_level_id
                     }
       }
  [POSITION FROM {BEGINNING | END}] 
] 

引数

オフセット・ユニット 説明

LEVEL

現行メンバーよりもoffsetの期間数分後の、同一レベルのメンバーです。(デフォルト)

PARENT

現行メンバーよりもoffsetの期間数分後の、同じ親を持つ同一レベルのメンバーです。

GREGORIAN YEAR

開始日が、現行期間の開始日よりもoffsetの年数分後の、同一レベルの期間です。

GREGORIAN QUARTER

開始日が、現行期間の開始日よりもoffsetの四半期数分後の、同一レベルの期間です。

GREGORIAN MONTH

開始日が、現行期間の開始日よりもoffsetの月数分後の、同一レベルの期間です。

GREGORIAN WEEK

開始日が、現行期間の開始日よりもoffsetの週数分後の、同一レベルの期間です。

GREGORIAN DAY

開始日が、現行期間の開始日よりもoffsetの日数分後の、同一レベルの期間です。

ANCESTOR

現行期間と同じレベルにあり、祖先が現行期間の祖先よりも後のoffset位置にある期間です。

expression

計算する値を含むディメンション式。

offset

現行期間からいくつ後の期間に進むかを表す数値式です。

default_expression

offsetで有効な期間が指定されない場合に返される値です。この句は、任意のデータ型の式、または近接を表すキーワードCLOSESTです。近接とは、前方に移動した場合の直後のメンバーです。

dimension_id

リードを計算する時間ディメンションです。

hierarchy_id

リードを計算する階層です。指定しない場合は、dimension_idのデフォルト階層が使用されます。

dim_level_id

dimension_idのレベルの名前。

hier_level_id

hierarchy_idのレベルの名前。

BY副句

BY副句はオフセットの計算に使用する期間の範囲を指定します。次は、キーワードの説明です。

この計算は、カレンダ四半期に基づく次の期間の値を返します。この計算の出力例を「次の四半期」列に示します。

LEAD (GLOBAL.UNITS_CUBE.UNITS, 1, CLOSEST) OVER (DIMENSION GLOBAL.TIME BY ANCESTOR AT DIMENSION LEVEL GLOBAL.TIME.CALENDAR_QUARTER)

時間 ユニット 次の四半期

2005

TOTAL

565718

--

Q1-05

CY2005

143607

138096

Q2-05

CY2005

138096

138953

Q3-05

CY2005

138953

145062

Q4-05

CY2005

145062

146819

Jan-05

CY2005.Q1

50098

40223

Feb-05

CY2005.Q1

43990

45477

Mar-05

CY2005.Q1

49519

52396

Apr-05

CY2005.Q2

40223

45595

May-05

CY2005.Q2

45477

46882

Jun-05

CY2005.Q2

52396

46476

Jul-05

CY2005.Q3

45595

47476

Aug-05

CY2005.Q3

46882

47496

Sep-05

CY2005.Q3

46476

50090

Oct-05

CY2005.Q4

47476

47776

Nov-05

CY2005.Q4

47496

47695

Dec-05

CY2005.Q4

50090

51348

LEAD_VARIANCE

LEAD_VARIANCEは、現行期間とオフセット期間の値の差を返します。

戻り値

値式と同じデータ型

構文

LEAD_VARIANCE (lead_args) OVER (lead_clause)

lead_args::=

expression, offset [, {default_expression | CLOSEST} ]

lead_clause::=

[ {DIMENSION dimension_id | HIERARCHY hierarchy_id} ]
[ [BY] { LEVEL 
       | PARENT 
       | GREGORIAN {YEAR | QUARTER | MONTH | WEEK | DAY}
       | ANCESTOR AT { DIMENSION LEVEL dim_level_id
                     | HIERARCHY LEVEL hier_level_id
                     }
       }
  [POSITION FROM {BEGINNING | END}] 
] 

引数

オフセット・ユニット 説明

LEVEL

現行メンバーよりもoffsetの期間数分後の、同一レベルのメンバーです。(デフォルト)

PARENT

現行メンバーよりもoffsetの期間数分後の、同じ親を持つ同一レベルのメンバーです。

GREGORIAN YEAR

開始日が、現行期間の開始日よりもoffsetの年数分後の、同一レベルの期間です。

GREGORIAN QUARTER

開始日が、現行期間の開始日よりもoffsetの四半期数分後の、同一レベルの期間です。

GREGORIAN MONTH

開始日が、現行期間の開始日よりもoffsetの月数分後の、同一レベルの期間です。

GREGORIAN WEEK

開始日が、現行期間の開始日よりもoffsetの週数分後の、同一レベルの期間です。

GREGORIAN DAY

開始日が、現行期間の開始日よりもoffsetの日数分後の、同一レベルの期間です。

ANCESTOR

現行期間と同じレベルにあり、祖先が現行期間の祖先よりも後のoffset位置にある期間です。

expression

計算する値を含むディメンション式。

offset

現行期間からいくつ後の期間に進むかを表す数値式です。

default_expression

offsetで有効な期間が指定されない場合に返される値です。この句は、任意のデータ型の式、または近接を表すキーワードCLOSESTです。近接とは、前方に移動した場合の直後のメンバーです。

dimension_id

リードを計算する時間ディメンションです。

hierarchy_id

リードを計算する階層です。指定しない場合は、dimension_idのデフォルト階層が使用されます。

dim_level_id

dimension_idのレベルの名前。

hier_level_id

hierarchy_idのレベルの名前。

BY副句

BY副句はオフセットの計算に使用する期間の範囲を指定します。次は、キーワードの説明です。

この計算は、現在の値とカレンダ四半期に基づく次の期間の値の差を返します。この計算の出力例を「差異」列に示します。

LEAD_VARIANCE (GLOBAL.UNITS_CUBE.UNITS, 1, CLOSEST) OVER (DIMENSION GLOBAL.TIME BY ANCESTOR AT DIMENSION LEVEL GLOBAL.TIME.CALENDAR_QUARTER)

時間 ユニット 次の四半期 差異

2005

TOTAL

565718

--

--

Q1-05

CY2005

143607

138096

5511

Q2-05

CY2005

138096

138953

-857

Q3-05

CY2005

138953

145062

-6109

Q4-05

CY2005

145062

146819

-1757

Jan-05

CY2005.Q1

50098

40223

9875

Feb-05

CY2005.Q1

43990

45477

-1487

Mar-05

CY2005.Q1

49519

52396

-2877

Apr-05

CY2005.Q2

40223

45595

-5372

May-05

CY2005.Q2

45477

46882

-1405

Jun-05

CY2005.Q2

52396

46476

5920

Jul-05

CY2005.Q3

45595

47476

-1881

Aug-05

CY2005.Q3

46882

47496

-614

Sep-05

CY2005.Q3

46476

50090

-3614

Oct-05

CY2005.Q4

47476

47776

-300

Nov-05

CY2005.Q4

47496

47695

-199

Dec-05

CY2005.Q4

50090

51348

-1258

関連項目

LAGLEADLEAD_VARIANCE_PERCENT

LEAD_VARIANCE_PERCENT

LEAD_VARIANCE_PERCENTは、現行期間とオフセット期間の値の相違率を返します。

戻り値

NUMBER

構文

LEAD_VARIANCE_PERCENT (lead_args) OVER (lead_clause)

lead_args::=

expression, offset [, {default_expression | CLOSEST} ]

lead_clause::=

[ {DIMENSION dimension_id | HIERARCHY hierarchy_id} ]
[ [BY] { LEVEL 
       | PARENT 
       | GREGORIAN {YEAR | QUARTER | MONTH | WEEK | DAY}
       | ANCESTOR AT { DIMENSION LEVEL dim_level_id
                     | HIERARCHY LEVEL hier_level_id
                     }
       }
  [POSITION FROM {BEGINNING | END}] 
] 

引数

オフセット・ユニット 説明

LEVEL

現行メンバーよりもoffsetの期間数分後の、同一レベルのメンバーです。(デフォルト)

PARENT

現行メンバーよりもoffsetの期間数分後の、同じ親を持つ同一レベルのメンバーです。

GREGORIAN YEAR

開始日が、現行期間の開始日よりもoffsetの年数分後の、同一レベルの期間です。

GREGORIAN QUARTER

開始日が、現行期間の開始日よりもoffsetの四半期数分後の、同一レベルの期間です。

GREGORIAN MONTH

開始日が、現行期間の開始日よりもoffsetの月数分後の、同一レベルの期間です。

GREGORIAN WEEK

開始日が、現行期間の開始日よりもoffsetの週数分後の、同一レベルの期間です。

GREGORIAN DAY

開始日が、現行期間の開始日よりもoffsetの日数分後の、同一レベルの期間です。

ANCESTOR

現行期間と同じレベルにあり、祖先が現行期間の祖先よりも後のoffset位置にある期間です。

expression

計算する値を含むディメンション式。

offset

現行期間からいくつ後の期間に進むかを表す数値式です。

default_expression

offsetで有効な期間が指定されない場合に返される値です。この句は、任意のデータ型の式、または近接を表すキーワードCLOSESTです。近接とは、前方に移動した場合の直後のメンバーです。

dimension_id

リードを計算する時間ディメンションです。

hierarchy_id

リードを計算する階層です。指定しない場合は、dimension_idのデフォルト階層が使用されます。

dim_level_id

dimension_idのレベルの名前。

hier_level_id

hierarchy_idのレベルの名前。

BY副句

BY副句はオフセットの計算に使用する期間の範囲を指定します。次は、キーワードの説明です。

この計算は、現在の値とカレンダ四半期に基づく次の期間の値の相違率を返します。この計算の出力例を「パーセント」列に示します。

LEAD_VARIANCE_PERCENT (GLOBAL.UNITS_CUBE.UNITS, 1, CLOSEST) OVER (DIMENSION GLOBAL.TIME BY ANCESTOR AT DIMENSION LEVEL GLOBAL.TIME.CALENDAR_QUARTER)

時間 ユニット 次の四半期 差異 パーセント

2005

TOTAL

565718

--

--

--

Q1-05

CY2005

143607

138096

5511

.04

Q2-05

CY2005

138096

138953

-857

-.01

Q3-05

CY2005

138953

145062

-6109

-.04

Q4-05

CY2005

145062

146819

-1757

-.01

Jan-05

CY2005.Q1

50098

40223

9875

.25

Feb-05

CY2005.Q1

43990

45477

-1487

-.03

Mar-05

CY2005.Q1

49519

52396

-2877

-.05

Apr-05

CY2005.Q2

40223

45595

-5372

-.12

May-05

CY2005.Q2

45477

46882

-1405

-.03

Jun-05

CY2005.Q2

52396

46476

5920

.13

Jul-05

CY2005.Q3

45595

47476

-1881

-.04

Aug-05

CY2005.Q3

46882

47496

-614

-.01

Sep-05

CY2005.Q3

46476

50090

-3614

-.07

Oct-05

CY2005.Q4

47476

47776

-300

-.01

Nov-05

CY2005.Q4

47496

47695

-199

0

Dec-05

CY2005.Q4

50090

51348

-1258

-.02

関連項目

LAGLEADLEAD_VARIANCE

MAX

MAXは、時間ディメンションで計算されたデータ値の中から最大の値を選択して返します。

GREGORIANリレーションは、時間ディメンションにグレゴリオ暦を追加します。このリレーションは、会計や非標準の階層での計算に便利です。

戻り値

NUMBER

構文

MAX (value_expr) OVER (window_clause)

window_clause::=

[ { DIMENSION dimension_id | HIERARCHY hierarchy_id } ]
    BETWEEN preceding_boundary | following_boundary 
     [WITHIN { PARENT
             | LEVEL
             | GREGORIAN {YEAR | QUARTER | MONTH | WEEK}
             | ANCESTOR AT { DIMENSION LEVEL dim_level_id
                           | HIERARCHY LEVEL hier_level_id 
                           }
             }
     ]

preceding_boundary::=

{UNBOUNDED PRECEDING | expression PRECEDING} AND 
   { CURRENT MEMBER 
   | expression {PRECEDING | FOLLOWING}
   | UNBOUNDED FOLLOWING
   }

following_boundary::=

{CURRENT MEMBER | expression FOLLOWING} AND
  { expression FOLLOWING 
  | UNBOUNDED FOLLOWING
  }

引数

範囲 説明

LEVEL

同一レベルのすべての期間を計算します。(デフォルト)

PARENT

同じ親を持つ同一レベルの期間を計算します。

GREGORIAN YEAR

同じ年(グレゴリオ暦)の期間を計算します。

GREGORIAN QUARTER

同じ四半期(グレゴリオ暦)の期間を計算します。

GREGORIAN MONTH

同じ月(グレゴリオ暦)の期間を計算します。

GREGORIAN WEEK

同じ週(グレゴリオ暦)の期間を計算します。

ANCESTOR

指定したレベルで、同じ祖先を持つ同一レベルの期間を含めます。

value_expr

計算する値を含むディメンション式。

dimension_id

デフォルト階層を使用して値が計算される時間ディメンション。

hierarchy_id

値が計算される階層。かわりにdimension_idが使用される場合、デフォルト階層が使用されます。

dim_level_id

dimension_idのレベルの名前。

hier_level_id

hierarchy_idのレベルの名前。

boundary

preceding_boundaryおよびfollowing_boundaryは、ディメンションまたは階層で特定されるグループ内の期間の範囲を特定します。

UNBOUNDED: グループの最初の期間で始まるか、最後の期間で終わります。

CURRENT MEMBER: 現在の期間の計算を開始または終了します。

expression

数値は、範囲を開始するまたは終了する、現在の期間から特定の距離にある期間を示します。

WITHIN副句

計算に使用する期間の範囲を指定します。次は、キーワードの説明です。

この例は、カレンダ年の移動最大値を計算します。

MAX(GLOBAL.UNITS_CUBE.UNITS) OVER (DIMENSION GLOBAL.TIME BETWEEN UNBOUNDED PRECEDING AND CURRENT MEMBER WITHIN ANCESTOR AT DIMENSION LEVEL GLOBAL.TIME.CALENDAR_YEAR)

時間 ユニット 最大値

JAN-06

47776

47776

FEB-06

47695

47776

MAR-06

51348

51348

APR-06

47005

51348

MAY-06

52809

52809

JUN-06

45419

52809

JUL-06

48388

52809

AUG-06

48830

52809

SEP-06

46354

52809

OCT-06

47411

52809

NOV-06

46842

52809

DEC-06

55052

55052

関連項目

AVGCOUNTMINSUM

MIN

MINは、時間ディメンションで計算されたデータ値の中から最小の値を選択して返します。

GREGORIANリレーションは、時間ディメンションにグレゴリオ暦を追加します。このリレーションは、会計や非標準の階層での計算に便利です。

戻り値

NUMBER

構文

MIN (value_expr) OVER (window_clause)

window_clause::=

[ { DIMENSION dimension_id | HIERARCHY hierarchy_id } ]
    BETWEEN preceding_boundary | following_boundary 
     [WITHIN { LEVEL
             | PARENT
             | GREGORIAN {YEAR | QUARTER | MONTH | WEEK}
             | ANCESTOR AT { DIMENSION LEVEL dim_level_id
                           | HIERARCHY LEVEL hier_level_id 
                           }
             }
     ]

preceding_boundary::=

{UNBOUNDED PRECEDING | expression PRECEDING} AND 
   { CURRENT MEMBER 
   | expression {PRECEDING | FOLLOWING}
   | UNBOUNDED FOLLOWING
   }

following_boundary::=

{CURRENT MEMBER | expression FOLLOWING} AND
  { expression FOLLOWING 
  | UNBOUNDED FOLLOWING
  }

引数

範囲 説明

LEVEL

同一レベルのすべての期間を計算します。(デフォルト)

PARENT

同じ親を持つ同一レベルの期間を計算します。

GREGORIAN YEAR

同じ年(グレゴリオ暦)の期間を計算します。

GREGORIAN QUARTER

同じ四半期(グレゴリオ暦)の期間を計算します。

GREGORIAN MONTH

同じ月(グレゴリオ暦)の期間を計算します。

GREGORIAN WEEK

同じ週(グレゴリオ暦)の期間を計算します。

ANCESTOR

指定したレベルで、同じ祖先を持つ同一レベルの期間を含めます。

value_expr

計算する値を含むディメンション式。

dimension_id

デフォルト階層を使用して値が計算される時間ディメンション。

hierarchy_id

値が計算される階層。かわりにdimension_idが使用される場合、デフォルト階層が使用されます。

dim_level_id

dimension_idのレベルの名前。

hier_level_id

hierarchy_idのレベルの名前。

boundary

preceding_boundaryおよびfollowing_boundaryは、ディメンションまたは階層で特定されるグループ内の期間の範囲を特定します。

UNBOUNDED: グループの最初の期間で始まるか、最後の期間で終わります。

CURRENT MEMBER: 現在の期間の計算を開始または終了します。

expression

数値は、範囲を開始するまたは終了する、現在の期間から特定の距離にある期間を示します。

WITHIN副句

計算に使用する期間の範囲を指定します。次は、キーワードの説明です。

この例は、現在のメンバーと同じカレンダ年のすべての後続メンバーの間の最小値を計算します。データの選択は、2006年の月の最小値を表示します。

MIN(GLOBAL.UNITS_CUBE.UNITS) OVER (DIMENSION GLOBAL.TIME BETWEEN CURRENT MEMBER AND UNBOUNDED FOLLOWING WITHIN ANCESTOR AT DIMENSION LEVEL GLOBAL.TIME.CALENDAR_YEAR)

時間 ユニット 最小値

JAN-06

47776

45419

FEB-06

47695

45419

MAR-06

51348

45419

APR-06

47005

45419

MAY-06

52809

45419

JUN-06

45419

45419

JUL-06

48388

46354

AUG-06

48830

46354

SEP-06

46354

46354

OCT-06

47411

46842

NOV-06

46842

46842

DEC-06

55052

55052

関連項目

AVGCOUNTMAXSUM

OLAP_DML_EXPRESSION

OLAP_DML_EXPRESSIONは、OLAP DML言語の式を実行します。

戻り値

構文で指定されるデータ型

構文

OLAP_DML_EXPRESSION (expression, datatype)

引数

expression

関数またはプログラムの呼出しなど、OLAP DML言語の式です。

datatype

expressionからの戻り値のデータ型です。

この例では、OLAP_DML_EXPRESSION関数はOLAP DML RANDOM関数を実行して、1.05から1.10までのランダム数で計算済メジャーを生成します。

OLAP_DML_EXPRESSION('RANDOM(1.05, 1.10)', NUMBER)

時間 製品 ランダム

2005

ハードウェア

1.07663806

2005

ソフトウェア/その他

1.08295738

2006

ハードウェア

1.08707305

2006

ソフトウェア/その他

1.09730881

RANK

RANKは、式の値に基づいてディメンションのメンバーをソートします。この関数は、ディメンション番号の順序番号を返します。

RANKでは、同じ値には同じランクが割り当てられます。たとえば、5つのディメンション・メンバーに対して、RANKから、1、2、3、3、5が返されることがあります。

戻り値

NUMBER

構文

RANK ( ) OVER (rank_clause)

rank_clause::=

{ DIMENSION dimension_id | HIERARCHY hierarchy_id }
  ORDER BY order_by_clause [, order_by_clause]...
  [ WITHIN { PARENT 
           | LEVEL 
           | ANCESTOR AT { DIMENSION LEVEL dim_lvl_id
                         | HIERARCHY LEVEL hier_level_id
                         }
           }
  ]

order_by_clause::=

expression [ASC | DESC] [NULLS {FIRST | LAST}] 

引数

PARENT: 同じ親を持つ同一レベルのメンバーをランク付けします。

LEVEL: 同じレベルのすべてのメンバーをランク付けします。

ANCESTOR: 指定したレベルで、同じ祖先を持つ同一レベルのすべてのメンバーをランク付けします。

dimension_id

デフォルト階層を使用して値が計算されるディメンション。

hierarchy_id

値が計算される階層。かわりにdimension_idが使用される場合は、デフォルト階層が使用されます。

ORDER BY

ランクの基準を指定します。同順位となるものをさらにソートするために、ORDER BY句を追加することができます。

expression

ランクの基準として使用する値を指定します。

ASC | DESC

最小値から最大値(昇順)または最大値から最小値(降順)の順にランクをソートします。

NULLS {FIRST | LAST}

NULL値を含む数を最初にリストするか最後にリストするかを決定します。

WITHIN

一連の関連するディメンション・メンバーをランク付けするために選択します。

dim_level_id

dimension_idのレベルの名前。

hier_level_id

hierarchy_idのレベルの名前。

次の例は、カレンダ年の期間をユニット・コスト別にランク付けします。2か月(JAN-02とJUL-02)が同じ値と同じランク(6)を持つため、7にランク付けされている月はないことに注意してください。

RANK() OVER (DIMENSION TIME.CALENDAR ORDER BY PRICE_CUBE.UNIT_COST DESC NULLS LAST WITHIN ANCESTOR AT DIMENSION LEVEL TIME.CALENDAR_YEAR)

製品 時間 コスト ランク

Deluxe Mouse

MAR-02

24.05

1

Deluxe Mouse

APR-02

23.95

2

Deluxe Mouse

FEB-02

23.94

3

Deluxe Mouse

AUG-02

23.88

4

Deluxe Mouse

MAY-02

23.84

5

Deluxe Mouse

JAN-02

23.73

6

Deluxe Mouse

JUL-02

23.73

6

Deluxe Mouse

JUN-02

23.72

8

Deluxe Mouse

SEP-02

23.71

9

Deluxe Mouse

NOV-02

23.65

10

Deluxe Mouse

DEC-02

23.62

11

Deluxe Mouse

OCT-02

23.37

12

ROW_NUMBER

ROW_NUMBERは、式の値に基づいてディメンションのメンバーをソートします。この関数は、ディメンション番号の順序番号を返します。

ROW_NUMBERでは、各ディメンション・メンバーに一意のランクが割り当てられます。同じ値でもランクは任意です。たとえば、ROW_NUMBERは、5つのディメンション番号に対して、すべてが同じ値であっても常に1、2、3、4、5を返します。

戻り値

NUMBER

構文

ROW_NUMBER ( ) OVER (rank_clause)

rank_clause::=

{ DIMENSION dimension_id | HIERARCHY hierarchy_id }
  ORDER BY order_by_clause [, order_by_clause]...
  [ WITHIN { PARENT 
           | LEVEL 
           | ANCESTOR AT { DIMENSION LEVEL dim_lvl_id
                         | HIERARCHY LEVEL hier_level_id
                         }
           }
  ]

order_by_clause::=

expression [ASC | DESC] [NULLS {FIRST | LAST}] 

引数

PARENT: 同じ親を持つ同一レベルのメンバーをランク付けします。

LEVEL: 同じレベルのすべてのメンバーをランク付けします。

ANCESTOR: 指定したレベルで、同じ祖先を持つ同一レベルのすべてのメンバーをランク付けします。

dimension_id

デフォルト階層を使用して値が計算されるディメンション。

hierarchy_id

値が計算される階層。かわりにdimension_idが使用される場合は、デフォルト階層が使用されます。

ORDER BY

ランクの基準を指定します。同順位となるものをさらにソートするために、ORDER BY句を追加することができます。

expression

ランクの基準として使用する値を指定します。

ASC | DESC

最小値から最大値(昇順)または最大値から最小値(降順)の順にランクをソートします。

NULLS {FIRST | LAST}

NULL値を含む数を最初にリストするか最後にリストするかを決定します。

WITHIN

一連の関連するディメンション・メンバーをランク付けするために選択します。

dim_level_id

dimension_idのレベルの名前。

hier_level_id

hierarchy_idのレベルの名前。

次の例は、カレンダ年の期間をユニット・コスト別にランク付けします。2か月(JAN-02とJUL-02)が同じ値を持ちますが、連番(6と7)が割り当てられていることに注意してください。

ROW_NUMBER() OVER (HIERARCHY TIME.CALENDAR ORDER BY PRICE_CUBE.UNIT_COST DESC NULLS LAST WITHIN ANCESTOR AT DIMENSION LEVEL TIME.CALENDAR_YEAR)

製品 時間 コスト 行番号

Deluxe Mouse

MAR-02

24.05

1

Deluxe Mouse

APR-02

23.95

2

Deluxe Mouse

FEB-02

23.94

3

Deluxe Mouse

AUG-02

23.88

4

Deluxe Mouse

MAY-02

23.84

5

Deluxe Mouse

JAN-02

23.73

6

Deluxe Mouse

JUL-02

23.73

7

Deluxe Mouse

JUN-02

23.72

8

Deluxe Mouse

SEP-02

23.71

9

Deluxe Mouse

NOV-02

23.65

10

Deluxe Mouse

DEC-02

23.62

11

Deluxe Mouse

OCT-02

23.37

12

関連項目

AVERAGE_RANKDENSE_RANKRANK

SHARE

SHAREは、現行ディメンション・メンバーに対する式の値の、同じディメンションの関連するメンバーの値に対する比率を計算します。この関数の引数によって、比率で使用される関連メンバーを指定します。

戻り値

NUMBER

構文

share_expression::=

SHARE (expression share_clause [share_clause]... )
 

share_clause::=

OF { DIMENSION dimension_id | HIERARCHY hierarchy_id }
   { PARENT 
   | TOP 
   | MEMBER 'member_name'
   | DIMENSION LEVEL dim_level_id 
   | HIERARCHY LEVEL hier_level_id 
   }

引数

シェアは次の式で計算されます。

キーワード

PARENT

現在のメンバー/親

TOP

現在のメンバー/ルート祖先

MEMBER

現在のメンバー/指定したメンバー

DIMENSION LEVEL

現在のメンバー/指定したレベルの祖先または現在のメンバーが指定したレベルよりも上の場合はNULLです。

expression

計算する値を含むディメンション式。

dimension_id

expressionのディメンションです。計算ではデフォルト階層が使用されます。別の階層を使用する場合は、かわりにHIERARCHY引数を使用してください。

hierarchy_id

expressionのレベル階層です。

member_name

指定したディメンションまたは階層のメンバーです。

dim_level_id

dimension_idのレベルの名前。

hier_level_id

hierarchy_idのレベルの名前。

次の例では、親メンバーに対する各製品のシェアが計算されます。結果は「SHARE_OF_PARENT」列に示されています。

(SHARE(UNITS_CUBE.SALES OF HIERARCHY PRODUCT.PRIMARY PARENT))*100

次の例では、Total Productに対する各製品のシェアが計算されます。結果は「SHARE_OF_TOP」列に示されています。

(SHARE(UNITS_CUBE.SALES OF HIERARCHY PRODUCT.PRIMARY TOP))*100

製品 販売 親に対するシェア 最上位に対するシェア

デスクトップPC

HRD

74556528

60

54

ポータブルPC

HRD

18338225

15

13

CD/DVD

HRD

16129497

13

12

メモリー

HRD

5619219

5

4

モデム/Fax

HRD

5575726

4

4

モニター

HRD

3972142

3

3

アクセサリ

SFT

6213535

49

5

オペレーティング・システム

SFT

4766857

37

3

ドキュメント

SFT

1814844

14

1

ハードウェア

TOTAL

124191336

91

91

ソフトウェア/その他

TOTAL

12795236

9

9

SUM

SUMは、時間ディメンションで計算された値から合計を選択して返します。SUM関数を使用して、現在までの期間の計算を作成できます。

GREGORIANリレーションは、時間ディメンションにグレゴリオ暦を追加します。このリレーションは、会計や非標準の階層での計算に便利です。

戻り値

NUMBER

構文

SUM (value_expr) OVER (window_clause)

window_clause::=

[ { DIMENSION dimension_id | HIERARCHY hierarchy_id } ]
    BETWEEN preceding_boundary | following_boundary 
      [WITHIN { PARENT
              | LEVEL
              | GREGORIAN {YEAR | QUARTER | MONTH | WEEK}
              | ANCESTOR AT { DIMENSION LEVEL dim_level_id
                            | HIERARCHY LEVEL hier_level_id 
                            }
              }
      ]

preceding_boundary::=

{UNBOUNDED PRECEDING | expression PRECEDING} AND 
   { CURRENT MEMBER 
   | expression {PRECEDING | FOLLOWING}
   | UNBOUNDED FOLLOWING
   }

following_boundary::=

{CURRENT MEMBER | expression FOLLOWING} AND
  { expression FOLLOWING 
  | UNBOUNDED FOLLOWING
  }

引数

範囲 説明

LEVEL

同一レベルのすべての期間を計算します。(デフォルト)

PARENT

同じ親を持つ同一レベルの期間を計算します。

GREGORIAN YEAR

同じ年(グレゴリオ暦)の期間を計算します。

GREGORIAN QUARTER

同じ四半期(グレゴリオ暦)の期間を計算します。

GREGORIAN MONTH

同じ月(グレゴリオ暦)の期間を計算します。

GREGORIAN WEEK

同じ週(グレゴリオ暦)の期間を計算します。

ANCESTOR

指定したレベルで、同じ祖先を持つ同一レベルの期間を含めます。

value_expr

計算する値を含むディメンション式。

dimension_id

デフォルト階層を使用して値が計算される時間ディメンション。

hierarchy_id

値が計算される階層。かわりにdimension_idが使用される場合、デフォルト階層が使用されます。

dim_level_id

dimension_idのレベルの名前。

hier_level_id

hierarchy_idのレベルの名前。

boundary

preceding_boundaryおよびfollowing_boundaryは、ディメンションまたは階層で特定されるグループ内の期間の範囲を特定します。

UNBOUNDED: グループの最初の期間で始まるか、最後の期間で終わります。

CURRENT MEMBER: 現在の期間の計算を開始または終了します。

expression

数値は、範囲を開始するまたは終了する、現在の期間から特定の距離にある期間を示します。

WITHIN副句

計算に使用する期間の範囲を指定します。次は、キーワードの説明です。

この例は、レベル内の現在の期間と次の期間の2つの値の合計を計算します。結果は「合計」列に示されています。

SUM(UNITS_CUBE.SALES) OVER (DIMENSION "TIME" BETWEEN 1 PRECEDING AND CURRENT MEMBER WITHIN LEVEL)

時間 販売 合計

Q1.04

146529

289599

Q2.04

143070

291362

Q3.04

148292

297820

Q4.04

149528

293135

Q1.05

143607

281703

Q2.05

138096

277049

Q3.05

138953

284015

Q4.05

145062

291881

次の例は、年初来の販売を計算します。

SUM(UNITS_CUBE.SALES) OVER (HIERARCHY TIME.CALENDAR BETWEEN UNBOUNDED PRECEDING AND CURRENT MEMBER WITHIN ANCESTOR AT DIMENSION LEVEL TIME.CALENDAR_YEAR)

時間 販売 販売YTD

JAN-05

12093518

12093518

FEB-05

10103162

22196680

MAR-05

9184658

31381338

APR-05

9185964

40567302

MAY-05

11640216

52207519

JUN-05

16816561

69024079

JUL-05

11110903

80134982

AUG-05

9475807

89610789

SEP-05

12030538

101641328

OCT-05

11135032

112776359

NOV-05

11067754

123844113

関連項目

AVGCOUNTMAXMIN