2 OLAP関数
OLAP関数はSQL分析関数の構文を拡張します。この構文はSQL開発者およびDBAにとって使い慣れたものであるので、独自のOLAP言語およびAPIよりも容易に採用できます。OLAP関数を使用して、ランク、シェア、前期間および将来期間、現在までの期間、平行期間、移動集計、累積集計などの、すべての標準の計算済メジャーを作成できます。
この章ではOLAP関数について説明します。この項の内容は、次のとおりです。
2.3 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 |
関連項目
2.4 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 |
2.5 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)
時間 | ユニット | カウント |
---|---|---|
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 |
2.6 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 |
関連項目
2.7 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} )
引数
例
次の例では、時間ディメンションのデフォルト・カレンダ階層のメンバーについてカレンダ四半期レベルでの祖先を返します。
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)
2.8 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)
2.9 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)
2.10 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)
2.11 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)
2.12 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)
2.13 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)
2.14 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副句はオフセットの計算に使用する期間の範囲を指定します。次は、キーワードの説明です。
例
次の例は、各期間の前年の値を返します。
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 |
2.15 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副句はオフセットの計算に使用する期間の範囲を指定します。次は、キーワードの説明です。
例
次の例は、現在の期間と前年の同等の期間の値の差を返します。
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 |
関連項目
2.16 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副句はオフセットの計算に使用する期間の範囲を指定します。次は、キーワードの説明です。
例
次の例は、現在の期間と前年の同等の期間の値の相違率を返します。
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 |
関連項目
2.17 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副句はオフセットの計算に使用する期間の範囲を指定します。次は、キーワードの説明です。
例
この計算は、カレンダ四半期に基づく次の期間の値を返します。この計算の出力例を「次の四半期」列に示します。
LEAD (GLOBAL.UNITS_CUBE.UNITS, 1, CLOSEST) OVER (DIMENSION GLOBAL.TIME BY ANCESTOR AT DIMENSION LEVEL GLOBAL.TIME.CALENDAR_QUARTER)
時間 | 親 | ユニット | 次の四半期 |
---|---|---|---|
|
TOTAL |
565718 |
-- |
|
CY2005 |
143607 |
138096 |
|
CY2005 |
138096 |
138953 |
|
CY2005 |
138953 |
145062 |
|
CY2005 |
145062 |
146819 |
|
CY2005.Q1 |
50098 |
40223 |
|
CY2005.Q1 |
43990 |
45477 |
|
CY2005.Q1 |
49519 |
52396 |
|
CY2005.Q2 |
40223 |
45595 |
|
CY2005.Q2 |
45477 |
46882 |
|
CY2005.Q2 |
52396 |
46476 |
|
CY2005.Q3 |
45595 |
47476 |
|
CY2005.Q3 |
46882 |
47496 |
|
CY2005.Q3 |
46476 |
50090 |
|
CY2005.Q4 |
47476 |
47776 |
|
CY2005.Q4 |
47496 |
47695 |
|
CY2005.Q4 |
50090 |
51348 |
2.18 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副句はオフセットの計算に使用する期間の範囲を指定します。次は、キーワードの説明です。
例
この計算は、現在の値とカレンダ四半期に基づく次の期間の値の差を返します。この計算の出力例を「差異」列に示します。
LEAD_VARIANCE (GLOBAL.UNITS_CUBE.UNITS, 1, CLOSEST) OVER (DIMENSION GLOBAL.TIME BY ANCESTOR AT DIMENSION LEVEL GLOBAL.TIME.CALENDAR_QUARTER)
時間 | 親 | ユニット | 次の四半期 | 差異 |
---|---|---|---|---|
|
TOTAL |
565718 |
-- |
-- |
|
CY2005 |
143607 |
138096 |
5511 |
|
CY2005 |
138096 |
138953 |
-857 |
|
CY2005 |
138953 |
145062 |
-6109 |
|
CY2005 |
145062 |
146819 |
-1757 |
|
CY2005.Q1 |
50098 |
40223 |
9875 |
|
CY2005.Q1 |
43990 |
45477 |
-1487 |
|
CY2005.Q1 |
49519 |
52396 |
-2877 |
|
CY2005.Q2 |
40223 |
45595 |
-5372 |
|
CY2005.Q2 |
45477 |
46882 |
-1405 |
|
CY2005.Q2 |
52396 |
46476 |
5920 |
|
CY2005.Q3 |
45595 |
47476 |
-1881 |
|
CY2005.Q3 |
46882 |
47496 |
-614 |
|
CY2005.Q3 |
46476 |
50090 |
-3614 |
|
CY2005.Q4 |
47476 |
47776 |
-300 |
|
CY2005.Q4 |
47496 |
47695 |
-199 |
|
CY2005.Q4 |
50090 |
51348 |
-1258 |
関連項目
2.19 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副句はオフセットの計算に使用する期間の範囲を指定します。次は、キーワードの説明です。
例
この計算は、現在の値とカレンダ四半期に基づく次の期間の値の相違率を返します。この計算の出力例を「パーセント」列に示します。
LEAD_VARIANCE_PERCENT (GLOBAL.UNITS_CUBE.UNITS, 1, CLOSEST) OVER (DIMENSION GLOBAL.TIME BY ANCESTOR AT DIMENSION LEVEL GLOBAL.TIME.CALENDAR_QUARTER)
時間 | 親 | ユニット | 次の四半期 | 差異 | パーセント |
---|---|---|---|---|---|
|
TOTAL |
565718 |
-- |
-- |
-- |
|
CY2005 |
143607 |
138096 |
5511 |
.04 |
|
CY2005 |
138096 |
138953 |
-857 |
-.01 |
|
CY2005 |
138953 |
145062 |
-6109 |
-.04 |
|
CY2005 |
145062 |
146819 |
-1757 |
-.01 |
|
CY2005.Q1 |
50098 |
40223 |
9875 |
.25 |
|
CY2005.Q1 |
43990 |
45477 |
-1487 |
-.03 |
|
CY2005.Q1 |
49519 |
52396 |
-2877 |
-.05 |
|
CY2005.Q2 |
40223 |
45595 |
-5372 |
-.12 |
|
CY2005.Q2 |
45477 |
46882 |
-1405 |
-.03 |
|
CY2005.Q2 |
52396 |
46476 |
5920 |
.13 |
|
CY2005.Q3 |
45595 |
47476 |
-1881 |
-.04 |
|
CY2005.Q3 |
46882 |
47496 |
-614 |
-.01 |
|
CY2005.Q3 |
46476 |
50090 |
-3614 |
-.07 |
|
CY2005.Q4 |
47476 |
47776 |
-300 |
-.01 |
|
CY2005.Q4 |
47496 |
47695 |
-199 |
0 |
|
CY2005.Q4 |
50090 |
51348 |
-1258 |
-.02 |
関連項目
2.20 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副句
計算に使用する期間の範囲を指定します。次は、キーワードの説明です。
例
この例は、カレンダ年の移動最大値を計算します。
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 |
2.21 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副句
計算に使用する期間の範囲を指定します。次は、キーワードの説明です。
例
この例は、現在のメンバーと同じカレンダ年のすべての後続メンバーの間の最小値を計算します。データの選択は、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 |
2.22 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 |
2.23 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 |
2.24 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 |
関連項目
2.25 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 }
引数
シェアは次の式で計算されます。
キーワード | 式 |
---|---|
|
現在のメンバー/親 |
|
現在のメンバー/ルート祖先 |
|
現在のメンバー/指定したメンバー |
|
現在のメンバー/指定したレベルの祖先または現在のメンバーが指定したレベルよりも上の場合は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 |
2.26 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副句
計算に使用する期間の範囲を指定します。次は、キーワードの説明です。
例
この例は、レベル内の現在の期間と次の期間の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 |