5 Sourceオブジェクトの理解
この章では、問合せの指定に使用するSource
オブジェクトについて説明します。 Source
では、データ・ストアから取得するデータ、およびデータに対して実行するアナリティクまたはその他の操作を指定します。 「Sourceメソッドを使用した問合せの作成」は、Source
オブジェクトの使用例を示しています。 「動的問合せの作成」では、Template
オブジェクトを使用して変更可能な問合せを作成する方法について説明します。
この章では、次の項目について説明します。
5.1 Sourceオブジェクトの概要
Source
オブジェクトを使用して、データベースから取得するデータを指定する問合せを作成します。 問合せとして、Source
はSQLのSELECT
文に似ています。
問合せを作成するには、通常、oracle.olapi.metadata.mdm
パッケージのクラスを使用して、OLAPメタデータ・オブジェクトを表すMdmSource
オブジェクトを取得します。 MdmSource
オブジェクトから、Source
オブジェクトを取得できます。 DataProvider
のメソッドを使用して、他の種類のSource
オブジェクトを作成することもできます。 その後、これらのSource
オブジェクトを使用して問合せを作成できます。 問合せで指定されたデータを取得するには、Source
のCursor
を作成します。
Source
のメソッドを使用すると、ディメンション・メンバー、属性値またはメジャー値の選択を指定できます。 問合せの要素の数学的計算、比較、順序付け、追加または削除など、Source
の要素に対する操作を指定することもできます。
Source
クラスには、いくつかの基本メソッドと、1つ以上の基本メソッドを使用する多くのショートカット・メソッドがあります。 最も複雑な基本メソッドは、join(Source joined, Source comparison, int comparisonRule, boolean visible)
メソッドとrecursiveJoin(Source joined, Source compariso4n, Source parent, int comparisonRule, boolean parentsFirst, boolean parentsRestrictedToBase, int maxIterations, boolean visible)
メソッドです。 join
メソッドとrecursiveJoin
メソッドのその他の多くのシグネチャは、基本メソッドの特定の操作のためのショートカットです。
この章では、join
メソッドに関する情報は、特に記載がないかぎり、recursiveJoin
メソッドにも同様に適用されます。 join
メソッドを使用すると、Source
と、その入力と一致するSource
への入力を結合することで、あるSource
の要素を別のSource
の要素に関連付けることができます。 たとえば、ディメンションを入力として持つメジャーのデータを取得するために必要なディメンション・メンバーを指定するには、join
メソッドを使用してディメンション・メンバーをメジャーに関連付けます。 join
メソッドおよびSource
の入力については、「ソースの入力と出力」を参照してください。
Source
には、型やデータ型などの特定の特性があり、1つ以上の入力または出力を持つことができます。 この章ではこれらの概念について説明します。 また、様々な種類のSource
オブジェクトとその取得方法、join
メソッドおよびその他のSource
メソッド、およびこれらのメソッドを使用して問合せを指定する方法についても説明します。
親トピック: Sourceオブジェクトの理解
5.2 Sourceオブジェクトの種類
データの指定および分析の実行に使用するSource
オブジェクトの種類と、それらの取得方法は次のとおりです:
-
プライマリ
Source
オブジェクト。MdmDimension
やMdmDimensionedObject
などのMdmSource
オブジェクトのgetSource
メソッドによって返されます。 プライマリSource
は、MdmSource
が表すデータへのアクセスを提供します。 通常、プライマリSource
オブジェクトの取得は、問合せの作成の最初のステップです。 次に、通常、プライマリSource
オブジェクトから要素を選択して、導出されたSource
オブジェクトを生成します。 -
導出された
Source
オブジェクト。これは、Source
オブジェクトのメソッドの一部をコールして取得します。join
などのメソッドは、メソッドをコールするSource
から導出された新しいSource
を返します。MdmDimension
のプライマリSource
で指定された単純な値リスト以外、データ・ストアに対するすべての問合せは、Source
オブジェクトを導出します。 -
基本的な
Source
オブジェクト。FundamentalMetadataObject
のgetSource
メソッドによって返されます。 これらのSource
オブジェクトは、OLAP Java APIデータ型を表します。 -
DataProvider
のcreateConstantSource
、createListSource
またはcreateRangeSource
メソッドによって返されるSource
オブジェクトのリストまたは範囲。 通常、この種類のSource
をjoin
メソッドのjoined
またはcomparison
パラメータとして使用します。 -
Source
オブジェクトを空、nullまたは無効化します。 空および無効のSource
オブジェクトは、DataProvider
のgetEmptySource
またはgetVoidSource
メソッドによって返され、NULLのSource
オブジェクトは、Source
のnullSource
メソッドによって返されます。 空のSource
には要素がありません。 voidSource
およびnullSource
には、それぞれnull
の値を持つ1つの要素があります。 voidSource
とnullSource
の違いは、voidSource
の型がValueデータ型のFundamentalMetadataObject
で、nullSource
の型がSource
で、nullSource
メソッドがそれを返したことです。 通常、join
メソッドのjoined
またはcomparison
パラメータとして、これらの種類のSource
オブジェクトを使用します。 -
動的
Source
オブジェクト。DynamicDefinition
のgetSource
メソッドによって返されます。 動的Source
は通常、導出されたSource
です。 これは、Template
によって生成され、エンド・ユーザーとの対話後に改訂できる動的問合せの作成に使用されます。 -
パラメータ化された
Source
オブジェクト。Parameter
のcreateSource
メソッドによって返されます。 リストまたは範囲Source
と同様に、パラメータ化されたSource
をjoin
メソッドのパラメータとして使用します。 ただし、リストまたは範囲Source
とは異なり、Parameter
が表す値を結合操作後に変更して、導出されたSource
が表す選択を変更できます。 導出されたSource
のCursor
を作成し、問合せの結果を取得できます。 その後、Parameter
の値を変更でき、導出されたSource
に対して新しいCursor
を作成せずに、その同じCursor
を使用して変更した問合せの結果を取得できます。
-
BooleanSource
-
DateSource
-
NumberSource
-
StringSource
これらのサブクラスには様々なデータ型があり、これらのデータ型を必要とするSource
メソッドを実装します。 各サブクラスは、BooleanSource
のimplies
メソッドやStringSource
のindexOf
メソッドなど、それに固有のメソッドも実装します。
親トピック: Sourceオブジェクトの理解
5.3 Sourceオブジェクトの特性
Source
にはデータ型、型および識別子(ID)があり、空のSource
を除くすべてのSource
オブジェクトには1つ以上の要素があります。 次のトピックでは、これらの概念について説明します。
一部のSource
オブジェクトには、1つ以上の入力または出力があります。 これらの複雑な概念については、「ソースの入力と出力」を参照してください。
5.3.1 ソースの要素と値
空のSource
を除くすべてのSource
オブジェクトには、1つ以上の要素があります。 Source
の要素には、NULLにできる値があります。 たとえば、CHANNEL_AWJディメンションのMdmPrimaryDimension
オブジェクトのSource
には4つの要素があります。 これらの要素の値は、次に示すディメンションのメンバーの一意の値です。
CHANNEL_PRIMARY::CHANNEL::TOTAL CHANNEL_PRIMARY::CHANNEL::CAT CHANNEL_PRIMARY::CHANNEL::DIR CHANNEL_PRIMARY::CHANNEL::INT
親トピック: Sourceオブジェクトの特性
5.3.2 Sourceのデータ型
FundamentalMetadataObject
クラスは、MdmSource
の要素の値のデータ型を表します。 Source
のデータ型は、基本的なSource
で表されます。 たとえば、BooleanSource
には、Java boolean
値を持つ要素があります。 BooleanSource
のデータ型は、OLAP Java APIのブール値を表す基本的なSource
です。
Source
のデータ型を表す基本的なSource
を取得するには、Source
のgetDataType
メソッドをコールします。 FundamentalMetadataObject
のgetSource
メソッドをコールして、基本的なSource
を取得することもできます。
プライマリSource
のデータ型は、関連付けられたメタデータ・オブジェクトのSQLデータ型に関連しています。 たとえば、SQLデータ型がVARCHAR2(30)
のMdmBaseAttribute
は、OLAP Java API文字列値を表す基本的なSource
のデータ型を持つSource
を生成します。 次のコードでは、その基本的なSource
を取得します。
fmp.getStringDataType().getSource(); // fmp is the FundamentalMetadataProvider.
データ型に対するSource
の一般的な使用方法は、結合または再帰的結合操作の比較Source
です。 そのため、そのデータ型のすべての値のセットを表します。 getDataType
メソッドの使用例については、「例6-3」、「例6-5」および「例6-11」を参照してください。
親トピック: Sourceオブジェクトの特性
5.3.3 Sourceのタイプ
データ型とともに、Source
には型があり、これはSource
の要素が描画されるSource
です。 Source
のタイプによって、join
メソッドがSource
と別のSource
の入力を照合できるかどうかが決まります。 タイプを持たない唯一のSource
は、OLAP Java API値データ型の基本Source
であり、これはすべての値のセットを表し、他のすべてのSource
オブジェクトが最終的に子孫になります。 Source
のgetType
メソッドをコールすると、型を検索できます。
基本的なSource
のタイプは、Source
のデータ型です。 リストまたは範囲Source
の型は、リストまたは範囲Source
の要素の値のデータ型です。
プライマリSource
のタイプは、次のいずれかです:
-
プライマリ
Source
の要素の値のデータ型を表す基本的なSource
。 たとえば、一般的な数値MdmMeasure
のgetSource
メソッドによって返されるSource
の型は、すべてのOLAP Java API数値値のセットを表す基本的なSource
です。 -
プライマリ
Source
を含むオブジェクトのSource
。 たとえば、MdmLevelHierarchy
のgetSource
メソッドによって戻されるSource
の型は、階層を含むMdmPrimaryDimension
のSource
です。
導出されたSource
のタイプは次のいずれかです:
-
「塩基」
Source
は、メソッドが導出されたSource
を戻したSource
です。alias
,distinct
,extract
,join
,recursiveJoin
メソッド、value
メソッドまたはそれらのショートカットのいずれかによって返されるSource
は、型としてベースSource
を持ちます。 -
基本的な
Source
。position
やcount
などのメソッドによって返されるSource
の型は、OLAP Java API Integerデータ型の基本的なSource
です。 比較を行うメソッドによって戻されるSource
のタイプ(eq
、le
など)は、ブール・データ型の基本的なSource
です。NumberSource
メソッドtotal
やaverage
など、集計関数を実行するメソッドによって戻されるSource
のタイプは、関数を表す基本的なSource
です。
ベースSource
を型として持つ導出Source
は、導出元のSource
のサブタイプです。 基本的なSource
を型とする導出ソースは、基本的なSource
のサブタイプです。 isSubtypeOf
メソッドを使用して、Source
が別のSource
のサブタイプであるかどうかを判断できます。
たとえば、「例5-1」では、myList
オブジェクトはリストSource
です。 この例では、myList
を使用して、prodHier
から値(PRODUCT_AWJディメンションのMdmPrimaryDimension
のMdmLevelHierarchy
のSource
)を選択します。 この例では、dp
はDataProvider
です。
例5-1 isSubtypeOfメソッドの使用
Source myList = dp.createListSource(new String[] { "PRODUCT_PRIMARY::FAMILY::LTPC", "PRODUCT_PRIMARY::FAMILY::DTPC", "PRODUCT_PRIMARY::FAMILY::ACC", "PRODUCT_PRIMARY::FAMILY::MON"}); Source prodSel = prodHier.selectValues(myList); if (prodSel.isSubtypeOf(prodHier)) println("prodSel is a subtype of prodHier."); else println("prodSel is not a subtype of prodHier.");
prodSel
はprodHier
のサブタイプであるため、if
文の条件はtrueであり、この例では次のように表示されます:
prodSel is a subtype of prodHier.
myList
のタイプは、基本的な文字列Source
です。 prodHier
のタイプは、PRODUCT_AWJディメンションのSource
です。 prodSel
の要素はprodHier
の要素から導出されるため、prodSel
の型はprodHier
です。
Source
のスーパータイプは、基本値データ型のSource
までのSource
などの型の型です。 たとえば、基本的な値Source
は、基本的な文字列Source
のタイプです。これは、prodSel
のタイプであるprodHier
のタイプです。 基本的な値Source
と基本的な文字列Source
は、どちらもprodSel
のスーパータイプです。 prodSel
Source
は、prodHier
のサブタイプで、基本的な文字列Source
および基本的な値Source
のサブタイプです。
親トピック: Sourceオブジェクトの特性
5.3.4 SourceのSource識別子およびSourceDefinition
Source
にはIDがあります。IDは、データベースへの現在の接続中に一意に識別するString
です。 識別を取得するには、Source
のgetID
メソッドをコールします。 たとえば、次のコードは、PRODUCT_AWJディメンションのMdmPrimaryDimension
のSource
の識別を取得し、値を表示します。
println("The Source ID of prodDim is " + prodDim.getID());
このコードによって、次のように表示されます。
The Source ID of prodDim is Hidden..GLOBAL.PRODUCT_AWJ
各Source
には、Source
に関する情報を記録するSourceDefinition
オブジェクトもあります。 Oracle OLAPでは、この情報を内部的に使用します。 たとえば、導出されたSource
のSourceDefinition
には、Source
を生成した結合操作のパラメータ(ベースSource
、結合されたSource
、比較Source
、比較ルール、visible
パラメータの値など)が記録されます。
DynamicDefinition
クラスは、SourceDefinition
のサブクラスです。 OLAP Java APIクライアント・アプリケーションは、Template
のDynamicDefinition
を使用して、Template
の動的Source
を取得します。
親トピック: Sourceオブジェクトの特性
5.4 Sourceの入力と出力
Source
の入力は、Source
の要素が別のSource
の要素と関係があることを示します。 Source
の出力には、出力を含むSource
の値が導出される要素が含まれます。 1つ以上の出力を含むSource
は、配列の配列のようなものです。
Source
は入力を持つことができ、出力を持つことができます。 Source
の入力および出力は、他のSource
オブジェクトです。
ベースSource
の入力と出力は、そのベースSource
から派生したSource
の要素に影響します。 Source
を導出するには、ベースSource
のメソッドを使用します。 導出されたSource
は、メソッドのメソッドおよびパラメータに応じて、出力または入力、あるいはその両方を持つか、どちらも持たない可能性があります。
value
メソッドやposition
メソッドなどの一部のSource
メソッドは、入力を含むSource
を返します。 join
およびrecursiveJoin
メソッドは、出力を含むSource
を返すことができます。 結合操作に、入力を含むSource
と、その入力と一致するSource
が含まれる場合、入力は、導出されたSource
の要素を生成するフィルタとして機能します。
次のトピックでは、join
メソッド、出力と入力の概念、および入力の一致について説明します。 出力を含むSource
オブジェクト、入力を含むSource
オブジェクト、および入力とSource
に一致する結合操作を生成する例を示します。
5.4.1 joinメソッドの説明
join
メソッドを使用して、あるSource
の要素を別のSource
の要素と結合し、導出されたSource
を生成します。 導出されたSource
は、入力または出力を持つことができます。 導出されたSource
の要素、および入力または出力の有無は、join
メソッドに渡すパラメータの値によって異なります。
join
メソッドの完全なシグネチャは次のとおりです。
Source join(Source joined, Source comparison, int comparisonRule, boolean visible)
5.4.1.1 結合されたパラメータの説明
joined
パラメータはSource
オブジェクトです。 join
メソッドは、ベースSource
の要素と結合されたSource
の要素を、他のjoin
パラメータの値によって決定される結果と結合します。 結合されたSource
の値がベースSource
の値に関連していない場合、つまり、結合されたSource
もベースSource
ももう一方の入力と一致しない場合、結合はベースおよび結合されたSource
オブジェクトの要素のデカルト積を生成します。 「ソースの出力」のトピックの例は、この種の結合操作を示しています。
結合されたSource
の値がベースSource
の値に関連している場合、つまり、結合されたSource
またはベースSource
のいずれかが他方の入力である場合、導出されたSource
の要素は入力の一致の結果になります。 「ソースと入力の照合」の例では、このような結合操作を示します。
親トピック: joinメソッドの説明
5.4.1.2 比較パラメータの説明
comparison
パラメータは、別のSource
オブジェクトです。 結合操作では、比較Source
の要素の値と結合されたSource
の値が比較されます。 結合オブジェクトと比較オブジェクトで同じ値が結合操作に参加するか、comparisonRule
パラメータの値に応じて参加から削除されます。
親トピック: joinメソッドの説明
5.4.1.3 comparisonRuleパラメータの説明
comparisonRule
パラメータの値は、結合されたSource
のどの値が結合操作に参加するかを指定します。 comparisonRule
値によって、関連する値のソート順序も決まります。 比較ルールは、Source
クラスの静的定数フィールドの1つです。 基本的な比較ルールは次のとおりです。
-
COMPARISON_RULE_SELECT
。これは、結合されたSource
の要素(比較Source
にも含まれる)のみが結合操作に参加することを指定します。 -
COMPARISON_RULE_REMOVE
。これは、比較Source
に含まれない結合Source
の要素のみが結合操作に参加することを指定します。
その他の比較ルールはすべて、結果の値を様々な方法でソートする選択操作です。 これらの規則は次の通りです。
親トピック: joinメソッドの説明
5.4.1.4 表示可能パラメータの説明
visible
パラメータは、結合されたSource
が結合操作によって導出されたSource
の出力として表示されるかどうかを指定するboolean
値です。 visible
パラメータの値がtrue
の場合、導出されたSource
には、結合されたSource
から抽出された要素を含む出力が含まれます。 値がfalse
の場合、導出されたSource
には結合されたSource
の出力がありません。
親トピック: joinメソッドの説明
5.4.2 Sourceの出力
join
メソッドは、メソッドのパラメータで指定されたベースSource
の要素の値を持つ導出Source
を返します。 これらの値は、導出されたSource
のベース値です。
join
メソッドのvisible
パラメータの値がtrue
の場合、結合されたSource
は導出されたSource
の出力になります。 導出されたSource
の要素には、結合操作の他のパラメータで指定される出力の値とベース値が含まれます。
導出されたSource
は、ゼロから多数の出力を持つことができます。 出力であるSource
自体に出力を含めることができます。 Source
の出力を取得するには、Source
オブジェクトのList
を戻すgetOutputs
メソッドをコールします。
次のトピックの例にはすべて、1つ以上の出力を持つSource
オブジェクトを生成する単純な結合操作があります。 結合操作内のどのSource
オブジェクトにも入力がないため、結合操作によって生成される導出されたSource
オブジェクトの値は、基底のデカルト積および結合されたSource
オブジェクトです。
入力を持つSource
と、その入力と一致するSource
を含む結合操作によって、非常に異なる結果が発生します。 入力および入力の一致を含むSource
オブジェクトの例は、次のトピックを参照してください。
親トピック: ソースの入力と出力
5.4.2.1 出力を使用したソースの生成
例5-2 出力でソースを生成する単純な結合
この例では、join
メソッドの最も単純なシグネチャを使用して、1つの出力を持つSource
を生成します。 この例では、3つの要素(A、BおよびC)を持つリストSource
、letters
を作成します。 また、3つの要素(Stephen、LeoおよびMolly)を持つリストSource
、names
も作成されます。
Source letters = dp.createListSource(new String[] {"A", "B", "C"}); Source names = dp.createListSource(new String[] {"Stephen", "Leo", "Molly"}); Source lettersWithNames = letters.join(names); // Oracle OLAP translates this shortcut signature of the join method into the // following full signature, where dp is the DataProvider for the session. // Source letters.join(names, // dp.getEmptySource(), // Source.COMPARISON_RULE_REMOVE, // true);
letters.join(names)
操作は、ベースSource
、letters
および結合されたSource
、names
の要素を結合します。 比較Source
には要素がないため、結合操作では、導出されたSource
の生成時に結合されたSource
にある要素は削除されません。 (比較Source
は、例に示す完全なjoin
シグネチャのdp.getEmptySource()
パラメータによって返される空のSource
です。) 結果として導出されたSource
、lettersWithNames
は、ベースletters
および結合されたnames
の要素のデカルト積です。 letters
とnames
の両方に3つの要素があるため、lettersWithNames
の要素数は9です。
letters.join(names)
のvisible
パラメータはtrue
であるため、導出されたSource
には出力があります。 結合されたSource
からelements
が削除されなかったため、導出されたSource
には、結合されたSource
のすべての要素の値が含まれます。
Source
のCursor
の構造は、Source
と同じです。 lettersWithNames
Source
のCursor
には、導出されたSource
のベース値にValueCursor
、出力値にValueCursor
があります。 次の表に、ValueCursor
オブジェクトの値を示します。 表には、ValueCursor
オブジェクトに含まれていない見出しが含まれています。
Output Values Base Values Stephen A Stephen B Stephen C Leo A Leo B Leo C Molly A Molly B Molly C
親トピック: ソースの出力
5.4.2.2 COMPARISON_RULE_SELECTの使用
例5-3 結合されたソースの要素を選択する単純な結合
この例では、値と比較ルールCOMPARISON_RULE_SELECT
を持つ比較Source
の使用方法を示します。 この例では、「例5-2」のletter
およびnames
Source
オブジェクトを使用し、someNames
Source
を追加します。 比較Source
としてsomeNames
を使用します。 結合操作から導出されたSource
の出力には、結合されたSource
および比較Source
の両方にある名前のみが含まれます。
Source someNames = dp.createListSource(new String[] {"Stephen", "Molly"}); Source lettersAndSelectedNames = letters.join(names, someNames, Source.COMPARISON_RULE_SELECT, true);
lettersAndSelectedNames
Source
のCursor
には、Source
で指定された値があります。 次の表に、Cursor
値を示し、ヘッダーが追加されています。
Output Values Base Values Stephen A Stephen B Stephen C Molly A Molly B Molly C
親トピック: ソースの出力
5.4.2.3 COMPARISON_RULE_REMOVEの使用
例5-4 結合されたソースの要素を削除する単純な結合
この例では、値と比較ルールCOMPARISON_RULE_REMOVE
を持つ比較Source
の使用方法を示します。 この比較ルールは、結合操作への参加から、結合オブジェクトおよび比較Source
オブジェクトで同じ値を削除します。 したがって、導出されたSource
の出力には、結合されたSource
からの名前のみが含まれ、比較Source
には含まれません。
例には、「例5-3」と同じベース、結合および比較のSource
オブジェクトがあります。
Source lettersAndNamesWithoutRemovedNames = letters.join(names, someNames, Source.COMPARISON_RULE_REMOVE, true);
lettersAndNamesWithoutRemovedNames
Source
のCursor
には、Source
で指定された値があります。 次の表に、値を示し、見出しが追加されています。
Output Values Base Values Leo A Leo B Leo C
親トピック: ソースの出力
5.4.2.4 2つの出力を含むソースの生成
例5-5 2 つの出力を含むソースを生成する単純な結合
出力を含むSource
にSource
を結合し、visible
parameter
がtrue
の場合、結合操作により、結合されたSource
が追加出力としてSource
が生成されます。 この例に示すように、追加の出力が最初の出力になります。
この例では、「例5-3」のSource
オブジェクトを使用して、2つの色の名前を含む別のリストSource
、colors
を作成します。 この例では、colors
Source
をlettersWithSelectedNames
Source
に結合して、lettersWithSelectedNamesAndColors
Source
を生成します。
lettersWithSelectedNames
Source
には、出力としてnames
があります。 lettersWithSelectedNamesAndColors
Source
には、出力としてcolors
とnames
の両方があります。 最初の出力はcolors
で、2番目の出力はnames
です。
Source colors = dp.createListSource(new String[] {"Green", "Maroon"}); Source lettersWithSelectedNames = letters.join(names, someNames, Source.COMPARISON_RULE_SELECT, true); Source lettersWithSelectedNamesAndColors = lettersWithSelectedNames.join(colors);
lettersWithSelectedNamesAndColors
Source
のCursor
には、次の表に示す値があります。 表に見出しが追加されています。
Output 1 Values Output 2 Values Base Values Green Stephen A Green Stephen B Green Stephen C Green Molly A Green Molly B Green Molly C Maroon Stephen A Maroon Stephen B Maroon Stephen C Maroon Molly A Maroon Molly B Maroon Molly C
親トピック: ソースの出力
5.4.2.5 出力の非表示
例5-6 出力を非表示にする単純な結合
join
メソッドのvisible
パラメータがfalse
の場合、結合されたSource
は結合操作に参加しますが、結合によって導出されたSource
の出力としては表示されません。 この例では、joinHidden
ショートカット・メソッドを使用して、「例5-5」のlettersWithSelectedNames
オブジェクトとcolors
Source
オブジェクトを結合します。 この例では、joinHidden
ショートカットの完全なjoin
シグネチャをコメントに含めます。
Source lettersWithSelectedNamesAndHiddenColors = lettersWithSelectedNames.joinHidden(colors); // The full signature of the joinHidden shortcut method is // Source result = base.join(joined, // dp.getEmptySource(), // Source.COMPARISON_RULE_REMOVE, // false); // So if Source base = lettersWithSelectedNames and // Source joined = colors, then the result Source is the same as the // lettersWithSelectedNamesAndHiddenColors Source.
lettersWithSelectedNamesAndHiddenColors
Source
のCursor
には、次の表に示す値があります。 表に見出しが追加されています。
colors
Source
の値が出力値として表示されない場合でも、導出されたlettersWithSelectedNamesAndHiddenColors
Source
には12個の要素があります。 導出されたSource
には、非表示のcolors
Source
の値ごとに、lettersWithSelectedNames
Source
の6つの値のセットが1つあります。
この例では、次の出力が表示されます。
Output Values Base Values Stephen A Stephen B Stephen C Molly A Molly B Molly C Stephen A Stephen B Stephen C Molly A Molly B Molly C
親トピック: ソースの出力
5.4.3 Sourceの入力
「ソースの出力」トピックの例では、すべて、無関係なベースと結合されたSource
オブジェクトのデカルト積である要素を持つ導出されたSource
オブジェクトが生成されます。 このような操作は有用ですが、Source
オブジェクトのより強力な側面として、あるSource
の要素を別のSource
に関連付ける機能があります。 このような関係が存在する場合は、関連する要素間の操作の結果である他のSource
オブジェクトを導出できます。 たとえば、別のSource
の選択した要素のみを含むSource
を導出できます。 要素間のこの関係は、Source
の入力によって表されます。
入力を含むSource
は、データの不完全な指定です。 入力は、結合操作でデータ指定を完了するために必要な要素を持つことができるSource
のタイプを表します。 Cursor
を使用してデータを取得する前に、入力を、指定を完了する要素を含むSource
と照合する必要があります。
join
またはrecursiveJoin
メソッドを使用して、入力をSource
と照合します。 一致は、ベースSource
と結合されたSource
の間で発生します。
入力の一致はフィルタとして機能するため、結合操作によって導出されたSource
には、結合されたSource
の要素の要素と値が関連している基本Source
の要素のみが含まれます。 Source
と入力の照合に関連するルールについては、「ソースと入力の照合」を参照してください。 このトピックには、入力の一致の結果である、導出されたSource
オブジェクトを生成する例があります。
Source
には、0から多数の入力を指定できます。 Source
のすべての入力を取得するには、getInputs
メソッドをコールします。
一部のプライマリSource
オブジェクトには入力があります。 Source
クラスのいくつかのメソッドを使用して、入力を持つSource
を導出できます。
5.4.3.1 入力のあるプライマリSourceオブジェクト
MdmDimensionedObject
サブクラスMdmAttribute
およびMdmMeasure
のプライマリSource
オブジェクトには、入力があります。 MdmAttribute
のプライマリSource
には1つの入力があります。 MdmMeasure
のプライマリSource
には、1つ以上の入力があります。
MdmAttribute
またはMdmMeasure
の入力は、属性またはメジャーをディメンション化するMdmPrimaryDimension
オブジェクトのSource
オブジェクトです。 属性またはメジャーの値を取得するには、属性またはメジャーを、関連するディメンション・メンバーを含むSource
と結合する必要があります。 結合操作では、属性またはメジャーの入力と、ディメンション・メンバーを含むSource
が一致します。 「例5-7」は、属性の入力とその属性のディメンションと一致します。 「例5-8」は、メジャーの入力とそのメジャーのディメンションを照合します。
親トピック: ソースの入力
5.4.3.2 入力を使用したソースの導出
一部のSource
メソッドは、入力を持つSource
を常に返します。 extract
、position
またはvalue
メソッドによって返されるSource
は、入力としてベースSource
を持ちます。 これらのメソッドを使用して、別のSource
の要素から要素を導出またはフィルタするSource
を生成できます。
value
メソッドは、ベースSource
の要素を持ち、ベースSource
を入力として持つSource
を返します。 通常、value
メソッドによって戻されたSource
を、join
メソッドのベースまたは結合されたSource
として使用するか、または比較Source
として使用します。 この章および「Sourceメソッドを使用した問合せの作成」のいくつかの例では、value
メソッドを使用します。
position
メソッドは、ベースSource
の各要素の位置を持ち、ベースSource
を入力として持つSource
を返します。 position
メソッドの使用例は、「例6-4」を参照してください。
extract
メソッドは、結合するSource
オブジェクトの要素がSource
オブジェクトを値として持つ場合に使用します。 extract
メソッドの使用例は、「例5-12」、「例6-8」、「例6-13」および「例6-14」を参照してください。
親トピック: ソースの入力
5.4.3.3 入力のタイプ
position
またはvalue
メソッドによって導出されたSource
の入力、およびMdmDimensionedObject
に固有の入力は、通常の入力です。 通常の入力は、Source
の要素と、入力と一致するSource
の要素への入力を関連付けます。 getRegularInputs
メソッドをコールして、通常の入力を取得できます。
extract
メソッドによって返されるSource
の入力は、抽出入力です。 抽出入力を取得するには、getExtractionInputs
メソッドをコールします。
親トピック: ソースの入力
5.4.4 ソースと入力の照合
結合操作では、Source
と入力の照合は、ベースSource
と結合されたSource
の間でのみ行われます。 Source
は、次の条件のいずれかがtrueの場合に入力と一致します。
-
Source
は、入力と同じオブジェクトであるか、入力のサブタイプです。 -
Source
の出力は、入力と同じオブジェクトであるか、出力は入力のサブタイプです。
結合操作では、前述のリストに示した順序で条件が検索されます。 Source
の出力のリストを再帰的に検索し、出力の出力も含めて、入力と一致するものを検索します。 検索は、最初に一致するSource
で終了します。 入力と照合できるSource
は1つのみです。
入力を含むSource
が、入力と一致するSource
に結合される場合、join
メソッドによって返される導出されたSource
には、メソッドのパラメータによって指定された要素に関連する基底の要素が含まれます。 導出されたSource
には入力がありません。
Source
と入力を照合しても、ベースSource
または結合されたSource
の出力には影響しません。 ベースSource
に、結合されたSource
の入力と一致する出力がある場合、結果のSource
には入力は含まれませんが、出力は含まれます。 結合操作のベースSource
または結合されたSource
に入力が操作で一致しない場合、一致しない入力は結果のSource
の入力になります。
join
メソッドの比較Source
は、入力照合には関与しません。 比較Source
に入力がある場合、その入力は一致せず、join
メソッドによって返されるSource
は同じ入力を持ちます。
次の各項の例では、Source
と入力の照合を示します。
- 「MdmAttributeのソースの入力の一致」
- 「メジャーの入力の照合」
- 「valueメソッドを使用した入力によるソースの導出」
- 「valueメソッドを使用したソースの値の選択」
- 「Sourceオブジェクトの要素を結合するためのextractメソッドの使用」
親トピック: ソースの入力と出力
5.4.4.1 MdmAttributeのソースの入力の一致
「例5-7」は、MdmBaseAttribute
のSource
のMdmPrimaryDimension
のSource
への結合を示しています。 この例では、CHANNEL_AWJディメンションのMdmPrimaryDimension
からローカル値属性を取得します。 属性locValAttr
のSource
は、入力としてMdmPrimaryDimension
のSource
を持ちます。
この例では、locValAttr
は結合操作のベースSource
で、chanDim
は結合されたSource
です。 chanDim
はCHANNEL_AWJディメンションのMdmPrimaryDimension
のSource
のインスタンスであるため、chanDim
はlocValAttr
の入力と一致します。 結合の結果はdimMembersWithLocalValue
で、出力としてchanDim
があり、入力はありません。
locValAttr
Source
には4つの要素があります。これは、CHANNEL_AWJディメンションの4つのメンバーそれぞれが異なるローカル値を持つためです。 結合操作dimMembersWithLocalValue
によって導出されたSource
には、4つの要素があります。 各要素の値は、ディメンション・メンバーおよび関連する属性値です。 ディメンション・メンバーは出力の値で、属性値はベースの値です。
「例5-7」は、ベースSource
の入力と結合されたSource
との照合を示します。 この例では、mdmDBSchema
はGLOBALスキーマのMdmDatabaseSchema
です。
dimMembersWithLocalValue
Source
のCursor
には、次の表に示す値があります。 出力値は、結合されたSource
、chanDim
から導出された一意のディメンション・メンバー値です。 ベース値は、ベースSource
、locValAttr
から導出されます。 表に見出しが追加されています。
Output Values Base Values CHANNEL_PRIMARY::TOTAL_CHANNEL::TOTAL TOTAL CHANNEL_PRIMARY::CHANNEL::CAT CAT CHANNEL_PRIMARY::CHANNEL::DIR DIR CHANNEL_PRIMARY::CHANNEL::INT INT
例5-7 ディメンション・メンバーの属性の取得
MdmStandardDimension mdmChanDim = mdmDBSchema.findOrCreateStandardDimension("CHANNEL_AWJ"); Source chanDim = mdmChanDim.getSource(); Source locValAttr = mdmChanDim.getLocalValueAttribute().getSource(); Source dimMembersWithLocalValue = locValAttr.join(chanDim);
親トピック: ソースと入力の照合
5.4.4.2 メジャーの入力の照合
「例5-8」は、メジャーからの値の取得を示します。 この例では、UNIT_PRICEメジャーを含むMdmCube
を取得し、そのキューブからメジャーのMdmBaseMeasure
を取得します。 このキューブおよびキューブのメジャーは、PRODUCT_AWJディメンションおよびTIME_AWJディメンションによってディメンション化されます。 この例では、これらのディメンションのMdmPrimaryDimension
オブジェクトを取得し、それらのメタデータ・オブジェクトのSource
オブジェクトを取得します。
メジャーunitPrice
のSource
は、2つのMdmPrimaryDimension
オブジェクトのSource
オブジェクトを入力として持ちます。 この例では、メジャーのSource
をディメンションのSource
オブジェクトと結合します。 結合操作は、メジャーの入力とディメンションのSource
オブジェクトを照合します。
この例では、最初にPRODUCT_AWJディメンションのSource
をメジャーのSource
に結合します。 そのunitPrice.join(prodDim)
操作は、unitPrice
からベース値を持ち、出力としてprodDim
を持つSource
を導出します。 また、入力としてTIME_AWJディメンションのSource
もあります。 次の結合操作は、unitPrice.join(prodDim)
によって導出されたSource
を、TIME_AWJディメンションのSource
であるtimeDim
と結合します。 その結合操作は、unitPrice.join(prodDim)
によって導出されたSource
の入力とtimeDim
と一致します。
2番目の結合操作によって導出されるSource
は、pricesByProductAndTime
です。 Source
には入力がなく、PRODUCT_AWJおよびTIME_AWJディメンションのSource
オブジェクトが出力として含まれます。 pricesByProductAndTime
のCursor
には、各製品の値ごとの価格が含まれます。
この例では、最後にpricesByProductAndTime
のcount
メソッドをコールします。 このメソッドは、pricesByProductAndTime
Source
の要素数を含むNumberSource
numPricesByProductAndTime
を返します。 numPricesByProductAndTime
Source
のCursor
には、製品およびタイム・タプルのメジャー値の数である値4998が含まれます。
特定の製品および時間のメジャー値のみを含むSource
を生成するには、メジャーのSource
を、必要なディメンション値を指定するSource
オブジェクトと結合する必要があります。 このような選択は、ディメンションのプライマリSource
のメソッドを使用して生成できます。 Source
の値の選択を表すSource
を生成する1つの方法は、value
メソッドを使用することです。
例5-8 メジャー値の取得
この例では、ベースSource
の入力と結合されたSource
の照合を示します。 この例では、mdmDBSchema
はGLOBALスキーマのMdmDatabaseSchema
です。
MdmCube mdmPriceCube = mdmDBSchema.findOrCreateCube("PRICE_CUBE_AWJ"); MdmBaseMeasure mdmUnitPrice = mdmPriceCube.findOrCreateBaseMeasure("UNIT_PRICE"); MdmStandardDimension mdmProdDim = mdmDBSchema.findOrCreateStandardDimension("PRODUCT_AWJ"); MdmTimeDimension mdmTimeDim = mdmDBSchema.findOrCreateTimeDimension("TIME_AWJ"); Source prodDim = mdmProdDim.getSource(); Source timeDim = mdmTimeDim.getSource(); Source unitPrice = mdmUnitPrice.getSource(); Source pricesByProductAndTime = unitPrice.join(prodDim).join(timeDim); NumberSource numPricesByProductAndTime = pricesByProductAndTime.count();
親トピック: ソースと入力の照合
5.4.4.3 valueメソッドを使用した入力によるソースの導出
例5-9 値メソッドを使用したソース自体への関連付け
この例では、letters.value()
メソッドによってlettersValue
Source
が戻されます。 lettersValue
Source
には、入力としてletters
があります。 入力は、Source
の値と入力と、その入力と一致するSource
の値との関係を表します。
結合操作には、ベースSource
としてletters
、結合Source
としてlettersValue
があります。 ベースSource
、letters
は、lettersValue
の入力と一致します。letters
も同じであるためです。 結合操作によって生成されるSource
、lettersByLettersValue
は、出力としてlettersValue
を持ちます。 入力がありません。 lettersByLettersValue
の各要素には、letters
からのベース値、およびlettersValue
からの関連値があります。
Source letters = dp.createListSource(new String[] {"A", "B", "C"}); Source lettersValue = letters.value(); Source lettersByLettersValue = letters.join(lettersValue);
lettersByLettersValue
Source
のCursor
には、次の表に示す値があります。 表に見出しが追加されています。
Output Values Base Values A A B B C C
lettersByLettersValue
には、関連するベースおよび結合されたSource
オブジェクトの値のみが含まれているため、lettersByLettersValue
Source
のCursor
のベース値は出力値と同じです。 letters.join(letters)
のように、ベースと結合されたSource
オブジェクトが関連付けられていない場合、結合操作によって生成されるSource
には、ベースと結合されたSource
オブジェクトのデカルト積が含まれます。
親トピック: ソースと入力の照合
5.4.4.4 valueメソッドを使用したソースの値の選択
例5-10 valueメソッドを使用したソースの要素の選択
value
メソッドを使用すると、別のSource
の要素の選択であるSource
を導出できます。 この例では、「例5-7」からPRODUCT_AWJディメンションのSource
から2つの要素を選択します。 この例では、結合されたSource
の入力と一致するSource
のベースを示します。
Source productsToSelect = dp.createListSource(new String[] {"PRODUCT_PRIMARY::ITEM::ENVY EXE", "PRODUCT_PRIMARY::ITEM::ENVY STD"}); Source selectedProducts = prodDim.join(prodDim.value(), productsToSelect, Source.COMPARISON_RULE_SELECT, false); // Hide the output.
productsToSelect
Source
のCursor
には、次の値があります。
PRODUCT_PRIMARY::ITEM::ENVY EXE PRODUCT_PRIMARY::ITEM::ENVY STD
selectedProducts
Source
のCursor
には、次の値があります。
PRODUCT_PRIMARY::ITEM::ENVY EXE PRODUCT_PRIMARY::ITEM::ENVY STD
2つのSource
オブジェクトには、同じ値が含まれます。 ただし、オブジェクトのタイプは異なります。 productsToSelect
Source
の型は、Stringデータ型のFundamentalMetadataObject
のSource
です。 selectedProducts
はprodDim
から導出されるため、selectedProducts
Source
のタイプはprodDim
です。 したがって、selectedProducts
はprodDim
のサブタイプであるため、次の例に示すように、PRODUCT_AWJディメンションのSource
を入力として持つSource
と照合できます。
例5-11 導出Sourceオブジェクトを使用したメジャー値の選択
この例では、2つのディメンションのSource
オブジェクトから要素を選択し、選択したディメンション・メンバーのメジャー値を取得します。 この例では、「例5-8」と同じディメンションおよびメジャーを使用します。 ただし、この例では、メジャーのSource
の入力と一致するSource
オブジェクトは、ディメンションのSource
オブジェクトではありません。 かわりに、ディメンションのSource
オブジェクトのサブタイプです。 サブタイプでは、ディメンションの選択済メンバーを指定します。 メジャーをディメンションpricesForSelectedProductsAndTimes
と結合することによって導出されるSource
には、3つの時間値の2つの製品のメジャー値のみを指定する6つの要素があり、これは「例5-8」のpricesByProductAndTime
Source
の4998要素ではなくなります。 この例では、mdmDBSchema
はGLOBALスキーマのMdmDatabaseSchema
です。
// Create lists of product and time dimension members. Source productsToSelect = dp.createListSource(new String[] {"PRODUCT_PRIMARY::ITEM::ENVY EXE", "PRODUCT_PRIMARY::ITEM::ENVY STD"}); Source timesToSelect = dp.createListSource(new String[] {"CALENDAR_YEAR::MONTH::2000.01", "CALENDAR_YEAR::MONTH::2001.01", "CALENDAR_YEAR::MONTH::2002.01"}); // Get the PRICE_CUBE_AWJ cube. MdmCube mdmPriceCube = mdmDBSchema.findOrCreateCube("PRICE_CUBE_AWJ"); // Get the UNIT_PRICE measure from the cube. MdmBaseMeasure mdmUnitPrice = mdmPriceCube.findOrCreateBaseMeasure("UNIT_PRICE"); // Get the PRODUCT_AWJ and TIME_AWJ dimensions. MdmStandardDimension mdmProdDim = mdmDBSchema.findOrCreateStandardDimension("PRODUCT_AWJ"); MdmTimeDimension mdmTimeDim = mdmDBSchema.findOrCreateTimeDimension("TIME_AWJ"); // Get the Source objects for the dimensions and the measure. Source prodDim = mdmProdDim.getSource(); Source timeDim = mdmTimeDim.getSource(); Source unitPrice = mdmUnitPrice.getSource(); // Using the value method, derive Source objects that specify the selected // dimension members. Source selectedProducts = prodDim.join(prodDim.value(), productsToSelect, Source.COMPARISON_RULE_SELECT, false); Source selectedTimes = timeDim.join(timeDim.value(), timesToSelect, Source.COMPARISON_RULE_SELECT, false); // Derive a Source that specifies the unitPrice values for the selected products // and times. Source pricesForSelectedProductsAndTimes = unitPrice.join(selectedProducts) .join(selectedTimes);
pricesForSelectedProductsAndTimes
Source
のCursor
には、次の表に示す値があります。 表に見出しが追加されています。
Month Product Price ----------------------------- ------------------------------- ------- CALENDAR_YEAR::MONTH::2000.01 PRODUCT_PRIMARY::ITEM::ENVY EXE 3358.02 CALENDAR_YEAR::MONTH::2000.01 PRODUCT_PRIMARY::ITEM::ENVY STD 3000.11 CALENDAR_YEAR::MONTH::2001.01 PRODUCT_PRIMARY::ITEM::ENVY EXE 3223.28 CALENDAR_YEAR::MONTH::2001.01 PRODUCT_PRIMARY::ITEM::ENVY STD 2426.07 CALENDAR_YEAR::MONTH::2002.01 PRODUCT_PRIMARY::ITEM::ENVY EXE 3008.95 CALENDAR_YEAR::MONTH::2002.01 PRODUCT_PRIMARY::ITEM::ENVY STD 2140.71
親トピック: ソースと入力の照合
5.4.4.5 Sourceオブジェクトの要素を結合するためのextractメソッドの使用
extract
メソッドは、ベースSource
を入力として持つSource
を導出します。 Source
の要素の値がSource
オブジェクトそのものである場合、extract
メソッドを使用します。
例5-12 ソースのエレメントの抽出
この例では、selectValues
メソッドを使用して、PRODUCT_AWJディメンションのStringSource
から2つの要素の選択を導出します。 selectValues
メソッドは、selectedProducts
およびselectedTimes
Source
オブジェクトを生成する「例5-10」および「例5-11」のメソッドの完全なjoin
シグネチャのショートカットです。
この例では、2つの導出されたSource
オブジェクトを要素値として持つリストSource
、sourcesToCombine
を作成します。 sourcesToCombine.extract()
メソッドは、sourcesToCombine
を入力として持つSource
であるsourcesToCombineWithAnInput
を生成します。 結合操作sourcesToCombineWithAnInput.joinHidden(sourcesToCombine)
は、sourcesToCombineWithAnInput
の入力と結合されたsourcesToCombine
を照合し、入力または出力がないcombinedSources
を生成します。 このSource
要素の結合のショートカットは、appendValues
メソッドです。
MdmStandardDimension mdmProdDim = mdmDBSchema.findOrCreateStandardDimension("PRODUCT_AWJ"); StringSource prodDim = (StringSource) mdmProdDim.getSource(); Source productsToSelect = prodDim.selectValues(new String[] {"PRODUCT_PRIMARY::ITEM::ENVY ABM", "PRODUCT_PRIMARY::ITEM::ENVY EXE", "PRODUCT_PRIMARY::ITEM::ENVY STD"}); Source moreProductsToSelect = prodDim.selectValues(new String[] {"PRODUCT_PRIMARY::ITEM::SENT FIN", "PRODUCT_PRIMARY::ITEM::SENT MM", "PRODUCT_PRIMARY::ITEM::SENT STD"}); Source sourcesToCombine = dp.createListSource(new Source[] {productsToSelect, moreProductsToSelect}); Source sourcesToCombineWithAnInput = sourcesToCombine.extract(); Source combinedProducts = sourcesToCombineWithAnInput.joinHidden(sourcesToCombine);
combinedProducts
Source
のCursor
には、次の値があります。
PRODUCT_PRIMARY::ITEM::ENVY ABM PRODUCT_PRIMARY::ITEM::ENVY EXE PRODUCT_PRIMARY::ITEM::ENVY STD PRODUCT_PRIMARY::ITEM::SENT FIN PRODUCT_PRIMARY::ITEM::SENT MM PRODUCT_PRIMARY::ITEM::SENT STD
親トピック: ソースと入力の照合
5.5 パラメータ化Sourceオブジェクト
パラメータ化されたSource
オブジェクトは、パラメータ化されたSource
で指定された要素のセットを変更することで、問合せを指定し、問合せの様々な結果セットを取得する方法を提供します。 パラメータ化されたSource
は、Parameter
のcreateSource
メソッドを使用して作成します。 Parameter
は、パラメータ化されたSource
が指定する値を提供します。
このトピックの例は、Parameter
オブジェクトを使用する簡単なデモンストレーションです。 Parameter
の一般的な用途は、キューブのページ・エッジを指定することです(「例6-9」を参照)。 Parameter
のもう1つの用途は、現在必要な要素のセットのみをサーバーからフェッチすることです。 「例6-15」は、Parameter
オブジェクトを使用して様々な要素のセットをフェッチする方法を示します。
Parameter
オブジェクトを作成する場合は、Parameter
の初期値を指定します。 次に、Parameter
を使用して、パラメータ化されたSource
を作成します。 問合せの指定には、パラメータ化されたSource
を含めます。 問合せのCursor
を作成します。 Parameter
の値は、setValue
メソッドを使用して変更できます。このメソッドによって、問合せで指定される要素のセットが変更されます。 同じCursor
を使用して、新しい値のセットを取得できます。
この例では、Parameter
およびパラメータ化されたSource
を使用して、ディメンションのメンバーを指定する方法を示します。 この例では、PRODUCT_AWJディメンションのMdmStandardDimension
を取得し、StringSource
としてキャストされたMdmStandardDimension
のSource
を取得します。
この例では、初期値としてディメンション・メンバーを持つStringParameter
オブジェクトを作成します。 次に、StringParameter
のcreateSource
メソッドを使用して、パラメータ化されたSource
、paramProdSel
を作成します。 次に、ディメンション・メンバーを選択する結合操作で、paramProdSel
を比較Source
として使用します。
この例では、ディメンションのローカル値属性のSource
を取得します。 Source
、locValAttr
をparamProdSel
と結合します。 この結合操作により、dimMemberWithLocalValue
Source
が生成されます。
この例では、dimMemberWithLocalValue
のCursor
を作成し、Cursor
の値を表示します。 Cursor
の位置をリセットし、prodParam
StringParameter
の値を変更した後、この例ではCursor
の値を再度表示します。
dp
オブジェクトは、DataProvider
です。 getContext
メソッドは、現在のTransaction
をコミットするメソッドと、Cursor
の値を表示するメソッドを持つContext11g
オブジェクトを取得します。
例5-13 パラメータ化されたソースを使用したディメンション選択の変更
MdmStandardDimension mdmProdDim = mdmDBSchema.findOrCreateStandardDimension("PRODUCT_AWJ"); StringSource prodDim = (StringSource) mdmProdDim.getSource(); StringParameter prodParam = new StringParameter(dp, "PRODUCT_PRIMARY::FAMILY::LTPC"); Source prodParamSrc = prodParam.createSource(); Source paramProdSel = prodDim.join(prodDim.value(), prodParamSrc); Source locValAttr = mdmProdDim.getLocalValueAttribute().getSource(); Source dimMemberWithLocalValue = locValAttr.join(paramProdSel); // Commit the Transaction. getContext().commit(); // Create a Cursor for the Source. CursorManager cursorMngr = dp.createCursorManager(dimMemberWithLocalValue); Cursor cursor = cursorMngr.createCursor(); // Display the value of the Cursor. getContext().displayCursor(cursor); // Change the product parameter value. prodParam.setValue("PRODUCT_PRIMARY::FAMILY::DTPC"); // Reset the Cursor position to 1 cursor.setPosition(1); // Display the value of the Cursor again. getContext().displayCursor(cursor);
dimMemberWithLocalValue
のCursor
には、次の情報が表示されます。
PRODUCT_PRIMARY::FAMILY::LTPC,LTPC
StringParameter
の値を変更し、Cursor
の位置をリセットすると、dimMemberWithLocalValue
のCursor
に次の情報が表示されます。
PRODUCT_PRIMARY::FAMILY::DTPC,DTPC
親トピック: Sourceオブジェクトの理解