1日に複数の変更があるオブジェクトをロードする方法

ほとんどの有効日オブジェクトの場合、特定の日付には1つのレコードしか存在しません。そのため、オブジェクト履歴には、常に各属性の最終更新のみが表示されます。

ただし、アサイメントなどの一部のオブジェクトでは、1日のうちの各更新に対して1つのレコードが存在します。このようなオブジェクトには、更新順序を示す有効連番が含まれます。変更は累積され、有効連番が最も高いレコードが、その日付のトランザクションで使用可能になります。このトピックでは、1日に複数の変更をサポートするオブジェクトをロードおよび維持する方法について説明します。

有効連番

単一日に複数の変更があるオブジェクトの有効日履歴をロードする場合は、EffectiveSequence値を1から開始して、連続的に増やす必要があります。同じ日付の同じ論理オブジェクトに対してEffectiveSequence値を繰り返すことはできず、順序にギャップがあってはなりません。有効開始日の変更が1つしかない場合は、EffectiveSequence1にする必要があります。

ノート: 単一日の複数の変更をロードする場合は、EffectiveSequenceを空白にしないでください。この情報がないと、有効開始日が同じレコードの処理順序が定義されません。

有効な最終変更

同じ有効開始日の複数の変更をレポートする場合は、一連の最終レコードのEffectiveLatestChange属性をYにする必要があります。これより前のすべてのレコードでは、この属性をNにする必要があります。1日に複数の変更をサポートするレコードには、EffectiveLatestChange属性が必要です。有効開始日の変更が1つしかない場合は、EffectiveLatestChangeYにする必要があります。

有効開始日および有効終了日

EffectiveLatestChangeNに設定されているレコードの有効終了日は、その有効開始日と同じである必要があります。

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||...

この例では、次のルールに従います。

  • 日付にギャップが存在しません。

  • すべての有効日レコードで一意キーが同じです。

  • 新しいすべての有効開始日でEffectiveSequence1から始まり、一致する有効開始日で連番です。

  • レコードが有効開始日の最終変更である場合、EffectiveLatestChangeYです。それ以外の場合、EffectiveLatestChangeNです。

  • EffectiveLatestChangeNの場合、EffectiveEndDateEffectiveStartDateに一致します。

1日に複数の変更があるオブジェクトの更新

1日に複数の変更をサポートする既存のオブジェクトに単一の更新を指定する場合、次に使用可能な連番がわからないことがあります。この場合は、EffectiveSequence属性を空白にします。既存の順序の次の番号が自動的に生成されます。

既存のレコードを訂正するには、このレコードを正しく識別するために次の属性に既存の値を指定する必要があります。

  • 有効開始日

  • 有効終了日

  • 有効順序

  • 有効な最終変更

たとえば:

METADATA|Assignment|SourceSystemId|EffectiveStartDate|EffectiveSequence|EffectiveLatestChange|EffectiveEndDate|...
MERGE|Assignment|2724|2010/06/08|3|N|4712/12/31|...
ノート: 単一日の複数の変更をロードする場合は、EffectiveSequenceを空白にしないでください。この情報がないと、有効開始日が同じレコードの処理順序が定義されません。ただし、EffectiveSequenceを空白のままにするには、必ずデータ・ファイルにSET PURGE_FUTURE_CHANGES N命令を含めてください。この命令の詳細は、「先日付レコードの属性値の保持の例」を参照してください。また、有効日オブジェクトの更新時に値を指定する方法の詳細は、「有効日オブジェクトの更新」を参照してください。