ヘッダーをスキップ
Oracle® OLAP Expression Syntaxリファレンス
12cリリース1 (12.1)
B72979-03
  目次へ移動
目次

前
 
次
 

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

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)

時間 ユニット COUNT
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}] 
] 

引数

expression

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

offset

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

default_expression

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

dimension_id

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

hierarchy_id

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

dim_level_id

dimension_idのレベルの名前。

hier_level_id

hierarchy_idのレベルの名前。

BY副句

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

オフセット・ユニット 説明
LEVEL 現行メンバーよりもoffsetの期間数分前の、同一レベルのメンバーです。(デフォルト)
PARENT 現行メンバーよりもoffsetの期間数分前の、同じ親を持つ同一レベルのメンバーです。
GREGORIAN YEAR 開始日が、現行期間の開始日よりもoffsetの年数分前の、同一レベルの期間です。
GREGORIAN QUARTER 開始日が、現行期間の開始日よりもoffsetの四半期数分前の、同一レベルの期間です。
GREGORIAN MONTH 開始日が、現行期間の開始日よりもoffsetの月数分前の、同一レベルの期間です。
GREGORIAN WEEK 開始日が、現行期間の開始日よりもoffsetの週数分前の、同一レベルの期間です。
GREGORIAN DAY 開始日が、現行期間の開始日よりもoffsetの日数分前の、同一レベルの期間です。
ANCESTOR 現行期間と同じレベルにあり、祖先が現行期間の祖先よりも前のoffset位置にある期間です。

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

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_VARIANCELAG_VARIANCE_PERCENTLEAD

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}] 
] 

引数

expression

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

offset

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

default_expression

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

dimension_id

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

hierarchy_id

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

dim_level_id

dimension_idのレベルの名前。

hier_level_id

hierarchy_idのレベルの名前。

BY副句

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

オフセット・ユニット 説明
LEVEL 現行メンバーよりもoffsetの期間数分前の、同一レベルのメンバーです。(デフォルト)
PARENT 現行メンバーよりもoffsetの期間数分前の、同じ親を持つ同一レベルのメンバーです。
GREGORIAN YEAR 開始日が、現行期間の開始日よりもoffsetの年数分前の、同一レベルの期間です。
GREGORIAN QUARTER 開始日が、現行期間の開始日よりもoffsetの四半期数分前の、同一レベルの期間です。
GREGORIAN MONTH 開始日が、現行期間の開始日よりもoffsetの月数分前の、同一レベルの期間です。
GREGORIAN WEEK 開始日が、現行期間の開始日よりもoffsetの週数分前の、同一レベルの期間です。
GREGORIAN DAY 開始日が、現行期間の開始日よりもoffsetの日数分前の、同一レベルの期間です。
ANCESTOR 現行期間と同じレベルにあり、祖先が現行期間の祖先よりも前のoffset位置にある期間です。

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

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}] 
] 

引数

expression

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

offset

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

default_expression

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

dimension_id

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

hierarchy_id

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

dim_level_id

dimension_idのレベルの名前。

hier_level_id

hierarchy_idのレベルの名前。

BY副句

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

オフセット・ユニット 説明
LEVEL 現行メンバーよりもoffsetの期間数分前の、同一レベルのメンバーです。(デフォルト)
PARENT 現行メンバーよりもoffsetの期間数分前の、同じ親を持つ同一レベルのメンバーです。
GREGORIAN YEAR 開始日が、現行期間の開始日よりもoffsetの年数分前の、同一レベルの期間です。
GREGORIAN QUARTER 開始日が、現行期間の開始日よりもoffsetの四半期数分前の、同一レベルの期間です。
GREGORIAN MONTH 開始日が、現行期間の開始日よりもoffsetの月数分前の、同一レベルの期間です。
GREGORIAN WEEK 開始日が、現行期間の開始日よりもoffsetの週数分前の、同一レベルの期間です。
GREGORIAN DAY 開始日が、現行期間の開始日よりもoffsetの日数分前の、同一レベルの期間です。
ANCESTOR 現行期間と同じレベルにあり、祖先が現行期間の祖先よりも前のoffset位置にある期間です。

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

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}] 
] 

引数

expression

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

offset

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

default_expression

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

dimension_id

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

hierarchy_id

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

dim_level_id

dimension_idのレベルの名前。

hier_level_id

hierarchy_idのレベルの名前。

BY副句

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

オフセット・ユニット 説明
LEVEL 現行メンバーよりもoffsetの期間数分後の、同一レベルのメンバーです。(デフォルト)
PARENT 現行メンバーよりもoffsetの期間数分後の、同じ親を持つ同一レベルのメンバーです。
GREGORIAN YEAR 開始日が、現行期間の開始日よりもoffsetの年数分後の、同一レベルの期間です。
GREGORIAN QUARTER 開始日が、現行期間の開始日よりもoffsetの四半期数分後の、同一レベルの期間です。
GREGORIAN MONTH 開始日が、現行期間の開始日よりもoffsetの月数分後の、同一レベルの期間です。
GREGORIAN WEEK 開始日が、現行期間の開始日よりもoffsetの週数分後の、同一レベルの期間です。
GREGORIAN DAY 開始日が、現行期間の開始日よりもoffsetの日数分後の、同一レベルの期間です。
ANCESTOR 現行期間と同じレベルにあり、祖先が現行期間の祖先よりも後のoffset位置にある期間です。

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

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

関連トピック

LAGLEAD_VARIANCELEAD_VARIANCE_PERCENT

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}] 
] 

引数

expression

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

offset

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

default_expression

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

dimension_id

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

hierarchy_id

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

dim_level_id

dimension_idのレベルの名前。

hier_level_id

hierarchy_idのレベルの名前。

BY副句

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

オフセット・ユニット 説明
LEVEL 現行メンバーよりもoffsetの期間数分後の、同一レベルのメンバーです。(デフォルト)
PARENT 現行メンバーよりもoffsetの期間数分後の、同じ親を持つ同一レベルのメンバーです。
GREGORIAN YEAR 開始日が、現行期間の開始日よりもoffsetの年数分後の、同一レベルの期間です。
GREGORIAN QUARTER 開始日が、現行期間の開始日よりもoffsetの四半期数分後の、同一レベルの期間です。
GREGORIAN MONTH 開始日が、現行期間の開始日よりもoffsetの月数分後の、同一レベルの期間です。
GREGORIAN WEEK 開始日が、現行期間の開始日よりもoffsetの週数分後の、同一レベルの期間です。
GREGORIAN DAY 開始日が、現行期間の開始日よりもoffsetの日数分後の、同一レベルの期間です。
ANCESTOR 現行期間と同じレベルにあり、祖先が現行期間の祖先よりも後のoffset位置にある期間です。

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

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}] 
] 

引数

expression

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

offset

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

default_expression

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

dimension_id

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

hierarchy_id

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

dim_level_id

dimension_idのレベルの名前。

hier_level_id

hierarchy_idのレベルの名前。

BY副句

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

オフセット・ユニット 説明
LEVEL 現行メンバーよりもoffsetの期間数分後の、同一レベルのメンバーです。(デフォルト)
PARENT 現行メンバーよりもoffsetの期間数分後の、同じ親を持つ同一レベルのメンバーです。
GREGORIAN YEAR 開始日が、現行期間の開始日よりもoffsetの年数分後の、同一レベルの期間です。
GREGORIAN QUARTER 開始日が、現行期間の開始日よりもoffsetの四半期数分後の、同一レベルの期間です。
GREGORIAN MONTH 開始日が、現行期間の開始日よりもoffsetの月数分後の、同一レベルの期間です。
GREGORIAN WEEK 開始日が、現行期間の開始日よりもoffsetの週数分後の、同一レベルの期間です。
GREGORIAN DAY 開始日が、現行期間の開始日よりもoffsetの日数分後の、同一レベルの期間です。
ANCESTOR 現行期間と同じレベルにあり、祖先が現行期間の祖先よりも後のoffset位置にある期間です。

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

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
  }

引数

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 指定したレベルで、同じ祖先を持つ同一レベルの期間を含めます。

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

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
  }

引数

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 指定したレベルで、同じ祖先を持つ同一レベルの期間を含めます。

この例は、現在のメンバーと同じカレンダ年のすべての後続メンバーの間の最小値を計算します。データの選択は、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}] 

引数

dimension_id

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

hierarchy_id

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

ORDER BY

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

expression

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

ASC | DESC

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

NULLS {FIRST | LAST}

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

WITHIN

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

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

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

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

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

関連トピック

AVERAGE_RANKDENSE_RANKROW_NUMBER

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}] 

引数

dimension_id

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

hierarchy_id

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

ORDER BY

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

expression

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

ASC | DESC

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

NULLS {FIRST | LAST}

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

WITHIN

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

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

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

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

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 
   }

引数

expression

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

dimension_id

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

hierarchy_id

expressionのレベル階層です。

member_name

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

dim_level_id

dimension_idのレベルの名前。

hier_level_id

hierarchy_idのレベルの名前。

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

キーワード
PARENT 現在のメンバー/親
TOP 現在のメンバー/ルート祖先
MEMBER 現在のメンバー/指定したメンバー
DIMENSION LEVEL 現在のメンバー/指定したレベルの祖先または現在のメンバーが指定したレベルよりも上の場合はNULLです。

次の例では、親メンバーに対する各製品のシェアが計算されます。結果は「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
  }

引数

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 指定したレベルで、同じ祖先を持つ同一レベルの期間を含めます。

この例は、レベル内の現在の期間と次の期間の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