Oracle® Fusion Middleware Oracle Business Intelligence Enterprise Editionメタデータ・リポジトリ作成者ガイド 12c (12.2.1.2.0) E82973-02 |
|
![]() 前へ |
![]() 次へ |
完全なマージに適用されるルールについて説明します。
完全なマージの場合、次のルールが適用されます。
一般に、変更は変更済リポジトリに保管するものと想定されています。たとえば、変更済リポジトリでオブジェクトの追加や削除を実行する場合は、そのオブジェクトの追加や削除の動作がプロンプトなしで実行されます。
現行リポジトリでオブジェクトの追加や削除が実行される場合は、リポジトリ・マージ・ウィザードによって変更を保持するかどうかが確認されます。
一般に、リポジトリ・マージ・ウィザードは、問合せへの対応に必要なオブジェクトのセット数の最少化を保証しようとします。マージの際は、マージ後のリポジトリには不要なオブジェクトが、現行リポジトリから導入される可能性があります。この問題に対処するため、リポジトリ・マージ・ウィザードは、現行リポジトリの新しいプレゼンテーション・レイヤー・オブジェクトがマージ後の最終成果物にも必要であるかどうかが確認されます。新しいプレゼンテーション・オブジェクトを保持することを選択した場合、論理的および物理的な依存オブジェクトもすべて保持されます。一方、新しいプレゼンテーション・オブジェクトの保持を選択しなかった場合は、これらのオブジェクトの使用を必要とする問合せが行われないため、論理的および物理的な依存オブジェクトは保持されません。リポジトリ・マージ・ウィザードは、これらのオブジェクトを廃棄してマージ後のリポジトリに使用されないオブジェクトが移入されないことを保証します。
両方のリポジトリでオブジェクトの追加や削除が行われる場合、オブジェクトの追加や削除がプロンプトなしで実行されます。同じオブジェクトが追加されそのプロパティの相違がわずかである場合は、リポジトリ・マージ・ウィザードによってどちらのバージョンのプロパティを保持するかが確認されます。
オブジェクトが現行リポジトリでのみ、または変更済リポジトリでのみ変更されている場合、その変更は保持されます。同じオブジェクトが現行リポジトリと変更済リポジトリの双方で変更され、変更内容が異なる場合はマージの競合が発生します。競合が発生した場合、リポジトリ・マージ・ウィザードから、保持する変更を選択するように要求されます。
付随するオブジェクト関係によっては、特定のオブジェクトに関するデシジョンが、デシジョン・セット全体を決定する場合があります。たとえば、現行リポジトリに追加されたプレゼンテーション列を保持することにした場合、論理列、物理列、およびその他のベースとなる関連オブジェクトとともに関連付けられているプレゼンテーション表およびサブジェクト・エリアも保持することが必要になります。また、現行リポジトリに追加されたサブジェクト・エリアを保持しないことにした場合は、関連付けられているオブジェクトの保持を選択するかどうかを確認されることはありません。結合の追加には元表の追加が必要な場合がありますが、式の変更では物理列の追加が発生する場合があります。
オブジェクト関係は、プロパティによって相互連結することができます。文字列と数値だけではなく、特定のプロパティの内部値を別のリポジトリ・オブジェクトにすることができます。このため、特定のオブジェクトに対する変更に応じて相互に関連付けられたオブジェクトの変更が発生する場合があります。
たとえば、初期化ブロックBのデータ・ソースを接続プールからカスタム認証システムAに変更するとします。初期化ブロック・オブジェクトに対するデータ・ソース・プロパティの変更以外に、カスタム認証システム・オブジェクトでもこれに対応するプロパティの変更が発生します(カスタム認証システムAの初期化ブロック・プロパティの値が初期化ブロックBに変わったため)。
これらのプロパティに対するデシジョンは同期させる必要があるため、初期化ブロックBのデータ・ソース・プロパティのデシジョンに「現行」を選択すると、カスタム認証システムAの初期化ブロック・プロパティのデシジョンも「現行」になります。
リポジトリ・マージ・ウィザードではユーザー入力が必要なデシジョンのすべてが「マージ戦略の定義」画面に表示されます。
オブジェクトのタイプおよび状況によって適用される特殊なルールがあり、それらはオブジェクトのマージ方法およびプロンプトが必要な状況を制御する一般的なルールに追加されるものです。
この項では、次の項目について説明します。
レベル、アプリケーション・ロール、オブジェクト・パーミッションなどのオブジェクトでは、オブジェクト間の親/子関係を決定するベクター・マージ・アルゴリズムが使用されます。
ベクター・マージ・アルゴリズムを使用するオブジェクトには次のものがあります。
ディメンションのレベル、論理列に関連付けられたレベル、および子レベル
論理表示フォルダのディメンションと表
論理表ソースの集計内容
アプリケーション・ロールのメンバーシップ、パーミッションなどのセキュリティ・オブジェクト
初期化ブロックのLDAPサーバー設定および実行優先度
マージ・プロセスでは、Oracle BIサーバーによって各リポジトリのオブジェクト関係の初期状態が判別されます。たとえば、次のリストはオブジェクト・パーミッションで想定される状況、およびユーザーとアプリケーション・ロールにどのように関連するかを示しています。
M - 欠落。アプリケーション・ロール、ユーザーまたはオブジェクトがリポジトリに存在していません。
D - デフォルト。パーミッションは親アプリケーション・ロールから継承されています。
Y - あり。パーミッションがユーザーまたはアプリケーション・ロールに明示的に付与されています。
N - なし。ユーザーまたはアプリケーション・ロールに対して、パーミッションが明示的に否認されています。
リポジトリ・マージ・ウィザードでは、各リポジトリのオブジェクト・パーミッション関係の状況に応じて、マージ対象のリポジトリに適切な関係が決定されます。次に例を示します。
元のリポジトリで結果がY、変更済のリポジトリの結果がN、現行リポジトリの結果がMの場合、リポジトリ・マージ・ウィザードによって、マージするリポジトリにはNの結果が決定されます。
元のリポジトリで結果がN、変更済のリポジトリの結果がY、現行リポジトリの結果がMの場合、リポジトリ・マージ・ウィザードによって、マージするリポジトリにはYの結果が決定されます。
例C-1は、アプリケーション・ロール・オブジェクトのオブジェクト関係がどのようにマージされるかの詳細を説明しています。
例C-1 ベクター・マージの例: アプリケーション・ロールのマージ
次のリストは、ユーザーおよびアプリケーション・ロール関係で発生しうる様々な状況を示しています。
M - 欠落。アプリケーション・ロールまたはユーザーがリポジトリに存在していません。
Y - あり。アプリケーション・ロールまたはユーザーがアプリケーション・ロールに属しています。
N - なし。アプリケーション・ロールまたはユーザーはアプリケーション・ロールのメンバーではありません。
この表は、マージするリポジトリ内のオブジェクトの各種の関係のマージ結果を示しています。
元のリポジトリ | 変更済のリポジトリ | 現行リポジトリ | 結果 |
---|---|---|---|
M |
M |
M |
N この状況は、元のリポジトリにアプリケーション・ロールもユーザーも存在せず、変更済リポジトリにユーザーが存在し、現行リポジトリにアプリケーション・ロールが存在する場合に発生する可能性があります。この場合、メンバーシップはないとみなされます。 |
M |
M |
Y |
Y |
M |
M |
N |
N |
M |
Y |
M |
Y |
M この場合のオリジナルにMが含まれていると、ユーザーまたはアプリケーション・ロールのいずれかが存在しないことを意味します。欠落したオブジェクトが双方で追加されても、同じオブジェクトであると見なすことはできません |
Y |
Y |
Y |
M |
Y |
N |
Y |
M |
N |
M |
N |
M |
N |
Y |
Y |
M |
N |
N |
N |
Y |
M |
M |
Y |
Y |
M |
Y |
Y |
Y |
M |
N |
N |
Y |
Y |
M |
Y |
Y |
Y |
Y |
Y |
Y |
Y |
N |
N |
Y |
N |
M |
N |
Y |
N |
Y |
N |
Y |
N |
N |
N |
N |
M |
M |
N |
N |
M |
Y |
Y |
N |
M |
N |
N |
N |
Y |
M |
Y |
N |
Y |
Y |
Y |
N |
Y |
N |
Y |
N |
N |
M |
N |
N |
N |
Y |
Y |
N |
N |
N |
N |
論理表ソース・オブジェクトにおける列のマッピングのマージ方法は、特殊なルールによって制御されます。各列のマッピングが個別にマージされます。
変更済または現行のリポジトリでマッピングが変更されている場合、各列で変更が保持されます。両方のリポジトリでマッピングが変更されている場合、Oracle BIサーバーはマッピングの自動マージを試行します。
列の削除はマッピングの変更とはみなされません。特定の列が変更後のリポジトリに存在しない場合、現行リポジトリのマッピングが使用されます。
集計内容に相違がある場合、レベル別で指定された集計内容が優先されます。つまり、集計内容がレベル別のリポジトリと、列別のリポジトリがある場合、レベル別の集計内容が保持されます。
1つのリポジトリでのみアプリケーション・ロールのフィルタが変更されている場合はその変更が保持されます。両方のリポジトリでフィルタが変更されている場合、Oracle BIサーバーではフィルタの自動マージが試行されます。
特定のフィルタ(プレゼンテーション列など)のマージに必要なオブジェクトがあり、そのオブジェクトが存在していない場合、当該のフィルタは無効と見なされマージ後のリポジトリには表示されません。このルールは変数には適用されません。特定のフィルタのマージに必要な変数がある場合、Oracle BIサーバーではマージ後のリポジトリでその変数が保持されることが保証されます。
プレゼンテーション列には、「名前」プロパティと「論理列名の使用」プロパティの両方があります。
状況によってはこれらのプロパティが競合することがあります。たとえば、この表はこの状況が発生する可能性があるシナリオを示しています。
リポジトリ | プレゼンテーション列名 | 論理列名 | 論理列名の使用 |
---|---|---|---|
元 |
Sales |
GroupSales |
いいえ |
現行 |
Sales |
Sales |
はい |
変更済 |
GroupSales |
GroupSales |
はい |
この表の通常のオブジェクト・マージ・ルールが適用された場合、マージ後のリポジトリには、GroupSalesというプレゼンテーション列とSalesという論理列が存在し、「論理列名の使用」
プロパティが「はい」に設定されます。しかし、プレゼンテーション列の名前が論理列の名前と異なるため、この結果は不適切になります。
このような状況を回避するため、Oracle BIサーバーは、「論理列名の使用」プロパティの値を推論します。この論理を使用することで、この表に例示したマージ後のリポジトリでは、プレゼンテーション列はGroupSales、論理列がSalesとなり、「論理列名の使用」プロパティは「いいえ」に設定されます。