1日に複数の変更があるオブジェクトをロードする方法
ほとんどの有効日オブジェクトの場合、特定の日付には1つのレコードしか存在しません。そのため、オブジェクト履歴には、常に各属性の最終更新のみが表示されます。
ただし、アサイメントなどの一部のオブジェクトでは、1日のうちの各更新に対して1つのレコードが存在します。このようなオブジェクトには、更新順序を示す有効連番が含まれます。変更は累積され、有効連番が最も高いレコードが、その日付のトランザクションで使用可能になります。このトピックでは、1日に複数の変更をサポートするオブジェクトをロードおよび維持する方法について説明します。
有効連番
単一日に複数の変更があるオブジェクトの有効日履歴をロードする場合は、EffectiveSequence値を1から開始して、連続的に増やす必要があります。同じ日付の同じ論理オブジェクトに対してEffectiveSequence値を繰り返すことはできず、順序にギャップがあってはなりません。有効開始日の変更が1つしかない場合は、EffectiveSequenceを1にする必要があります。
有効な最終変更
同じ有効開始日の複数の変更をレポートする場合は、一連の最終レコードのEffectiveLatestChange属性をYにする必要があります。これより前のすべてのレコードでは、この属性をNにする必要があります。1日に複数の変更をサポートするレコードには、EffectiveLatestChange属性が必要です。有効開始日の変更が1つしかない場合は、EffectiveLatestChangeをYにする必要があります。
有効開始日および有効終了日
EffectiveLatestChangeがNに設定されているレコードの有効終了日は、その有効開始日と同じである必要があります。
1日に複数の変更がある有効日履歴のロード: 例
次の例では、アサイメント・オブジェクトの有効日履歴をロードします。
METADATA|Assignment|SourceSystemId|EffectiveStartDate|EffectiveSequence|EffectiveLatestChange|EffectiveEndDate|...
MERGE|Assignment|2724|2010/06/08|1|Y|2012/03/03|...
MERGE|Assignment|2724|2012/03/04|1|N|2012/03/04|...
MERGE|Assignment|2724|2012/03/04|2|N|2012/03/04|...
MERGE|Assignment|2724|2012/03/04|3|Y|2012/06/01|...
MERGE|Assignment|2724|2012/06/02|1|Y||...
この例では、次のルールに従います。
-
日付にギャップが存在しません。
-
すべての有効日レコードで一意キーが同じです。
-
新しいすべての有効開始日でEffectiveSequenceが1から始まり、一致する有効開始日で連番です。
-
レコードが有効開始日の最終変更である場合、EffectiveLatestChangeはYです。それ以外の場合、EffectiveLatestChangeはNです。
-
EffectiveLatestChangeがNの場合、EffectiveEndDateはEffectiveStartDateに一致します。
1日に複数の変更があるオブジェクトの更新
1日に複数の変更をサポートする既存のオブジェクトに単一の更新を指定する場合、次に使用可能な連番がわからないことがあります。この場合は、EffectiveSequence属性を空白にします。既存の順序の次の番号が自動的に生成されます。
既存のレコードを訂正するには、このレコードを正しく識別するために次の属性に既存の値を指定する必要があります。
-
有効開始日
-
有効終了日
-
有効順序
-
有効な最終変更
たとえば:
METADATA|Assignment|SourceSystemId|EffectiveStartDate|EffectiveSequence|EffectiveLatestChange|EffectiveEndDate|...
MERGE|Assignment|2724|2010/06/08|3|N|4712/12/31|...