6 有効日データのロード
この章の内容は次のとおりです。
有効日オブジェクトのロード: 概要
Oracle HCM Cloudの多くのオブジェクトは有効日オブジェクトです。つまり、これらは、それぞれ有効開始日および有効終了日がある変更の履歴を保持します。専門ユーザーは、指定日のオブジェクトのバージョンを取得および編集できます。HCMデータ・ローダーを使用すると、有効日オブジェクトとその有効日履歴をロードできます。このトピックでは、有効日オブジェクトのロードに関する一般的なルールをいくつか説明します。
有効日レコードの属性
次の表では、有効日レコードに出現する属性について説明しています。
属性 | 説明 |
---|---|
EffectiveStartDate |
属性値の開始日。この値は、すべての有効日レコードに必要です。 |
EffectiveEndDate |
属性値の終了日。この値を空白にすると、デフォルトでは、有効日レコードは終了時間まで継続します。 |
EffectiveSequence |
1日に複数の変更が行われた場合は、この属性によりこれらの順序が識別されます。 |
EffectiveLatestChange |
1日に複数の変更があるオブジェクトの場合は、この属性により、有効開始日の最新レコードが識別されます。 |
有効日履歴の指定
新しいオブジェクトに対してロードする履歴の数を決定できますが、指定する履歴は完全かつ有効である必要があります。有効日レコードは.datファイルに任意の順序で指定できますが、日付に区切りがない場合があります。有効日オブジェクトを作成する場合は、最初の有効日レコードのみが新しいレコードとして処理されます。これより後の日付のレコードは、最初のレコードに更新されます。前の有効日レコードの値を保持するには、これらの属性値を空白にするか、継続する値を繰り返します。
キー値
HCMデータ・ローダーによって、レコードは論理オブジェクトにグループ化され、1つの論理オブジェクトは、ビジネス・オブジェクトの1つのオカレンスとなります(就業者など)。論理オブジェクトに属するレコードは、コンポーネントの一意キーで識別されます。そのため、キー値は、有効日履歴全体で同じである必要があります。4つのキー・タイプのいずれかを使用できます。
有効日オブジェクトの作成
HCMデータ・ローダーを使用して有効日コンポーネントを含むビジネス・オブジェクトを作成する場合は、次のようにします。
-
データ・ファイルの先頭に
SET PURGE_FUTURE_CHANGES Y
命令を含めます。この命令により、HCMデータ・ローダーの有効日メンテナンス・モードが「置換」に設定されます。デフォルトであるこのモードでは、既存のデータがデータ・ファイルの内容に置き換えられます。 -
オブジェクト履歴を含めている場合は、null値が必要なすべての属性に#NULLトークンを指定します。
有効日オブジェクトの更新
有効日コンポーネントを含むオブジェクトに更新をロードする場合は、次のようにします。
-
データ・ファイルの先頭に
SET PURGE_FUTURE_CHANGES N
命令を含めます。この命令により、HCMデータ・ローダーの有効日メンテナンス・モードが保持に設定されます。このモードでは、既存の先日付の変更が保持されます。この命令を含めない場合は、更新の日付範囲の既存の先日付の変更がパージされます。 -
各変更の有効開始日は常に指定します。有効終了日はオプションです。ただし、先日付のレコードを訂正しない場合は、有効終了日を#RETAINに設定する必要があります。終了時間まで変更を適用する場合は、有効終了日をnullにします。
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|...
先日付レコードがある有効日オブジェクトの更新: 説明
有効日オブジェクトを更新すると、変更がその既存の複数の有効日レコードに影響する場合があります。また、影響を受ける一部のレコードの有効開始日が、更新の有効開始日より後の場合もあります。このようなレコードは、先日付レコードと呼ばれます。このトピックでは、それぞれのメンテナンス・モードで先日付レコードの更新がどのように処理されるかについて説明します。また、メンテナンス・モードの設定方法についても説明します。
次の表は、ジョブ・オブジェクトの有効日履歴を示しています。
有効開始日 | 有効終了日 | ジョブ・コード | ジョブ名 | 正社員臨時 | フル/パートタイム | アクティブ・ステータス |
---|---|---|---|---|---|---|
2010/06/08 |
2012/01/09 |
ACC1 |
会計担当者 |
T |
PART_TIME |
A |
2012/01/10 |
2012/03/03 |
ACC1 |
会計担当者 |
T |
FULL_TIME |
A |
2012/03/04 |
4712/12/31 |
ACC1 |
会計管理者 |
T |
FULL_TIME |
A |
有効開始日が2011/01/01と指定されたオブジェクトを更新すると、新しい有効日レコードは2011/01/01に対して生成されます。この更新により、有効終了日が2010/06/08のレコードが変更されます。また、2012/01/10と2012/03/04の両方のレコードにも影響します。これらの既存の先日付レコードへの影響は、次によって異なります。
-
メンテナンス・モード(保持または「置換」)
-
有効終了日の値(指定した場合)
保持モードまたは「置換」モード
次の表では、メンテナンス・モードと既存の先日付レコードの有効終了日を組み合せた影響を説明しています。
モード | 有効終了日の値 | 説明 |
---|---|---|
保持 |
#RETAIN |
先日付レコードの既存の属性値が保持されます。これらの値は更新の影響を受けません。既存のすべてのレコードが保持されます。 |
保持 |
#ALL |
変更された属性値は、終了時間まですべての先日付レコードに繰り越されます。既存のすべてのレコードが保持されます。 ヒント: 有効終了日を空白にするか、4712/12/31に設定すると、#ALLトークンを指定した場合と同じ結果になります。ただし、特定の終了日が設定されたオブジェクトの変更を繰り越すには、#ALLトークンを使用する必要があります。
|
保持 |
4712/12/31以外の特定の日付 |
変更された属性値は、指定された終了日まで先日付レコードに繰り越されます。既存のすべてのレコードが保持されます。 |
置換 |
特定の日付または空白 |
単一レコードにより、更新で指定された日付範囲の既存の有効日レコードが置き換えられます。 |
既存のレコードに増分更新を適用している場合は、保持モードをお薦めします。「置換」モード(デフォルトのモード)は、レコードに完全なデータをアップロードしている場合は、データの移行中に役立ちます。
どちらのモードでも、次のようになります。
-
有効日レコードが現在存在しない有効開始日または有効終了日を指定すると、オブジェクトに対して新しい有効日レコードが生成されます。
-
値を指定した属性のみが更新されます。
メンテナンス・モードの設定
有効日オブジェクトにメンテナンス・モードを設定するには、SETコマンドを使用します。次の表は、データ・ファイルに含めるSETコマンドを示しています。
モード | SETコマンド |
---|---|
保持 |
|
置換 |
|
データ・ファイルにこれらのSETコマンドのいずれも含めない場合、デフォルトのモードは「置換」です。
先日付レコードの属性値の保持: 例
有効日オブジェクトを更新した場合に、先日付レコードの属性値を変更しないようにすることができます。これらの値を保持するには、メンテナンス・モードを保持に設定し、有効終了日ではなく#RETAINトークンを指定します。このトークンにより、指定した有効開始日から次のレコードの開始まで変更が有効になります。先日付レコードが存在しない場合は、レコードの終了日まで変更が適用されます。このトピックでは、保持モードの結果を示す例を示します。
アサイメント・オブジェクトの先日付属性値の保持
次の表に示す、アサイメント・オブジェクトの有効日履歴について考えます。
有効開始日 | 有効順序 | 有効終了日 | 処理コード | ジョブ・コード | 等級 | 事業所 | 時間 |
---|---|---|---|---|---|---|---|
2010/06/08 |
1 |
2012/03/03 |
HIRE |
ACC1 |
IC2 |
HQ |
40 |
2012/03/04 |
1 |
2012/03/04 |
PROMOTION |
ACC1 |
IC4 |
HQ |
40 |
2012/03/04 |
2 |
2012/03/04 |
TRANSFER |
ACC1 |
IC4 |
LVP |
40 |
2012/03/04 |
3 |
2012/06/01 |
JOB_CHANGE |
ACC3 |
IC4 |
LVP |
40 |
2012/06/02 |
1 |
4712/12/31 |
JOB_CHANGE |
ACC2 |
IC4 |
LVP |
40 |
先日付レコードに影響を与えずに勤務時間を2012/01/10から37.5に変更するには、次のデータ・ファイルを使用します。
SET PURGE_FUTURE_CHANGES N
METADATA|Assignment|SourceSystemId|EffectiveStartDate|EffectiveSequence|EffectiveLatestChange|EffectiveEndDate|ActionCode|NormalHours
MERGE|Assignment|2724|2012/01/10||Y|#RETAIN|ASG_CHANGE|37.5
更新後、アサイメント・オブジェクトは次の表に示すとおりになります。
有効開始日 | 有効順序 | 有効終了日 | 処理コード | ジョブ・コード | 等級 | 事業所 | 時間 |
---|---|---|---|---|---|---|---|
2010/06/08 |
1 |
2012/01/09 |
HIRE |
ACC1 |
IC2 |
HQ |
40 |
2012/01/10 |
1 |
2012/03/03 |
ASG_CHANGE |
ACC1 |
IC2 |
HQ |
37.5 |
2012/03/04 |
1 |
2012/03/04 |
PROMOTION |
ACC1 |
IC4 |
HQ |
40 |
2012/03/04 |
2 |
2012/03/04 |
TRANSFER |
ACC1 |
IC4 |
LVP |
40 |
2012/03/04 |
3 |
2012/06/01 |
JOB_CHANGE |
ACC3 |
IC4 |
LVP |
40 |
2012/06/02 |
1 |
4712/12/31 |
JOB_CHANGE |
ACC2 |
IC4 |
LVP |
40 |
有効開始日が2012/01/10以降のレコードの属性は、現在の値を保持します。
保持モードでの変更済属性値の繰越: 考慮する点
保持モードで有効日オブジェクトを更新した場合は、変更を先日付レコードに繰り越すことができます。この場合は、有効終了日を指定するか、既存のすべての先日付レコードに変更を繰り越すことができます。このトピックでは、各結果に到達する方法および続行方法を決定する際の考慮事項について説明します。
有効終了日の指定
次の表は、ジョブ・オブジェクトの有効日履歴を示しています。
有効開始日 | 有効終了日 | ジョブ・コード | ジョブ名 | 正社員臨時 | フル/パートタイム | アクティブ・ステータス |
---|---|---|---|---|---|---|
2010/06/08 |
2012/01/09 |
ACC1 |
会計担当者 |
T |
PART_TIME |
A |
2012/01/10 |
2012/03/03 |
ACC1 |
会計担当者 |
T |
FULL_TIME |
A |
2012/03/04 |
4712/12/31 |
ACC1 |
会計管理者 |
T |
FULL_TIME |
A |
2011/03/04から2014/04/04までの期間の正社員臨時の値をTからRに変更するには、.datファイルに次の命令を含めます。
SET PURGE_FUTURE_CHANGES N
METADATA|Job|SourceSystemId|EffectiveStartDate|EffectiveEndDate|ReqularTemporary
MERGE|Job|45346|2011/03/04|2014/04/04|R
更新後、ジョブ・オブジェクトは次の表に示すとおりになります。
有効開始日 | 有効終了日 | ジョブ・コード | ジョブ名 | 正社員臨時 | フル/パートタイム | アクティブ・ステータス |
---|---|---|---|---|---|---|
2010/06/08 |
2011/03/03 |
ACC1 |
会計担当者 |
T |
PART_TIME |
A |
2011/03/04 |
2012/01/09 |
ACC1 |
会計担当者 |
R |
PART_TIME |
A |
2012/01/10 |
2012/03/03 |
ACC1 |
会計担当者 |
R |
FULL_TIME |
A |
2012/03/04 |
2014/04/04 |
ACC1 |
会計管理者 |
R |
FULL_TIME |
A |
2014/04/05 |
4712/12/31 |
ACC1 |
会計管理者 |
T |
FULL_TIME |
A |
変更の開始日と終了日の両方に対して新しい有効日レコードが作成されます。指定された期間の正社員臨時属性が更新されます。他のすべての属性は、既存の値を保持します。
すべての先日付レコードへの変更の適用
有効終了日のかわりに#ALLトークンを使用できます。このトークンは、オブジェクトの終了日に関係なく、すべての先日付レコードに変更を適用することを明示的に指定します。
たとえば、ジョブ・オブジェクトを次のように変更します。
-
正社員臨時の値をTからRに変更します。
-
変更の有効開始日を2011/03/05に設定します。
-
すべての先日付レコードに変更を適用します。
データ・ファイルに次の命令を含めます。
SET PURGE_FUTURE_CHANGES N
METADATA|Job|SourceSystemId|EffectiveStartDate|EffectiveEndDate|ReqularTemporary
MERGE|Job|45346|2011/03/04|#ALL|R
更新後、ジョブ・オブジェクトは次の表に示すとおりになります。
有効開始日 | 有効終了日 | ジョブ・コード | ジョブ名 | 正社員臨時 | フル/パートタイム | アクティブ・ステータス |
---|---|---|---|---|---|---|
2010/06/08 |
2011/03/03 |
ACC1 |
会計担当者 |
T |
PART_TIME |
A |
2011/03/04 |
2012/01/09 |
ACC1 |
会計担当者 |
R |
PART_TIME |
A |
2012/01/10 |
2012/03/03 |
ACC1 |
会計担当者 |
R |
FULL_TIME |
A |
2012/03/04 |
4712/12/31 |
ACC1 |
会計管理者 |
R |
FULL_TIME |
A |
.datファイルの有効終了日を空白にするか、明示的に4712/12/31に設定すると、同じ結果が得られます。ただし、明示的に終了日が設定されたオブジェクトには、#ALLタグを使用する必要があります。
置換モードを使用したアサイメントの更新: 例
「置換」モードで有効日オブジェクトを更新した場合は、既存のすべての先日付レコードをアップロードされたデータと置き換えます。.datファイルの内容を更新するのではなく、既存のデータと置き換える必要がある場合にのみ、「置換」モードを使用することをお薦めします。
「置換」モードは、デフォルトのメンテナンス・モードです。ただし、次のSETコマンドを使用して、「置換」モードを明示的に選択し、この設定を.datファイルに記録できます。
SET PURGE_FUTURE_CHANGES Y
「置換」モードでのオブジェクトの選択した属性のみの更新
次の表は、アサイメント・オブジェクトの有効日履歴を示しています。
有効開始日 | 有効順序 | 有効終了日 | 処理コード | ジョブ | 等級 | 事業所 | 標準勤務時間数 |
---|---|---|---|---|---|---|---|
2010/06/08 |
1 |
2012/03/03 |
HIRE |
ACC1 |
IC2 |
HQ |
40 |
2012/03/04 |
1 |
2012/03/04 |
PROMOTION |
ACC1 |
IC4 |
HQ |
40 |
2012/03/04 |
2 |
2012/03/04 |
TRANSFER |
ACC1 |
IC4 |
LVP |
40 |
2012/03/04 |
3 |
2012/06/01 |
JOB_CHANGE |
ACC3 |
IC4 |
LVP |
40 |
2012/06/02 |
1 |
4712/12/31 |
JOB_CHANGE |
ACC2 |
IC4 |
LVP |
40 |
「置換」モードで勤務時間を2012/01/10から37.5に更新するには、次のデータ・ファイルを作成します。
SET PURGE_FUTURE_CHANGES Y
METADATA|Assignment|SourceSystemId|EffectiveStartDate|EffectiveSequence|EffectiveLatestChange|EffectiveEndDate|ActionCode|NormalHours
MERGE|Assignment|2724|2012/01/10||Y||ASG_CHANGE|37.5
更新後、アサイメント・オブジェクトは次の表に示すとおりになります。
有効開始日 | 有効順序 | 有効終了日 | 処理コード | ジョブ | 等級 | 事業所 | 標準勤務時間数 |
---|---|---|---|---|---|---|---|
2010/06/08 |
1 |
2012/01/09 |
HIRE |
ACC1 |
IC2 |
HQ |
40 |
2012/01/10 |
1 |
4712/12/31 |
ASG_CHANGE |
ACC1 |
IC2 |
HQ |
37.5 |
「置換」モードでは、有効開始日が更新の有効開始日より後のレコードはパージされます。変更が前の日付の属性値およびデータ・ファイルに値を指定していない属性値は、新しいレコードに出現します。この更新を元に戻すことはできません。
最初の有効開始日および最終有効終了日の変更: 例
一部のオブジェクトでは、最初の有効開始日または最終有効終了日を変更できます。このトピックでは、これらの変更方法を示す例を示します。
オブジェクトの最初の有効開始日を変更するには、.datファイルにReplaceFirstEffectiveStartDate属性を含め、これをYに設定します。オブジェクトの最終有効終了日を変更するには、.datファイルにReplaceLastEffectiveEndDate属性を含め、これをYに設定します。必要に応じて、EffectiveStartDate属性またはEffectiveEndDate属性に改定した日付を指定します。これらの変更は、他の変更と同時に行うことができます。たとえば、オブジェクトの開始日とその名前の両方を変更できます。
最初の有効開始日および最終有効終了日の変更には、次の制限が適用されます。
-
一部のオブジェクトでは、最終有効終了日を4712/12/31にする必要があります。この日付を変更しようとすると、エラーが発生します。
-
この方法では、就業者オブジェクトの最初の有効開始日は変更できません。かわりに、NewStartDate属性を使用する必要があります。
-
.datファイルにReplaceLastEffectiveEndDate属性を含める場合は、EffectiveEndDate属性に日付値を指定する必要があります。有効終了日のかわりに#RETAIN、#ALLまたは#NULLトークンを指定しないでください。
ジョブ・オブジェクトの最初の有効開始日の変更
次の例は、.datファイルにReplaceFirstEffectiveStartDate属性を含める方法を示しています。
METADATA|Job|JobId|EffectiveStartDate|EffectiveEndDate|ReplaceFirstEffectiveStartDate
MERGE|Job|23452|1950/01/01|4712/12/31|Y
反復エレメント・エントリの最終有効終了日の変更
次の例は、.datファイルにReplaceLastEffectiveEndDate属性を含める方法を示しています。
METADATA|ElementEntry|ElementEntryId|EffectiveStartDate|EffectiveEndDate|ReplaceLastEffectiveEndDate
MERGE|ElementEntry|4634|2014/01/01|2014/04/05|Y