简介
您可以使用 HCM 数据加载程序成批加载日期有效的历史记录并维护该历史记录。
注意:
您需要了解如何使用 HCM 数据加载程序 (HDL) 创建和上载文件。如果您刚接触 HDL,则应先完成使用 HCM 数据加载程序 (HDL) 创建和维护数据教程。目标
在本教程中,您将执行此操作。
- 创建和加载日期有效的历史记录和每日多次更改。
- 更正和更新现有日期有效记录。
- 上载历史更改,保留未来值并覆盖未来值。
- 删除历史记录中的日期有效记录。
先决条件
要完成本教程,您需要:
- 使用 HCM 数据加载程序导入和加载数据的访问权限。
提示:
有关创建 HDL 访问和了解安全选项的步骤,请参阅配置对 HCM 数据加载程序 (HDL) 的访问并了解 HDL 安全选项教程。 - 用于创建文件的文本编辑器。
- 用于压缩业务对象数据文件的文件压缩程序。
此外,还建议您在尝试本教程之前完成使用 HCM 数据加载程序 (HDL) 创建和维护数据教程。任务 10 指您将在本教程中创建的数据。
任务 1:创建具有日期有效历史记录的对象
在此步骤中,您将学习如何在创建新对象时加载日期有效的历史记录。
- 使用任何文本编辑器创建新文件并输入以下内容:
- 保存文件,将其命名为 Job.dat 。
- 下载此 JobFamily.dat 文件。
- 将 Job.dat 和 JobFamily.dat 文件压缩为名为 1 Create Job.zip 的 zip 文件。
- 导入并加载 zip 文件。它将创建以下数据:
将为“销售”任务创建以下日期有效的记录。 有效开始日期 有效截止日期 名称 职务系列代码 标准工作小时数 全职/兼职 1-Mar-2024 销售 SALES 24 PART_TIME 1-Jan-2020 29-Feb-2024 销售 SALES 16 PART_TIME 1-Jan-2010 31-Dec-2019 销售 16 PART_TIME 总结:
- 在 2010 年 1 月 1 日创建了作业。
- 在 2020 年 1 月 1 日植入了“职务系列代码”。
- 2024 年 3 月 1 日,标准工作小时数从 16 小时增加到 24 小时。
提示:
您可以在 .dat 文件中按任意顺序提供日期有效记录,但不能中断日期。注意:
创建日期有效对象时,仅将第一个日期有效记录处理为新记录。较晚日期的记录是对第一个记录的更新。要保留上一个日期有效记录中的值,您可以将这些属性留空,也可以重复该值以继续。
METADATA|Job|JobCode|SetCode|EffectiveStartDate|EffectiveEndDate|Name|ActiveStatus|JobFamilyCode|RegularTemporary|FullPartTime|StandardWorkingHours|StandardWorkingFrequency MERGE|Job|SALES|COMMON|2024/03/01|4712/12/31|Sales|ACTIVE|SALES|R|PART_TIME|24|W MERGE|Job|SALES|COMMON|2020/01/01|2024/02/29|Sales|ACTIVE|SALES|R|PART_TIME|16|W MERGE|Job|SALES|COMMON|2010/01/01|2019/12/31|Sales|ACTIVE||R|PART_TIME|16|W
这三个文件行适用于由 JobCode SALES 和 SetCode COMMON 属性值标识的同一作业。
提示:
当记录没有结束日期时,您可以为 EffectiveEndDate 属性指定值 4712/12/31 。或者,将此字段留空。注意:
提供日期有效的历史记录时,请确保日期范围是连续的,并且日期范围内没有间隔。所有记录必须有效。HDL 会将这些记录分组在一起,并将其作为一个对象加载。如果在对象内的任何记录中发现错误,则整个对象将无法加载。注意:
Job.dat 文件是指由 JobFamily.dat 文件创建的作业系列。任务 2:更正最新日期有效记录
在此步骤中,您将更正上载到职务的最新日期有效记录。
- 创建新文件并输入以下内容:
- 保存文件并将其命名为 Job.dat 并将其压缩为名为 2 Correct Job.zip 的 zip 文件
- 导入并加载您的 zip 文件。这将对您的工作产生以下影响:
“销售”职务存在以下日期有效的记录。 有效开始日期 有效结束日期 名称 职务系列代码 标准工作小时数 全职/兼职 1-Mar-2024 销售 SALES 32 PART_TIME 1-Jan-2020 28-Feb-2024 销售 SALES 16 PART_TIME 1-Jan-2010 31-Dec-2019 销售 16 PART_TIME - 在 2024 年 3 月 1 日,标准工作时间从 24 小时更正为 32 小时。
- 未对此记录上的任何其他属性进行任何更改。
METADATA|Job|JobCode|SetCode|EffectiveStartDate|EffectiveEndDate|StandardWorkingHours MERGE|Job|SALES|COMMON|2024/03/01|4712/12/31|32
由于职务的记录已存在于 2024 年 3 月 1 日,因此将进行更正,而不是创建新的日期有效的拆分。
提示:
由于仅更正了 StandardWorkingHours ,因此您只需要提供该属性。其他属性将保持不变。总结:
任务 3:创建日期有效的更新
在此任务中,您将为您的作业上载日期有效的更新。
- 创建新文件并输入以下内容:
- 保存文件并将其命名为 Job.dat 并将其压缩为名为 3 Update Job.zip 的 zip 文件
- 导入并加载您的 zip 文件。这将对您的工作产生以下影响:
“销售”职务存在以下日期有效的记录。 有效起始日期 有效终止日期 名称 职务系列代码 标准工作小时数 全职/兼职 15-Mar-2024 销售 SALES 40 PART_TIME 1-Mar-2024 14-Mar-2024 销售 SALES 32 PART_TIME 1-Jan-2020 28-Feb-2024 销售 SALES 16 PART_TIME 1-Jan-2010 31-Dec-2019 销售 16 PART_TIME - 在 2024 年 3 月 15 日将标准工作时间增加到 40,将创建一个新的日期有效的更新。
- 以前运行到时间结束的记录上的有效结束日期将更新为 2024 年 3 月 14 日,即新有效开始日期的前一天。
METADATA|Job|JobCode|SetCode|EffectiveStartDate|StandardWorkingHours MERGE|Job|SALES|COMMON|2024/03/15|40
由于您提供的 EffectiveStartDate 尚未用于作业,因此将创建新的日期有效拆分。
提示:
如果不为 EffectiveEndDate 提供值,则更改将一直运行到时间结束。总结:
任务 4:删除将来日期有效的拆分
在此任务中,您将用新记录替换最后两个日期有效的拆分。
- 创建新文件并输入以下内容:
- 保存文件并将其命名为 Job.dat 并将其压缩为名为 4 Replace DE Split in Job.zip 的 zip 文件。
- 导入并加载您的 zip 文件。这将对您的工作产生以下影响:
“销售”职务存在以下日期有效的记录。 有效开始日期 有效结束日期 名称 职务系列代码 标准工作小时数 全职/兼职 1-Jan-2024 销售 SALES 40 FULL_TIME 1-Jan-2020 31-Dec-2022 销售 SALES 16 PART_TIME 1-Jan-2010 31-Dec-2019 销售 16 PART_TIME - 从 2024 年 3 月 1 日和 2024 年 3 月 15 日开始的日期有效记录将被删除,因为它们存在于 2024 年 1 月 1 日的 EffectiveStartDate 之后。
- 从 2024 年 1 月 1 日更新标准工作小时数和全职兼职值的过程中创建新记录。
- 紧接在 2024 年 1 月 1 日之前的记录的生效结束日期已更新为 2022 年 12 月 31 日。
- 未随文件中的值提供的属性不会更新,而是从以前日期的记录(如“职务系列代码”)向前滚动。
SET PURGE_FUTURE_CHANGES Y METADATA|Job|JobCode|SetCode|EffectiveStartDate|StandardWorkingHours|FullPartTime MERGE|Job|SALES|COMMON|2024/01/01|40|FULL_TIME
SET PURGE_FUTURE_CHANGES Y 指令指示 HDL 替换 EffectiveStartDate 和 EffectiveEndDate 属性指定的日期范围内存在的任何日期有效记录。
总结:
任务 5:上载保留将来日期值的历史更改
在此步骤中,您将插入日期有效的记录,而不会覆盖将来日期记录上的任何值。
- 创建新文件并输入以下内容:
- 保存文件并将其命名为 Job.dat 并将其压缩为名为 5 Retain Future Changes Job.zip 的 zip 文件。
- 导入并加载您的 zip 文件。这将对您的工作产生以下影响:
“销售”职务存在以下日期有效的记录。 有效起始日期 有效终止日期 名称 职务系列代码 标准工作小时数 全职/兼职 1-Jan-2024 销售 SALES 40 FULL_TIME 1-Jan-2020 31-Dec-2022 销售 SALES 16 PART_TIME 1-Jan-2015 31-Dec-2019 销售顾问 16 PART_TIME 1-Jan-2010 31-Dec-2014 销售 16 PART_TIME - 在将姓名设置为销售顾问的 2015 年 1 月 1 日创建了新记录。
- 新记录的有效结束日期派生为下一个日期记录的有效开始日期的前一天。即,下一个现有记录将于 2020 年 1 月 1 日开始,因此新记录将于 2019 年 12 月 31 日结束。
- 将保留所有远期记录。由于使用了提供给 EffectiveEndDate 属性的 #RETAIN 标记,因此 Name 值不会向前滚动。
- 文件中未提供值的属性将从先前存在于 1-Jan-2015 中的记录继承其值;该文件中指定的 EffectiveStartDate 属性的值。
SET PURGE_FUTURE_CHANGES N METADATA|Job|JobCode|SetCode|EffectiveStartDate|EffectiveEndDate|Name MERGE|Job|SALES|COMMON|2015/01/01|#RETAIN|Sales Consultant
SET PURGE_FUTURE_CHANGES N
指令指示 HDL 保留存在的任何将来日期有效拆分。
提供给 EffectiveEndDate 属性的 #RETAIN
值指示 HDL 保留存在的所有将来日期有效记录上的属性值。
总结:
任务 6:上载更新将来日期记录的历史更改
在此步骤中,您将从 EffectiveStartDate 属性指定的开始日期更正所有现有的日期有效记录。
- 创建新文件并输入以下内容:
- 保存文件并将其命名为 Job.dat 并将其压缩为名为 6 Replace Future Changes Job.zip 的 zip 文件。
- 导入并加载您的 zip 文件。这将对您的工作产生以下影响:
“销售”职务存在以下日期有效的记录。 有效起始日期 有效终止日期 名称 职务系列代码 标准工作小时数 全职/兼职 1-Jan-2024 销售顾问 SALES 40 FULL_TIME 1-Jan-2020 31-Dec-2022 销售顾问 SALES 16 PART_TIME 1-Jan-2015 31-Dec-2019 销售顾问 16 PART_TIME 1-Jan-2010 31-Dec-2014 销售顾问 16 PART_TIME - 保留所有日期有效拆分。
- 未来 EffectiveStartDate 中的所有记录都会随着销售顾问姓名更改而进行更正,但日期为 2015 年 1 月 1 日的记录除外,因为没有更改。
- 仅向前滚动文件中提供的属性值。
SET PURGE_FUTURE_CHANGES N METADATA|Job|JobCode|SetCode|EffectiveStartDate|EffectiveEndDate|Name MERGE|Job|SALES|COMMON|2010/01/01|#ALL|Sales Consultant
SET PURGE_FUTURE_CHANGES N
指令指示 HDL 保留存在的任何将来日期有效拆分。
提供给 EffectiveEndDate 属性的 #ALL
值指示 HDL 在所有将来日期有效的记录中向前滚动提供的属性值。
总结:
任务 7:删除日期有效的记录
在此步骤中,您将删除从 2015 年 1 月 1 日开始的不必要的日期有效记录,因为属性值与紧接其前的记录相同。
- 创建新文件并输入以下内容:
- 保存文件并将其命名为 Job.dat 并将其压缩为名为 7 Delete Date Effective Splits.zip 的 zip 文件。
- 导入并加载您的 zip 文件。这将对您的工作产生以下影响:
“销售”职务存在以下日期有效的记录。 有效开始日期 有效截止日期 名称 职务系列代码 标准工作小时数 全职/兼职 1-Jan-2024 销售顾问 SALES 40 FULL_TIME 1-Jan-2020 31-Dec-2022 销售顾问 SALES 16 PART_TIME 1-Jan-2010 31-Dec-2019 销售顾问 16 PART_TIME - 要删除日期有效的记录,请为 EffectiveStartDate 提供要保留的最后一个记录的有效开始日期。指定 EffectiveEndDate 和需要删除的最后一条记录的有效结束日期。
- 在此示例中,将仅删除从 2015 年 1 月 1 日开始的记录:
- 将 2010/01/01 指定给 EffectiveStartDate ,这是要保留的最后一条记录的有效开始日期。这可确保不会创建新的日期分割,因为 2010 年 1 月 1 日记录已存在。
- 将 2022/12/31 指定给 EffectiveEndDate ,这是要删除的最后一条记录的有效结束日期。这样可以确保在此日期之后不会更改记录。
SET PURGE_FUTURE_CHANGES Y METADATA|Job|JobCode|SetCode|EffectiveStartDate|EffectiveEndDate MERGE|Job|SALES|COMMON|2010/01/01|2019/12/31
SET PURGE_FUTURE_CHANGES Y
指令指示 HDL 替换 EffectiveStartDate 和 EffectiveEndDate 属性指定的日期范围内存在的任何日期有效记录。
由于仅提供了用于标识作业的属性,因此不会通过此文件对任何属性进行更正或更新。
总结:
任务 8:删除属性值
在此步骤中,您将删除日期范围的属性值。
- 创建新文件并输入以下内容:
- 保存文件并将其命名为 Job.dat 并将其压缩为名为 8 Delete Attribute Values.zip 的 zip 文件。
- 导入并加载您的 zip 文件。这将对您的工作产生以下影响:
“销售”职务存在以下日期有效的记录。 有效开始日期 有效截止日期 名称 职务系列代码 标准工作小时数 全职/兼职 1-Jan-2024 销售顾问 SALES FULL_TIME 1-Jan-2020 31-Dec-2022 销售顾问 SALES PART_TIME 1-Jan-2010 31-Dec-2019 销售顾问 PART_TIME - 标准工作小时数和标准工作频率(此表中未显示)的值都从所有日期更晚的记录的有效开始日期中删除。
SET PURGE_FUTURE_CHANGES N METADATA|Job|JobCode|SetCode|EffectiveStartDate|EffectiveEndDate|StandardWorkingHours|StandardWorkingFrequency MERGE|Job|SALES|COMMON|2010/01/01|#ALL|#NULL|#NULL
SET PURGE_FUTURE_CHANGES N
指令指示 HDL 保留存在的任何将来日期有效拆分。
提供给 StandardWorkingHours 和 StandardWorkingFrequency 属性的 #NULL
值指示 HDL 删除这些属性的值。
提供给 EffectiveEndDate 属性的 #ALL
值指示 HDL 向前滚动存在的所有将来日期有效记录上的属性值。
提示:
您还可以提供更改的结束日期,例如 4712/12/31,以将更改前滚到时间结束。但是,如果对象已结束(即,上次生效日期不是 4712/12/31),则更新将失败。总结:
任务 9:更改逻辑开始日期
在此步骤中,您将调整职务的第一个有效开始日期。这将替换第一个现有的日期有效分割。
提示:
使用查看业务对象任务可确定对象是否支持对第一个或最后一个有效日期进行更新。- 创建新文件并输入以下内容:
- 保存文件并将其命名为 Job.dat 并将其压缩为名为 9 Adjust Start Date.zip 的 zip 文件。
- 导入并加载您的 zip 文件。这将对您的工作产生以下影响:
“销售”职务存在以下日期有效的记录。 有效开始日期 有效截止日期 名称 职务系列代码 标准工作小时数 全职/兼职 1-Jan-2024 销售顾问 SALES FULL_TIME 1-Jan-2020 31-Dec-2022 销售顾问 SALES PART_TIME 1-Jan-2000 31-Dec-2019 销售顾问 PART_TIME - 第一个有效开始日期将更改为文件中提供的 EffectiveStartDate 。
- 在此示例中指定的 EffectiveEndDate 是现有第一个日期有效的记录 2019 年 12 月 31 日的结束日期。
SET PURGE_FUTURE_CHANGES Y METADATA|Job|JobCode|SetCode|EffectiveStartDate|EffectiveEndDate|ReplaceFirstEffectiveStartDate|Name MERGE|Job|SALES|COMMON|2000/01/01|2019/12/31|Y|Sales Consultant
SET PURGE_FUTURE_CHANGES Y
指令指示 HDL 替换 EffectiveStartDate 和 EffectiveEndDate 属性指定的日期范围内存在的任何将来日期有效拆分。
将属性 ReplaceFirstEffectiveStartDate 设置为 Y 时,HDL 会将逻辑开始日期调整为 EffectiveStartDate 属性指定的日期。
注意:
由于作业名称是必需的且已转换,因此您还需要指定名称属性,以便还可以调整转换记录的第一个有效开始日期。总结:
注意:
如果要保留现有拆分并在新开始日期之前创建新记录,则改为使用SET PURGE_FUTURE_CHANGES N
指令保留将来日期的记录。
提示:
您可以使用 ReplaceLastEffectiveEndDate 属性调整支持它的对象的有效结束日期。任务 10:每天加载多个更改
Worker 对象层次结构中的雇用条款和分配记录支持每天多次更改 (MCPD)。这允许您跟踪在同一有效开始日期进行的单个更新。
为单个日期具有多个更改的对象加载日期有效的历史记录时,EffectiveSequence 值必须从 1 开始并按顺序增加。您无法在同一日期重复同一逻辑对象的 EffectiveSequence 值,序列中也无法存在间断。如果有效开始日期只存在一个更改,则 EffectiveSequence 必须为 1。
例如:
METADATA|Assignment|SourceSystemId|EffectiveStartDate|EffectiveEndDate|EffectiveSequence|EffectiveLatestChange|... MERGE|Assignment|2724|2012/06/02||1|Y|... MERGE|Assignment|2724|2012/03/04|2012/06/01||3|Y... MERGE|Assignment|2724|2012/03/04|2012/03/04|2|N|... MERGE|Assignment|2724|2012/03/04|2012/03/04|1|N|... MERGE|Assignment|2724|2010/06/08|2012/03/03|1|Y|...
本示例遵循以下规则:
- 日期中不存在间隔。
- 对于所有日期有效记录,唯一关键字相同。
- 对于所有新的有效开始日期,EffectiveSequence 从 1 开始,并且是匹配有效开始日期的顺序。
- 如果记录是有效开始日期的最后一次更改,则 EffectiveLatestChange 为 Y 。否则,EffectiveLatestChange 为 N 。
- 当 EffectiveLatestChange 为 N 时,EffectiveEndDate 与 EffectiveStartDate 匹配。
- 创建新文件并输入以下内容:
- 保存文件并将其命名为 Worker.dat 并将其压缩为名为 10 MCPD.zip 的 zip 文件。
- 导入并加载您的 zip 文件。这将为分配创建具有以下日期有效记录的员工:
员工分配存在以下日期有效的记录。 有效开始日期 有效截止日期 有效序号 操作 职位 标准时数 10-May-2010 2 WORK_HOURS_CHANGE MGR 37.5 10-May-2010 10-May-2010 1 JOB_CHANGE MGR 40 8-Feb-2005 9-May-2010 1 聘用人数 SCN 40
METADATA|Worker|SourceSystemOwner|SourceSystemId|EffectiveStartDate|PersonNumber|StartDate|DateOfBirth|ActionCode MERGE|Worker|EMP|MCPD|2005/02/08|HDL-MCPD|2005/02/08|1966/04/21|HIRE METADATA|PersonName|SourceSystemOwner|SourceSystemId|EffectiveStartDate|PersonId(SourceSystemId)|NameType|LegislationCode|Title|LastName|FirstName MERGE|PersonName|EMP|MCPD_NME|2005/02/08|MCPD|GLOBAL|US|MRS.|Hugh|Lorraine METADATA|WorkRelationship|SourceSystemOwner|SourceSystemId|PersonId(SourceSystemId)|LegalEmployerName|DateStart|WorkerType|PrimaryFlag MERGE|WorkRelationship|EMP|MCPD_POS|MCPD|Vision Corporation|2005/02/08|E|Y METADATA|WorkTerms|SourceSystemOwner|SourceSystemId|PeriodOfServiceId(SourceSystemId)|ActionCode|EffectiveStartDate|EffectiveEndDate|EffectiveSequence|EffectiveLatestChange|AssignmentName|AssignmentNumber|PrimaryWorkTermsFlag MERGE|WorkTerms|EMP|MCPD_TRM|MCPD_POS|WORK_HOURS_CHANGE|2010/05/10|4712/12/31|2|Y|ET-MCPD|ET-MCPD|Y MERGE|WorkTerms|EMP|MCPD_TRM|MCPD_POS|JOB_CHANGE|2010/05/10|2010/05/10|1|N|ET-MCPD|ET-MCPD|Y MERGE|WorkTerms|EMP|MCPD_TRM|MCPD_POS|HIRE|2005/02/08|2010/05/09|1|Y|ET-MCPD|ET-MCPD|Y METADATA|Assignment|SourceSystemOwner|SourceSystemId|ActionCode|EffectiveStartDate|EffectiveEndDate|EffectiveSequence|EffectiveLatestChange|WorkTermsAssignmentId(SourceSystemId)|AssignmentName|AssignmentNumber|AssignmentStatusTypeCode|PersonTypeCode|BusinessUnitShortCode|PrimaryAssignmentFlag|JobId(SourceSystemId)|JobId(SourceSystemOwner)|StandardHours|StandardFrequencyDB MERGE|Assignment|EMP|MCPD_ASG|WORK_HOURS_CHANGE|2010/05/10|4712/12/31|2|Y|MCPD_TRM|MCPD Example|E-MCPD|ACTIVE_PROCESS|Employee|Vision Operations|Y|MGR|VISION|37.5|W MERGE|Assignment|EMP|MCPD_ASG|JOB_CHANGE|2010/05/10|2010/05/10|1|N|MCPD_TRM|MCPD Example|E-MCPD|ACTIVE_PROCESS|Employee|Vision Operations|Y|MGR|VISION|37.5|W MERGE|Assignment|EMP|MCPD_ASG|HIRE|2005/02/08|2010/05/09|1|Y|MCPD_TRM|MCPD Example|E-MCPD|ACTIVE_PROCESS|Employee|Vision Operations|Y|SCN|VISION|40|W
提示:
此文件引用的作业在使用 HCM 数据加载程序 (HDL) 创建和维护数据教程中创建。您还需要将 WorkRelationship 上 LegalEmployerName 属性的值和分配记录上的 BusinessUnitShortCode 的值更新为环境中可用的值。
注意:
在加载此文件之前,请确保在应用程序中创建源系统所有者,或者将 SourceSystemOwner 更改为已存在的值。提示:
为“分配”记录提供日期有效的更改时,必须在 WorkTerms 记录上创建相同的日期有效的拆分。后续步骤
以下教程将进一步扩展您的 HCM 数据加载程序知识:
相关链接
有关 HDL 和 HSDL 的最新教程发布在 Cloud Customer Connect 的以下主题中:
有关详细信息,请参阅此帮助主题:
致谢
- 作者 — Ema Johnson(高级首席产品经理)
更多学习资源
通过 docs.oracle.com/learn 浏览其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。