OLAP関数はSQL分析関数の構文を拡張します。この構文はSQL開発者およびDBAにとって使い慣れたものであるので、独自のOLAP言語およびAPIよりも容易に採用できます。OLAP関数を使用して、ランク、シェア、前期間および将来期間、現在までの期間、平行期間、移動集計、累積集計などの、すべての標準の計算済メジャーを作成できます。
この章ではOLAP関数について説明します。内容は次のとおりです。
OLAP関数は、次のカテゴリにグループ化されます。
AVERAGE_RANK
は、式の値に基づいてディメンションのメンバーをソートします。この関数は、ディメンション番号の順序番号を返します。
AVERAGE_RANK
では、同じ値には同じ平均ランクが割り当てられます。たとえば、5つのディメンション番号に対して、AVERAGE_RANK
から、1、2、3.5、3.5、5が返されることがあります。
構文
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 |
AVG
は、時間ディメンションで計算した値を選択して平均を返します。この関数を使用して、累積平均と移動平均を作成します。
GREGORIAN
リレーションは、時間ディメンションにグレゴリオ暦を追加します。このリレーションは、会計や非標準の階層での計算に便利です。
構文
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 |
COUNT
は、時間ディメンションの選択メンバーによって識別されるデータ値の数を計算します。
GREGORIAN
リレーションは、時間ディメンションにグレゴリオ暦を追加します。このリレーションは、会計や非標準の階層での計算に便利です。
構文
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 |
DENSE_RANK
は、式の値に基づいてディメンションのメンバーをソートします。この関数は、ディメンション番号の順序番号を返します。
DENSE_RANK
は、同じ値に同じ最小ランクを割り当て、結果を順次リストで返します。結果のランク数は、リスト中の値の数よりも少なくなることがあります。たとえば、DENSE_RANK
は5つのディメンション・メンバーに対して1、2、3、3、4を返すことがあります。
構文
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 |
HIER_ANCESTOR
は、階層の特定のレベルで、階層のすべてのメンバーまたは特定のメンバーの祖先を返します。階層は、レベル・ベースである必要があります。
構文
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 ( [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
は、0が最上位レベルである階層のすべてのメンバーまたは特定のメンバーのレベルの深さを表す数を返します。階層は、レベル・ベースと値ベースのいずれも可能です。
引数
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
は、階層のすべてのメンバーまたは特定のメンバーのレベルを返します。階層は、レベル・ベースである必要があります。
引数
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
は、親直下の子のディメンション・メンバーをソートし、各メンバーの連番を返します。
引数
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
は、階層のすべてのディメンション・メンバーまたは特定のメンバーの親を返します。階層は、レベル・ベースと値ベースのいずれも可能です。
引数
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
は、階層のすべてのメンバーまたは特定のメンバーの最上位の祖先を返します。階層は、レベル・ベースと値ベースのいずれも可能です。
引数
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_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
は、現行期間と過去の期間の値の差を返します。
構文
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 |
LAG_VARIANCE_PERCENT
は、現行期間と過去の期間の値の差異率を返します。
構文
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 |
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 |
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 |
LEAD_VARIANCE_PERCENT
は、現行期間とオフセット期間の値の相違率を返します。
構文
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 |
MAX
は、時間ディメンションで計算されたデータ値の中から最大の値を選択して返します。
GREGORIAN
リレーションは、時間ディメンションにグレゴリオ暦を追加します。このリレーションは、会計や非標準の階層での計算に便利です。
構文
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 |
MIN
は、時間ディメンションで計算されたデータ値の中から最小の値を選択して返します。
GREGORIAN
リレーションは、時間ディメンションにグレゴリオ暦を追加します。このリレーションは、会計や非標準の階層での計算に便利です。
構文
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 |
OLAP_DML_EXPRESSION
は、OLAP DML言語の式を実行します。
RANK
は、式の値に基づいてディメンションのメンバーをソートします。この関数は、ディメンション番号の順序番号を返します。
RANK
では、同じ値には同じランクが割り当てられます。たとえば、5つのディメンション・メンバーに対して、RANK
から、1、2、3、3、5が返されることがあります。
構文
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 |
ROW_NUMBER
は、式の値に基づいてディメンションのメンバーをソートします。この関数は、ディメンション番号の順序番号を返します。
ROW_NUMBER
では、各ディメンション・メンバーに一意のランクが割り当てられます。同じ値でもランクは任意です。たとえば、ROW_NUMBER
は、5つのディメンション番号に対して、すべてが同じ値であっても常に1、2、3、4、5を返します。
構文
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 |
SHARE
は、現行ディメンション・メンバーに対する式の値の、同じディメンションの関連するメンバーの値に対する比率を計算します。この関数の引数によって、比率で使用される関連メンバーを指定します。
構文
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
関数を使用して、現在までの期間の計算を作成できます。
GREGORIAN
リレーションは、時間ディメンションにグレゴリオ暦を追加します。このリレーションは、会計や非標準の階層での計算に便利です。
構文
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 |