分析ビュー式
分析ビュー式を使用すると、分析ビューの定義内、または分析ビューから選択する問合せに計算済メジャーを作成できます。
分析ビュー式は、表や列ではなく、階層および分析ビューの要素を参照する点で他のタイプの式とは異なります。
分析ビュー式は次のいずれかです。
-
av_meas_expression(これは分析ビューのメジャーに基づいています) -
av_hier_expression(これは関連メンバーの属性値を戻します)
分析ビュー式は、CREATE ANALYTIC VIEW文のcalc_measure_clause、およびSELECT文のWITH句またはFROM句で、calc_meas_expressionパラメータとして使用できます。
計算済メジャーを定義する場合は、次のタイプの式を使用することもできます。
-
単純
-
CASE
-
複合
-
日時
-
期間
構文
av_meas_expression::=
lead_lag_expression::=
lead_lag_function_name::=
lead_lag_clause::=
hierarchy_ref::=
av_window_expression::=
av_window_clause::=
preceding_boundary ::=
following_boundary::=
calc_meas_order_by_clause::=
share_of_expression::=
share_clause::=
member_expression::=
level_member_literal::=
pos_member_keys::=
named_member_keys::=
hier_navigation_expression::=
hier_ancestor_expression::=
hier_parent_expression::=
hier_lead_lag_expression::=
hier_lead_lag_clause::=
hier_first_expression::=
hier_last_expression::=
hier_member_at_expression::=
qdr_expression::=
qualifier::=
member_set::=
member_to_set_func::=
hier_ancestors::=
hier_descendants::=
hier_siblings::=
self_clause ::=
hier_children::=
hier_level_members::=
set_to_set_func::=
hier_union::=
hier_union_all::=
hier_intersect::=
hier_minus::=
hier_distinct::=
hier_range::=
hier_window::=
hier_expand::=
hier_member_set::=
hier_cond::=
hier_position::=
hier_count::=
セマンティクス
av_meas_expression
関連するメジャー値を検索するために、階層ナビゲーションを実行する式。
lead_lag_expression
階層内で、LEAD操作またはLAG操作を指定して、ある数のメンバー分だけ前後にナビゲートして、関連するメジャー値を検索する式。
calc_meas_expressionパラメータは、lead_lag_expressionによって作成される新しいコンテキストで評価されます。このコンテキストには、指定される階層のメンバーが、LEAD操作またはLAG操作によって指定された関連するメンバーに変更される以外は、外部コンテキストと同じメンバーが含まれます。LEADファンクションまたはLAGファンクションは、lead_lag_clauseパラメータで指定された階層メンバーに対して実行されます。
lead_lag_function_name
LEADファンクションまたはLAGファンクションは、次のいずれかになります。
-
LAGでは、先行するメンバーのメジャー値を戻します。 -
LAG_DIFFでは、現在のメンバーのメジャー値と先行するメンバーのメジャー値との差を戻します。 -
LAG_DIFF_PERCENTでは、現在のメンバーのメジャー値と先行するメンバーのメジャー値との相違率を戻します。 -
LEADでは、後続のメンバーのメジャー値を戻します。 -
LEAD_DIFFでは、現在のメンバーのメジャー値と後続のメンバーのメジャー値との差を戻します。 -
LEAD_DIFF_PERCENTでは、現在のメンバーのメジャー値と後続のメンバーのメジャー値との相違率を戻します。
lead_lag_clause
評価する階層およびオフセット値を指定します。lead_lag_clauseのパラメータは次のとおりです。
-
HIERARCHYhierarchy_refでは、分析ビューで定義されている階層の別名を指定します。 -
OFFSEToffset_exprでは、数値に変換するcalc_meas_expressionを指定します。数値は、現在のメンバーから前後に何メンバー分移動するかを指定します。レベル内のメンバーの順序は、階層で使用する属性ディメンションの定義によって決まります。 -
WITHINLEVELでは、現在のメンバーと深さのレベルが同じメンバー内で、メンバーのオフセット数に従って前後に移動して、関連するメンバーを検索することを指定します。レベル内のメンバーの順序は、階層で使用する属性ディメンションの定義によって決まります。WITHINLEVELキーワードとACROSSANCESTORATLEVELキーワードのどちらも指定されていない場合は、WITHINLEVEL操作がデフォルトとなります。 -
WITHINPARENTでは、現在のメンバーと親が同じメンバー内で、メンバーのオフセット数に従って前後に移動して、関連するメンバーを検索することを指定します。 -
ACROSSANCESTORATLEVELlevel_refでは、level_refで指定されたレベルの現在のメンバーの祖先(または祖先が存在しない場合はメンバー自体)までナビゲートして関連するメンバーを検索することを指定し、かつ、その親内の各祖先メンバー(メンバー自体を含む)の位置を示します。level_refパラメータは、指定された階層のレベルの名前です。祖先メンバーが見つかると、ナビゲーションは、祖先メンバーと深さが同じメンバー内で、メンバーのオフセット数だけ前後に移動します。関連する祖先が見つかった後、ナビゲーションはそのメンバーから階層を逆方向に進み、上に向かって記録された(逆順)親内の位置を照合します。親内での位置は、
POSITIONFROMBEGINNINGとPOSITIONFROMENDのいずれが指定されているかに従い、最初の子または最後の子からオフセットされます。デフォルト値はPOSITIONFROMBEGINNINGです。レベル内のメンバーの順序は、階層で使用する属性ディメンションの定義によって決まります。
av_window_expression
av_window_expressionは、現在のメンバーから開始して、現在のメンバーと同じ深さにある、指定された範囲内のメンバーのセットを選択します。WITHIN句を使用して階層関係を指定することによって、このメンバーの選択をさらに制限できます。その後、選択したメジャー値で集計が実行され、式に対する1つの結果が生成されます。
av_window_expressionのパラメータは次のとおりです。
-
aggregate_functionは、COLLECT、GROUP_ID、GROUPING、GROUPING_ID、SYS_XMLAGG、XMLAGGおよびすべての複数引数ファンクションを除く、任意の既存のSQL集計ファンクションです。ユーザー定義集計ファンクションも使用できます。集計ファンクションの引数はcalc_meas_expression式です。これらの式は、外部コンテキストを使用して評価され、指定された階層のメンバーは、関連する範囲の各メンバーに変更されます。このため、それぞれの式引数は関連するメンバーごとに1回評価されます。その後、結果が、aggregate_functionを使用して集計されます。 -
OVER(av_window_clause)は、使用する階層および考慮するウィンドウの境界を指定します。
関連項目:
av_window_clause
av_window_clauseパラメータは、現在のメンバーに関連するメンバーの範囲を選択します。この範囲は、preceding_boundaryパラメータまたはfollowing_boundaryパラメータで指定されたメンバーの間になります。範囲は、常に、現在のメンバーと同じレベルのメンバーに対して計算されます。
IN member_setを使用して、ウィンドウ式のウィンドウとして使用する任意のメンバー・セットを指定します。
av_window_clauseのパラメータは次のとおりです。
-
HIERARCHYhierarchy_refでは、分析ビューで定義されている階層の別名を指定します。 -
BETWEENpreceding_boundaryまたはfollowing_boundaryでは、現在のメンバーに関連する一連のメンバーを定義します。 -
WITHINLEVELでは、現在のレベルのすべてのメンバーにboundary句を適用することによって、関連するメンバーを選択します。これは、WITHINキーワードが指定されていない場合にデフォルトとなります。 -
WITHINPARENTでは、現在のメンバーと親を共有するすべてのメンバーにboundary句を適用することによって、関連するメンバーを選択します。 -
WITHINANCESTORATLEVELでは、現在のメンバーと指定されたレベルの祖先を共有する(またはメンバー自体である)現在の深さのすべてのメンバーにboundary句を適用することによって、関連するメンバーを選択します。現在のメンバーが指定されたレベルよりも上にある場合、ウィンドウ式の値はNULLとなります。指定された階層に、このレベルがない場合は、エラーが発生します。
preceding_boundary
preceding_boundaryパラメータではメンバーの範囲を定義し、その先頭は、現在のメンバーのレベルで、指定された数だけ戻ったメンバーとなり、末尾は指定された境界の端となります。次のパラメータでは、範囲を指定します。
-
UNBOUNDEDPRECEDINGを指定すると、レベルの最初のメンバーが範囲の先頭になります。 -
offset_exprPRECEDINGを指定すると、現在のメンバーからoffset_exprの数だけ戻ったメンバーが範囲の先頭になります。offset_expr式は、数値に変換するcalc_meas_expressionです。オフセット数が、そのレベルの現在のメンバーから最初のメンバーまでのメンバーの数より大きい場合、最初のメンバーが範囲の開始点として使用されます。 -
CURRENTMEMBERを指定すると、現在のメンバーが範囲の末尾となります。 -
offset_exprPRECEDINGを指定すると、現在のメンバーからoffset_exprだけ戻ったメンバーが範囲の末尾になります。 -
offset_exprFOLLOWINGを指定すると、現在のメンバーからoffset_expr分だけ進んだメンバーが範囲の末尾になります。 -
UNBOUNDEDFOLLOWINGを指定すると、そのレベルの最後のメンバーが範囲の末尾になります。
following_boundary
following_boundaryパラメータではメンバーの範囲を定義し、その先頭は、現在のメンバーから指定された数だけ進んだメンバーになり、末尾は、指定した範囲の終わりになります。次のパラメータでは、範囲を指定します。
-
CURRENTMEMBERを指定すると、現在のメンバーが範囲の先頭になります。 -
offset_exprFOLLOWINGを指定すると、現在のメンバーからoffset_exprだけ進んだメンバーが範囲の先頭になります。 -
offset_exprFOLLOWINGを指定すると、現在のメンバーからoffset_expr分だけ進んだメンバーが範囲の末尾になります。 -
UNBOUNDEDFOLLOWINGを指定すると、そのレベルの最後のメンバーが範囲の末尾になります。
hierarchy_ref
分析ビューの階層への参照。hier_aliasパラメータでは、分析ビューの定義に階層の別名を指定します。特殊文字のエスケープまたはケースの保持、あるいはその両方を行うには、二重引用符を使用します。
オプションのattr_dim_aliasパラメータでは、分析ビューの定義に属性ディメンションの別名を指定します。指定された階層の別名が分析ビューの別の階層の別名と競合する場合、または分析ビューの定義で属性ディメンションが複数回使用されている場合は、attr_dim_aliasパラメータを使用して、あいまいさを解決できます。attr_dim_aliasパラメータは、名前の競合が存在しない場合も使用できます。
rank_expression
階層のランク計算では、指定されたメジャー値の順序に基づいて、指定された階層の関連メンバーがランク付けされ、その結果内で現在のメンバーのランクが戻されます。
階層のランク計算では、指定された階層内の一連の関連メンバーが検索され、指定されたメジャー値の順序に基づいてすべての関連メンバーがランク付けされ、その結果内で現在のメンバーのランクが戻されます。関連メンバーは、現在のメンバーと同じレベルのメンバーのセットです。オプションで階層関係によってセットを制限できますが、セットには必ず現在のメンバーが含まれます。メジャー値の順序付けはrank_clauseのcalc_meas_order_by_clauseによって決定されます。
rank_function_name
各階層ランク付けファンクションにより、calc_meas_order_by_clauseに基づき、1から始まる順序番号が各関連メンバーに割り当てられます。同じメジャー値の処理方法はファクションによって異なります。
各種ファンクションとそれぞれの相違点は次のとおりです。
-
RANKは、同じメジャー値に同じランクを割り当てます。一連の結合された値の後のランクは、結合された値と結合された順序値を加算した数値です。そのため、順序付けは連続した番号にならないことがあります。 -
DENSE_RANKは、同じメジャー値に同じ最小ランクを割り当てます。一連の結合された値の後のランクは、必ず結合された値に1を加算した数値になります。そのため、順序付けは必ず連続した番号になります。 -
AVERAGE_RANK,では、同じ値には同じ平均ランクが割り当てられます。平均ランク値の後の次の値は、同じ値に1を加算して、その合計を2で除算し、平均ランク値を加算した数値です。たとえば、4、5、10、5、7という5つの一連の値の場合、AVERAGE_RANKは1、1.5、1.5、3、4を戻します。2、12、10、12、17、12という一連の値の場合は、戻されるランクは1、2、3、3、3、5です。 -
ROW_NUMBERは、階層メンバー間で連続した一意の値を割り当てます。calc_meas_order_by_clauseの結果が等しい値になる場合、その結果は非決定的になります。
rank_clause
rank_clauseでは、現在のメンバーに関連する階層メンバーの範囲を特定します。範囲は、現在のメンバーと同じレベルにあるメンバーのサブセットです。サブセットはWITHIN句から決定されます。
WITHIN句の有効な値は次のとおりです。
-
WITHIN LEVELは、関連メンバーが現在のレベルのすべてのメンバーであることを指定します。これは、WITHINキーワードが指定されない場合のデフォルトのサブセットです。 -
WITHIN PARENTは、すべての関連メンバーが現在のメンバーと親を共有することを指定します。 -
WITHIN ANCESTOR AT LEVELは、関連メンバーが、指定されたレベルで祖先(または自体)を現在のメンバーと共有する現在のレベルのすべてのメンバーであることを指定します。
share_of_expression
share_of_expression式では、現在のコンテキストの式の値と、関連するコンテキストの式の値の比率を計算します。この式は、現在のコンテキストおよび関連するコンテキストで評価されるcalc_meas_expressionです。share_clauseの指定により、使用する関連するコンテキストが決まります。
share_clause
share_clauseでは、指定された階層のメンバーを関連するメンバーに設定することによって、外部コンテキストを変更します。
share句のパラメータは次のとおりです。
-
HIERARCHYhierarchy_refでは、share_of_expression計算の外部コンテキストである階層の名前を指定します。 -
PARENTでは、関連するメンバーが現在のメンバーの親であることを指定します。 -
LEVELlevel_refでは、関連するメンバーが、階層の指定されたレベルの現在のメンバーの祖先(またはメンバー自体)であることを指定します。現在のメンバーが、指定されたレベルよりも上にある場合は、share式に対してNULLが戻されます。階層に、このレベルがない場合は、エラーが発生します。 -
MEMBERmember_expressionでは、関連するメンバーが、現在のコンテキストでmember_expressionを評価した後に戻されるメンバーであることを指定します。指定されたメンバーの値がNULLの場合、share式に対してNULLが戻されます。
member_expression
メンバー式member_expressionは、階層内の1つのメンバーを返す式です。メンバー・セットには複数のメンバー(重複を含む)が含まれており、空の場合もあります。複数メンバー式は、メンバー・セットを返す式です。
階層は、外部式(構文によって適用)から決定できます。
member_expressionは、次のいずれかになります。
-
level_member_literal式は、特定のレベルに含まれる特定のメンバーを指定します。メンバーは、キー値を指定することによって識別されます。 -
hier_navigation_exprは、階層のあるメンバーを別のメンバーに関連付ける式です。 -
CURRENTMEMBERは、関数が、ネスト時に最も内側の関数で使用される、階層の現在のメンバー(通常は関数の開始点)に対して操作する必要があることを示します。たとえば、HIER_PARENT(HIER_PARENT(CURRENT MEMBER))は、現在のメンバーの祖父母を返します。たとえば、階層ウィンドウ式内で使用する場合、現在のメンバーはウィンドウが現在動作しているメンバーになります。現在のメンバーは、一部のメンバー・セット・ファンクションおよび
QUALIFYでも指定できます。 -
NULLキーワードは、空のメンバーと呼ばれる、階層内にないメンバーのプレースホルダです。これは明示的に指定できますが、ファンクションの結果にもなります。たとえば、階層のALLメンバーのHIER_PARENTは空のメンバーになります。空のメンバーは、SKIP WHEN NULLレベルの真の階層メンバーであるNULLメンバーと混同しないでください。 -
ALLキーワードは、ALLメンバー(階層の他のすべてのメンバーの最上位の祖先)を指定します。すべての階層には、暗黙的なALLレベル内に暗黙的なALLメンバーが含まれます。
level_member_literal
レベル・メンバー式は、特定のレベルに含まれる特定のメンバーを指定します。メンバーは、キー値を指定することによって識別されます。属性名が指定されていない場合は、主キー属性とみなされます。通常、1つの属性のみに資格が必要です。
複数列キーまたはSKIP WHEN NULLレベルのレベルの場合は、メンバーを一意に識別するために複数の属性を修飾する必要があります。キー属性が指定されている場合、順序付けは重要ではありません。指定しない場合、順序付けは、xxx_HIER_LEVEL_ID_ATTRSデータ・ディクショナリ・ビューで定義されている順序とみなされます。
pos_member_keys
member_key_expr式は、メンバーのキー値に解決されます。位置で指定する場合、キーのすべてのコンポーネントは、ALL_HIER_LEVEL_ID_ATTRSディクショナリ・ビュー内の順序で指定する必要があります。指定されたレベルが子レベルによって決定されない階層では、そのようなすべての子レベルのすべてのメンバー・キー値を、現在のレベルのメンバー・キーより前に指定する必要があります。重複するキー・コンポーネントは、初めて出現したときにのみ指定されます。
主キーは、level_member_literalがpos_member_keys句で指定された場合に使用されます。代替キーを参照するには、named_member_keys句を使用します。
named_member_keys
member_key_expr式は、メンバーのキー値に解決されます。attr_nameパラメータは、属性名の識別子です。すべての属性名が、指定されたレベルのキーまたは代替キーを構成していない場合は、エラーが発生します。
名前で指定する場合、キーのすべてのコンポーネントを指定し、すべてで属性の名前 = 値書式を任意の順序で使用する必要があります。指定されたレベルが子レベルによって決定されない階層では、そのようなすべての子レベルのすべてのメンバー・キー値を指定し、指定された書式も使用する必要があります。重複するキー・コンポーネントは、1回のみ指定されます。
hier_navigation_expression
hier_navigation_expression式は、指定されたメンバーから階層の別のメンバーにナビゲートします。
hier_ancestor_expression
指定されたレベルで、指定されたメンバーの祖先を戻します。レベルは、名前または深さで指定できます。メンバーに指定したレベルの祖先がない場合、空のメンバーが返されます。
深さは、数値に変換する必要がある式として指定されます。メンバーが、指定されたメンバーより上のレベルまたは深さの場合、またはメンバーがNULLの場合、式の値に対してNULLが戻されます。コンテキストの階層に、指定されたレベルがない場合は、エラーが発生します。
hier_parent_expression
指定されたメンバーの親、または親(ALLメンバー)がない場合は空のメンバーを戻します。
hier_first_expression
指定されたメンバー・セット内の最初の要素を返します。メンバー・セットが空の場合、空のメンバーが返されます。
hier_last_expression
指定されたメンバー・セット内の最後の要素を返します。メンバー・セットが空の場合、空のメンバーが返されます。
hier_member_at_expression
位置を表す指定された式で識別される位置にある、指定されたメンバー・セット内のメンバーを返します。位置は1ベースです。指定した位置がメンバー・セット内の要素数より大きい場合、空のメンバーが返されます。式は数値型に強制可能でなければならず、最も近い整数に丸められます。式が1未満の整数に解決されると、空のメンバーが返されます。
hier_lead_lag_expression
コンテキスト階層内で、一定のメンバーの数だけ前後に移動して、指定されたメンバーから関連するメンバーにナビゲートします。HIER_LEADキーワードを指定すると、後続のメンバーが戻されます。HIER_LAGキーワードを指定すると、先行するメンバーが戻されます。
hier_lead_lag_clause
指定されたメンバーからoffset_exprの数だけ前後にあるメンバーを対象にナビゲートします。レベル内のメンバーの順序は、属性ディメンションの定義で指定されます。
hier_lead_lag_clauseのオプションのパラメータは次のとおりです。
-
WITHINLEVELでは、現在のメンバーと深さが同じメンバー内で、offset_exprメンバー分だけ前後に移動して、関連するメンバーが検索されます。レベル内のメンバーの順序は、属性ディメンションの定義によって決まります。WITHINキーワードとACROSSキーワードのどちらも使用されていない場合は、WITHINLEVEL操作がデフォルトとなります。 -
WITHINPARENTでは、現在のメンバーと深さが同じメンバー内で、offset_exprメンバー分だけ前後に移動して、関連するメンバーが検索されますが、現在のメンバーと親を共有するメンバーのみが考慮されます。レベル内のメンバーの順序は、属性ディメンションの定義によって決まります。 -
WITHINACROSSANCESTORATLEVELは、指定されたレベルの現在のメンバーの祖先(またはメンバー自体)までナビゲートして関連するメンバーを検索し、その親内の各祖先メンバー(メンバー自体を含む)の位置を示します。祖先メンバーが見つかると、祖先メンバーと深さが同じメンバー内で、offset_exprメンバー分前後にナビゲーションが移動します。関連する祖先が見つかった後、ナビゲーションはそのメンバーから階層を逆方向に移動し、上に向かって記録された(逆順)親内の位置を照合します。親内での位置は、
POSITIONFROMBEGINNINGとPOSITIONFROMENDのいずれが指定されているかに従い、最初の子または最後の子からオフセットされます。デフォルトは、POSITIONFROMBEGINNINGです。レベル内のメンバーの順序は、属性ディメンションの定義によって決まります。
qdr_expression
qdr_expressionは、新しいコンテキストで指定されたcalc_meas_expressionを評価し、階層メンバーを新しい値に設定する修飾データ参照です。
qualifier
修飾子は、指定された階層のメンバーを、member_expressionの評価の結果のメンバーに設定して、外部コンテキストを変更します。member_expressionがNULLの場合、qdr_expressionの選択の結果はNULLです。
av_hier_expression
av_hier_expressionでは、関連メンバーの属性値を特定するために階層ナビゲーションを実行します。av_hier_expressionは最上位の式にすることができますが、hier_navigation_expressionはmember_expression引数としてのみ使用できます。
たとえば次の問合せでは、HIER_MEMBER__NAMEはav_hier_expression、HIER_PARENTはhier_navigation_expressionです。
HIER_MEMBER_NAME(HIER_PARENT(CURRENT MEMBER) WITHIN HIERARCHY product_hier))
hier_function_name
hier_function_name値は次のとおりです。
-
HIER_CAPTIONは、階層内の関連メンバーのキャプションを戻します。 -
HIER_DEPTHは、階層内の関連メンバーとすべてのメンバーの間にある祖先の数から1を引いた数を戻します。すべてのメンバーの深さは、0です。 -
HIER_DESCRIPTIONは、階層内の関連メンバーの説明を戻します。 -
HIER_LEVELは、階層で関連メンバーが属するレベルの名前を文字列値として戻します。 -
HIER_MEMBER_NAMEは、階層内の関連メンバーのメンバー名を戻します。 -
HIER_MEMBER_UNIQUE_NAMEは、階層内の関連メンバーの一意のメンバー名を戻します。
member_set
メンバー・セットの主な目的は、メンバー・セットを階層ファンクション内で使用できるようにすることです。メンバー・セットは、ファンクションを設定するメンバーまたはファンクションを設定するセットの結果です。
member_to_set_func
ファンクションを設定するすべてのメンバーは、入力としてメンバー式を取得し、階層順序でメンバー・セットを生成します。self_clauseを持つバリアントは、指定されたメンバー式自体に指定されたメンバーを結果のメンバー・セットに含めるかどうかを指定できます。デフォルトでは、除外されます。指定されたメンバーが空のメンバーである場合、INCLUDE SELFが指定されていても、すべてのファンクションは空のセットを返します。
hier_ancestors
指定されたメンバーのすべての祖先(オプションでメンバー自体を含む)で構成されるメンバー・セットを返します。メンバーに祖先(つまり、ALLメンバー)がなく、自己が除外されている場合、空のセットが返されます。
hier_descendants
指定されたメンバーのすべての子孫(オプションでメンバー自体を含む)で構成されるメンバー・セットを返します。AT句が指定されている場合、一連の子孫は、指定されたレベルまたは深さのメンバーのみを含むようにフィルタされます。メンバーに子孫(リーフ)がなく、オプションで指定されたレベルにフィルタされ、自己が除外される場合、空のセットが返されます。
hier_siblings
指定されたメンバーのすべての兄弟(オプションでメンバー自体を含む)で構成されるメンバー・セットを返します。兄弟は、親が指定されたメンバーの親と等しいメンバーとして定義されます。メンバーに兄弟がなく、自己が除外されている場合は、空のセットが返されます。
hier_children
指定したメンバーのすべての子で構成されるメンバー・セットを返します。メンバーに子がない場合は、空のセットが返されます。
hier_level_members
WITHIN句で定義された共通の祖先を持つ、指定されたメンバーと同じレベルのメンバーで構成されるメンバー・セットを返します。この機能は常に自己を含みます。WITHIN PARENTは、指定されたメンバーの親の子であるすべてのメンバーを返します。WITHIN ANCESTOR ATは、指定されたレベルで同じ祖先を持つ、指定されたメンバーと同じレベルのすべてのメンバーを返します。WITHIN LEVELは、指定されたメンバーと同じレベルのすべてのメンバーを戻します。WITHIN句を省略した場合、デフォルトはWITHIN LEVELです。
hier_member_set
指定された順序で、明示的に指定されたメンバーで構成されるメンバー・セットを返します。このファンクションは、実際にはナビゲーションを実行するのではなく、特定の多数のメンバーからセットを作成するため、独自のカテゴリにあります。重複したメンバーが許可されます。メンバー・セットには空のメンバーは含まれないため、指定されたセット内の空のメンバーは無視されます。
set_to_set_func
このセクションのファンクションは、すべてメンバー・セットで動作します。標準的な集合演算とさらに階層的なナビゲーションを実行します。
hier_union
最初のセットのすべての個別メンバーと、最初のセットに含まれない2番目のセットのすべてのメンバーを取得して、指定された2つのセット内のメンバーの個別結合を返します。
hier_union_all
最初のセットのすべてのメンバーを返し、その後に2番目のセットのすべてのメンバーを返し、重複を保持します。
hier_intersect
2番目のセットにも表示される最初のセットから、すべての個別のメンバーを順番に返します。
hier_minus
2番目のセットに表示されない最初のセットから、すべての個別メンバーを順番に返します。
hier_distinct
指定されたセットから順番に個別のメンバーを返します。
hier_range
指定された範囲内のセットから順番にメンバーを返します。いずれの場合でも、numberは数値に対して強制可能な式です。PERCENTを指定しない場合、式は正の整数に評価される必要があります。FIRSTは、セット内の最初のNメンバーを返します。Nがセット内の要素数より大きい場合、すべての要素が返されます。LASTは、セット内の最後のNメンバーを返します。Nがセット内の要素数より大きい場合、すべての要素が返されます。BETWEENは、セット内の位置が>=開始位置、<=指定された終了位置であるすべての要素を返します。位置は1ベースです。PERCENTキーワードを指定した場合、number引数はすべてパーセンテージを表し、0から100までの数値に評価される必要があります。
hier_window
指定されたメンバーに対して相対的に指定された境界内にある、指定されたセットから順番にすべてのメンバーを返します。指定されたメンバーが指定されたセット内にない場合、空のセットが返されます。
hier_expand
指定されたセット内のメンバーごとに、指定されたメンバーをセット・ファンクションに適用します。ファンクションを設定するためのメンバー内のCURRENT MEMBERへの参照は、そのファンクションが適用されるセット内の現在のメンバーを参照します。メンバーに対して生成されるメンバー・セットは、HIER_UNION_ALLのセマンティクス(重複の保持)を使用して結合されます。
hier_cond
IN member_setを使用して、比較に使用する任意のメンバー・セットを指定します。
hier_position
指定されたメンバー・セットでmbr_exprによって識別されるメンバーの最初の出現箇所の数値1ベースの位置を返します。CURRENT MEMBERへの参照は、適用されているセット内の現在のメンバーを参照します。メンバーがセットに含まれていない場合は、NULLが返されます。これは、設定した順序に基づいて問合せの出力を順序付けする場合に便利です。
hier_count
メンバー・セット内のメンバーの数を返します。DISTINCTキーワードが含まれている場合、メンバー・セット内の個別メンバーの数を返します。
分析ビュー式の例
このトピックには、分析ビューのMEASURES句、およびSELECT文のADD MEASURES句で定義された計算済メジャーを示す例が記載されています。
次の例があります。
その他の例は、SQL LiveのWebサイト(https://livesql.oracle.com/apex/livesql/file/index.html)にある分析ビューのチュートリアルを参照してください。
LAG式の例
これらの計算済メジャーは、LAG操作とは異なります。
-- These calculated measures are from the measures_clause of the
-- sales_av analytic view.
MEASURES
(sales FACT sales, -- A base measure
units FACT units, -- A base measure
sales_prior_period AS -- Calculated measures
(LAG(sales) OVER (HIERARCHY time_hier OFFSET 1)),
sales_year_ago AS
(LAG(sales) OVER (HIERARCHY time_hier OFFSET 1
ACROSS ANCESTOR AT LEVEL year)),
chg_sales_year_ago AS
(LAG_DIFF(sales) OVER (HIERARCHY time_hier OFFSET 1
ACROSS ANCESTOR AT LEVEL year)),
pct_chg_sales_year_ago AS
(LAG_DIFF_PERCENT(sales) OVER (HIERARCHY time_hier OFFSET 1
ACROSS ANCESTOR AT LEVEL year)),
sales_qtr_ago AS
(LAG(sales) OVER (HIERARCHY time_hier OFFSET 1
ACROSS ANCESTOR AT LEVEL quarter)),
chg_sales_qtr_ago AS
(LAG_DIFF(sales) OVER (HIERARCHY time_hier OFFSET 1
ACROSS ANCESTOR AT LEVEL quarter)),
pct_chg_sales_qtr_ago AS
(LAG_DIFF_PERCENT(sales) OVER (HIERARCHY time_hier OFFSET 1
ACROSS ANCESTOR AT LEVEL quarter))
)ウィンドウ式の例
この計算済メジャーは、ウィンドウ操作を使用します。
MEASURES
(sales FACT sales,
units FACT units,
sales_qtd AS
(SUM(sales) OVER (HIERARCHY time_hier
BETWEEN UNBOUNDED PRECEDING AND CURRENT MEMBER
WITHIN ANCESTOR AT LEVEL QUARTER)),
sales_ytd AS
(SUM(sales) OVER (HIERARCHY time_hier
BETWEEN UNBOUNDED PRECEDING AND CURRENT MEMBER
WITHIN ANCESTOR AT LEVEL YEAR))
)SHARE OF式の例
これらの計算済メジャーは、SHARE OF式を使用します。
MEASURES
(sales FACT sales,
units FACT units,
sales_shr_parent_prod AS
(SHARE_OF(sales HIERARCHY product_hier PARENT)),
sales_shr_parent_geog AS
(SHARE_OF(sales HIERARCHY geography_hier PARENT)),
sales_shr_region AS
(SHARE_OF(sales HIERARCHY geography_hier LEVEL REGION))
)QDR式の例
これらの計算済メジャーは、QUALIFYキーワードを使用して、修飾データ参照式を指定します。
MEASURES
(sales FACT sales,
units FACT units,
sales_2011 AS
(QUALIFY (sales, time_hier = year['11'])),
sales_pct_chg_2011 AS
((sales - (QUALIFY (sales, time_hier = year['11']))) /
(QUALIFY (sales, time_hier = year['11'])))
)RANKファンクションを使用して追加されたメジャーの例
この例では、units_geog_rank_levelメジャーにRANKファンクションを使用して、レベル内の地理階層メンバーを単位に基づいてランク付けします。
SELECT geography_hier.member_name AS "Region",
units AS "Units",
units_geog_rank_level AS "Rank"
FROM ANALYTIC VIEW (
USING sales_av HIERARCHIES (geography_hier)
ADD MEASURES (
units_geog_rank_level AS (
RANK() OVER (
HIERARCHY geography_hier
ORDER BY units desc nulls last
WITHIN LEVEL))
)
)
WHERE geography_hier.level_name IN ('REGION')
ORDER BY units_geog_rank_level;問合せの結果は次のとおりです。
Regions Units Rank
------------- --------- ----
Asia 56017849 1
South America 23904155 2
North America 20523698 3
Africa 12608308 4
Europe 8666520 5
Oceania 427664 6



















































