简介

HCM 数据加载程序 (HDL) 支持灵活的管道分隔文件格式,以便您仅提供用例所需的业务对象、组件和组件属性。可以加载完整的数据集,也可以只加载增量更改。要实现这种灵活性,每个文件必须指定文件中包括哪些业务对象组件和属性。

Oracle HCM Cloud 业务对象可能很复杂,通常分层,允许为业务对象创建多个子记录,例如,为人员创建多个电话号码,或为职务创建多个有效薪资级别。

职务层次结构

每个分隔文件将包含单个业务对象层次结构的数据。该文件将以业务对象命名,并具有 .dat 文件扩展名。例如,Worker.dat 包含 Worker 的数据,Job.dat 包含作业的数据,ElementEntry.dat 包含元素条目的数据。

提供要由 HDL 处理的数据时,必须唯一标识文件中的每个记录。对于新记录,支持两种机制:

  • 用户关键字 - 用户界面上可以找到的用户友好属性的组合,用于唯一标识记录。例如,作业的 JobCode 和 SetCode,Worker 的 PersonNumber。
  • 源关键字 - SourceSystemId 和 SourceSystemOwner 这两个属性的组合用于唯一标识记录。SourceSystemId 值可以是任何值,但通常是源系统上的标识符或算法生成的值。SourceSystemOwner 可确保源关键字在存在多个源系统时是唯一的。

注意:

源密钥是建议的解决方案,因为用户密钥值可以随时间变化,并且通常可以转换。来源关键字在记录的有效期内不会更改。您也可以使用来源关键字从其他对象引用记录。当用户关键字属性由 Oracle HCM Cloud 自动生成(例如 PersonNumber)时,源关键字特别有用。

目标

在本教程中,您将:

  • 创建和加载用户密钥和源密钥文件。
  • 按源键引用父对象和外部对象。
  • 更新现有记录并将新的子记录添加到现有对象。
  • 删除单个记录和完整对象。
  • 供应报告和对账信息。

先决条件

要完成本教程,您需要:

任务 1:创建第一个文件

在此步骤中,您将创建一个简单文件,使用用户关键字加载新职务系列以唯一标识每个记录。

  1. 使用任何文本编辑器创建新文件并输入以下内容:
  2. METADATA|JobFamily|JobFamilyCode|JobFamilyName|EffectiveStartDate|EffectiveEndDate
    • 任何 HDL 文件行上的第一个值始终是文件指令,在本例中为 METADATA
    • 所有文件都必须包括 METADATA 行,以定义文件中包括哪些属性以及提供这些属性值的顺序。
    • METADATA 指令后紧跟的字符串称为文件鉴别器,用于标识属性所对应的对象层次中的组件,在本例中为 JobFamily
    • 文件鉴别器后面的值是 JobFamily 组件上可用的属性的名称,您将在此文件中包括这些属性的值。
    • 默认情况下,文件说明、文件分隔符和所有属性名称都用竖线 '|' 字符分隔。

    注意:

    在同一文件中,只能为对象层次结构的每个组件提供一个 METADATA 行。也就是说,只能定义对象层次结构中的组件包含哪些属性。

    提示:

    确保文本编辑器使用 UTF-8 编码。
  3. 将此 MERGE 行添加到文件 METADATA 行下方:
  4. MERGE|JobFamily|SALES|Sales|2000/01/01|4712/12/31

    此 MERGE 行创建由职务系列代码 SALES 标识的职务系列,名称为 SALES ,从 2000 年 1 月 1 日开始。

    • MERGE 指令指示 HDL 创建记录(如果尚不存在),或者更新记录(如果存在)。
    • MERGE 指令后面的文件鉴别器标识这是 JobFamily 记录。以下值是相应 METADATA 行中指定的属性的值。
    • 默认情况下,文件指令、文件分隔符和所有属性值都用竖线 '|' 字符分隔。
    • 必须按相应的 METADATA 行定义的顺序提供属性值。
    • 请使用格式 YYYY/MM/DD 提供日期。
    • 有效结束日期是可选的,该值默认为 4712 年 12 月 31 日,这意味着此记录没有结束。
    • 注意:

      由于职务系列名称可以翻译,因此您应该使用基本语言为您的环境(通常为美国)提供该名称。HCM 数据加载程序使用提升用户(其会话语言为基本语言,可能与会话用户的会话语言不同)加载数据。

  5. 将这些附加的 MERGE 行添加到文件中:
    MERGE|JobFamily|CLERICAL|Clerical and Administration|2000/01/01|4712/12/31
    MERGE|JobFamily|MANAGERIAL|Managerial|2000/01/01|4712/12/31

    您必须唯一标识每个记录。对于作业系列记录,用户关键字是单个属性 JobFamilyCode ,即 CLERICAL 和 MANAGERIAL。

    提示:

    在加载此文件之前,您可能需要将姓名首字母添加到职务系列代码值中,以确保姓名首字母唯一且尚未在数据库中创建。

  6. 保存文件,将其命名为 JobFamily.dat 。或者,您可以下载和编辑 JobFamily.dat 文件。

    提示:

    为要加载的对象层次命名数据文件。它必须具有 .dat 文件扩展名。业务对象文件名区分大小写。
  7. 提示:

    查看业务对象任务用于加载数据的对象层次结构的文件名和文件判别器。
  8. 将 JobFamily.dat 压缩 (zip) 为您选择的文件名,但必须具有 .zip 文件扩展名。

任务 2:导入和加载文件

  1. 在应用程序的主页上,单击我的客户组 > 数据交换
  2. 单击导入和加载数据
    单击“导入和加载数据”

  3. 单击页眉上的导入文件
    单击“Import File(导入文件名)”

  4. 将 .zip 文件从文件浏览器拖放到选择文件按钮。或者,单击选择文件按钮以搜索并选择文件。
    选择文件

  5. 单击立即提交。您无需更改默认参数值。
  6. 已提交确认页上单击确定
  7. 单击刷新以查看数据集信息。
    单击刷新

    提示:

    数据集与您的 zip 文件具有相同的名称。
    • 导入状态指明文件中的数据是否导入到分段表中。
    • 加载状态指示数据是否已成功加载到 Oracle HCM Cloud 应用程序表中。

      提示:

      将鼠标悬停在这些图标上以了解其含义。
    • 有各种计数:
      • Total Lines(总行数)指示在文件中找到的数据行数。您的文件中存在 3 行 MERGE。
      • Total Objects 指示在文件中找到的对象数。在此简单文件中,3 行创建了 3 个作业系列对象,因此“总对象数”也应为 3。
      • 失败的对象指明无法成功加载的对象数。您的文件应该为零。

      提示:

      大多数对象都具有复杂的层次结构,您需要提供多个文件行来创建一个对象。对于这些对象,“总行数”将比“总对象数”大得多。

提示:

此表中有其他列可用。单击视图 > ,然后选择要显示的列。
  • 再次单击刷新,直到数据集完成加载。

  • 任务 3:使用源关键字创建简单文件

    我们始终建议您提供来源关键字以唯一标识您的记录。

    定义源系统所有者

    必须先注册源系统所有者值,然后才能加载使用源密钥的文件。

    1. 使用可以访问设置和维护的用户登录到应用程序。
    2. 导航到 My Enterprise(我的企业) > Setup and Maintenance(设置和维护)
    3. 单击“Setup and Maintenance(设置和维护)”

    4. 单击侧边抽屉图标,然后单击搜索
    5. 单击“搜索”

    6. 搜索并选择 Manage Common Lookups(管理公用查找)任务。
    7. 搜索查找类型 HRC_SOURCE_SYSTEM_OWNER
    8. 单击“查找代码”表中的添加图标
    9. 单击“Manage Common Lookups(管理公用查找)”

    10. 在查找代码和含义中指定 VISION ,指定 01/01/2000 的开始日期。
    11. 创建 VISION 查找代码
    12. 单击保存

    创建简单源密钥文件

    在此步骤中,您将创建一个简单的源密钥文件来加载成绩。

    1. 创建新文件并输入以下 METADATA 行:
    2. METADATA|Grade|SourceSystemOwner|SourceSystemId|GradeCode|SetCode|GradeName|EffectiveStartDate|ActiveStatus

      SourceSytemOwnerSourceSystemId 属性包括在 METADATA 行中,以及特定于 Grade 对象的属性。

      提示:

      创建新记录时,即使提供了来源关键字,也常常需要唯一标识记录的用户关键字属性。但是,当同时提供来源关键字和用户关键字时,来源关键字用于唯一标识每个记录。
    3. 将以下 MERGE 行添加到文件中:
    4. MERGE|Grade|VISION|IC1|IND_CON_1|COMMON|Individual Contributor 1|2000/01/01|A
      MERGE|Grade|VISION|IC2|IND_CON_2|COMMON|Individual Contributor 2|2000/01/01|A
      MERGE|Grade|VISION|IC3|IND_CON_3|COMMON|Individual Contributor 3|2000/01/01|A
      MERGE|Grade|VISION|MG1|MANAGER_1|COMMON|Manager 1|2000/01/01|A
      MERGE|Grade|VISION|MG2|MANAGER_2|COMMON|Manager 2|2000/01/01|A

      这些文件行将创建五个等级,每个等级由源关键字标识:

      源系统责任人 源系统 ID 薪资级别代码 薪资级别名
      愿景 IC1 IND_COND_1 个人贡献者 1
      愿景 IC2 IND_COND_2 个人贡献者 2
      愿景 IC3 IND_COND_3 个人贡献者 3
      愿景 MG1 MANAGER_1 经理 1
      愿景 MG2 MANAGER_2 经理 2

      提示:

      SourceSystemId 值可以是任何值。在此示例中,使用与 GradeCode 不同的值来清除下一个任务中提供的值。您可能需要将首字母缩写添加到 SourceSystemId 值中,以确保它们是唯一的。
    5. 保存文件,将其命名为 Grade.dat 。或者,下载并编辑 Grade.dat 文件。
    6. 请勿上载此文件。这将与您在以下步骤中创建的文件一起加载。


    任务 4:使用源关键字引用外部对象

    在此步骤中,您将创建一个源密钥文件,以上载按其用户关键字和薪资级别引用职务系列的职务。

    1. 创建新文件并输入以下 METADATA 行:
    2. METADATA|Job|SourceSystemOwner|SourceSystemId|EffectiveStartDate|SetCode|JobCode|Name|JobFamilyCode|ActiveStatus|FullPartTime|RegularTemporary

      SourceSytemOwnerSourceSystemId 属性可唯一标识每个作业。对作业系列的引用使用 JobFamilyCode 用户关键字属性。

    3. 将以下 MERGE 行添加到文件中:
    4. MERGE|Job|VISION|SCN|2000/01/01|COMMON|SALES_CONS|Sales Consultant|SALES|A|FULL_TIME|R
      MERGE|Job|VISION|ADM|2000/01/01|COMMON|ADMIN|Administrator|CLERICAL|A|FULL_TIME|R
      MERGE|Job|VISION|MGR|2000/01/01|COMMON|MANAGER|Manager|MANAGERIAL|A|FULL_TIME|R

      提示:

      如果更改了第一个文件中的职务类别代码,则需要对此文件进行相同的更新。

      这三个文件行将创建三个作业。属于您在任务 1 中创建的不同作业系列的每个作业。

      作业名称 职务类别
      销售顾问 销售(销售)
      Administrator CLERICAL(硬质和行政)
      经理 经理(经理)

    5. 添加以下 METADATA 行:
    6. METADATA|JobGrade|SourceSystemOwner|SourceSystemId|JobId(SourceSystemId)|GradeId(SourceSystemId)|EffectiveStartDate

      一个作业可以有多个有效薪资级别。JobGrade 组件用于创建有效薪资级别,并且是作业对象层次结构中作业组件的子项。

      • 为子记录提供数据时,必须为其相关的父记录命名。在此示例中,这是通过父代代理 ID 属性 JobId 实现的。
      • 提示:

        使用查看业务对象任务可标识业务对象的父代和外部代理 ID 属性。
      • 由于源密钥用于标识作业,因此 JobId 属性后跟字符串 (SourceSystemId) 。属性名称后方括号中的任何内容都是一个提示。此提示告诉 HDL,将提供源系统 ID 值以引用由代理 ID 属性标识的外部(或父)对象。
      • 对薪资级别的引用还使用源关键字,必须将源系统 ID 值提供给引用薪资级别的外部代理 ID 属性;添加 (SourceSystemId) 提示的 GradeId
      • 在此示例中,薪资级别源关键字的源系统所有者继承自 SourceSystemOwner 属性。但是,如果源系统所有者值不同,则可以使用具有 (SourceSystemOwner) 提示的外部对象的代理 ID 属性提供此值。例如,GradeId(SourceSystemOwner)
    7. 将以下 MERGE 行添加到文件中:
    8. MERGE|JobGrade|VISION|SCN_IC1|SCN|IC1|2000/01/01
      MERGE|JobGrade|VISION|SCN_IC2|SCN|IC2|2000/01/01
      MERGE|JobGrade|VISION|SCN_IC3|SCN|IC3|2000/01/01
      MERGE|JobGrade|VISION|ADM_IC1|ADM|IC1|2000/01/01
      MERGE|JobGrade|VISION|ADM_IC2|ADM|IC2|2000/01/01
      MERGE|JobGrade|VISION|ADM_IC3|ADM|IC3|2000/01/01
      MERGE|JobGrade|VISION|MGR_MG1|MGR|MG1|2000/01/01
      MERGE|JobGrade|VISION|MGR_MG2|MGR|MG2|2000/01/01

      这些文件行将为这三个作业中的每个作业创建有效的薪资级别。每个有效的成绩记录:

      • 通过定义具有属性 SourceSystemOwnerSourceSystemId 的源关键字来提供唯一标识符。
      • 使用父代理 ID 属性 JobId(SourceSystemId) 标识父作业,并为其提供父作业记录上提供的 SourceSystemId 值。例如, SCN 是“销售顾问”作业的 SourceSystemId,因此“销售顾问”作业的有效薪资级别上的 JobId(SourceSystemId) 属性也必须是 SCN
      • 使用外部代理 ID 属性 GradeId(SourceSystemId) 标识薪资级别。

        提示:

        如果将首字母添加到薪资级别文件中的 SourceSystemId 值,则此处的值相同。
    9. 保存文件,将其命名为 Job.dat 。或者,下载并编辑 Job.dat 文件。
    10. 使用所选文件名一起压缩 (zip) Grade.datJob.dat 文件,确保其具有 .zip 扩展名。
    11. 使用 Importing and Loading Your File 中介绍的步骤上载您的薪资级别和作业。
    12. 查看数据集的业务对象表。zip 文件中包括的每个业务对象文件都存在一个条目。
    13. 业务对象

      提示:

      您可以在同一 zip 文件中提供多个业务对象 .dat 文件。HCM 数据加载程序将并行导入它们,然后按顺序加载它们。确保引用的数据先加载到 Oracle HCM Cloud,然后再由后续业务对象文件引用。


    任务 5:更新记录

    在此步骤中,您将学习如何更新单个记录和添加新的子记录。

    提示:

    使用查看业务对象任务可确定对象是否支持更新。

    创建要更新和删除的对象

    在此步骤中,您将创建包含答案的问题。然后,将在后续任务中更新并删除此问题。

    1. 创建包含以下行的文件:
    2. METADATA|Question|SubscriberName|QuestionCode|QstnVersionNum|QuestionText|Status|QuestionType|PrivacyFlag|ResponseTypeName|CategoryName
      MERGE|Question|Recruiting|FEEDBACK_1|1|How satisfied are you with the training?|A|MULTCHOICE|N|Check Multiple Choices|Feedback
      
      METADATA|Answer|SubscriberName|QuestionCode|QstnVersionNum|AnswerCode|LongText|SequenceNumber|Score
      MERGE|Answer|Recruiting|FEEDBACK_1|1|FEEDBACK_1ANS11|Yes, I'm satisfied.|5|151
      MERGE|Answer|Recruiting|FEEDBACK_1|1|FEEDBACK_1ANS21|No, I'm not satisfied.|3|151
      MERGE|Answer|Recruiting|FEEDBACK_1|1|FEEDBACK_1ANS31|I have no opinion on this.|2|151
    3. 保存文件,将其命名为 Question.dat 。或者,下载并编辑 Question.dat 文件。
    4. 使用您选择的文件名压缩 (zip) Question.dat 文件,确保其具有 .zip 扩展名。
    5. 在加载此文件之前,您需要创建类别代码:
      • 导航到 My Client Groups(我的客户组),在 Quick Actions(快速操作)下单击 Show More(显示更多)
      • 搜索并单击问题快速操作。
      • 订户更改为招聘
      • 单击添加图标并指定反馈的文件夹。
      • 单击确定
    6. 使用导入和加载文件中介绍的步骤上载问题。
    7. 使用问题任务复查问题及其答案。

    更新对象

    1. 创建包含以下行的文件:
    2. METADATA|Question|SubscriberName|QuestionCode|QstnVersionNum|QuestionText
      MERGE|Question|Recruiting|FEEDBACK_1|1|Are you satisfied with the training?
      

      您必须唯一标识要更新的记录。此示例使用用户关键字属性:SubscriberNameQuestionCodeQstnVersionNum

      提示:

      使用查看业务对象任务可确定用于唯一标识每个组件的用户关键字属性。

      提示:

      如果使用源关键字来标识记录,请改用这些属性:SourceSystemIdSourceSystemOwner

      此文件仅更新问题文本,因此该文件中包括的唯一其他属性是 QuestionText

    3. 保存文件,将其命名为 Question.dat
    4. 压缩 (zip) Question.dat 文件并导入和装入该文件。
    5. 使用问题任务复查问题文本。

    更新和添加子记录

    1. 创建包含以下行的文件:
    2. METADATA|Question|SubscriberName|QuestionCode|QstnVersionNum
      MERGE|Question|Recruiting|FEEDBACK_1|1
      
      METADATA|Answer|SubscriberName|QuestionCode|QstnVersionNum|AnswerCode|LongText|SequenceNumber|Score
      MERGE|Answer|Recruiting|FEEDBACK_1|1|FEEDBACK_1ANS11|Yes, I'm very satisfied.|5|151
      MERGE|Answer|Recruiting|FEEDBACK_1|1|FEEDBACK_1ANS41|Yes, I'm somewhat satisfied.|4|151

      该问题包含在文件中,用于对相关答案进行分组,以确保它们一起处理。

      • 未更新问题记录,因此仅包括用于标识答案对应问题的属性。
      • 文件中的第一个答案是对现有记录的更新。
      • 文件中的第二个答案是针对此问题的新答案。

      提示:

      使用 MERGE 指令可创建新记录和更新现有记录。您无需知道记录是否已存在,HDL 将确定是创建还是更新数据。

      提示:

      提供子记录时,除了唯一标识要创建或更新的记录外,还记得始终提供对父记录的唯一参考。
    3. 保存文件,将其命名为 Question.dat
    4. 压缩 (zip) Question.dat 文件并导入和装入该文件。
    5. 使用问题任务复查答案。

    任务 6:删除记录

    在此步骤中,您将学习如何删除单个记录和完成对象。

    假设您完成了任务 5 ,该任务将创建此步骤中要删除的问题。

    提示:

    使用查看业务对象任务可确定对象是否支持删除。

    删除单个子记录

    1. 创建包含以下行的文件:
    2. METADATA|Question|QuestionCode|QstnVersionNum|SubscriberName
      MERGE|Question|FEEDBACK_1|1|Recruiting
      
      METADATA|Answer|QuestionCode|QstnVersionNum|SubscriberName|AnswerCode
      DELETE|Answer|FEEDBACK_1|1|Recruiting|FEEDBACK_1ANS31

      此文件将删除由 AnswerCode FEEDBACK_1ANS31 标识的答案。

      • DELETE 指令指示 HDL 删除记录。
      • 仅提供标识要删除的记录的属性。

      提示:

      建议将父代包含在具有 MERGE 指令的文件中。这将对所有相关记录进行分组,确保它们一起处理。一些对象层次结构(如“问题”)强制您在更新或删除子记录时将顶层记录包括在文件中。
    3. 保存文件,将其命名为 Question.dat
    4. 使用所选文件名压缩 (zip) Question.dat 文件,确保其具有 .zip 扩展名。
    5. 导入并加载您的文件。
    6. 使用问题任务复查问题,以确认它现在只有 3 个答案。

    删除完整对象

    1. 创建包含以下行的文件:
    2. METADATA|Question|QuestionCode|QstnVersionNum|SubscriberName
      DELETE|Question|FEEDBACK_1|1|Recruiting
    3. 保存文件,将其命名为 Question.dat
    4. 使用所选文件名压缩 (zip) Question.dat 文件,确保其具有 .zip 扩展名。
    5. 导入并加载您的文件。
    6. 使用问题任务确认问题不再存在。
    7. 提示:

      对于大多数对象,您不需要先删除子记录,删除顶层记录会级联删除,以同时删除所有子记录。

    任务 7:供应调节数据

    HCM 数据加载程序加载的数据保存在通用中转表中,为业务对象提供的值不会始终存储在同一数据库列中。

    警告:

    不应尝试直接从 HDL 中转表读取数据。而是向来源参考属性提供要报告、合计或调节的属性值。

    来源参考属性显示在导入和加载数据用户界面的对象状态页中,并且可以使用 HCM 提取和 OTBI 报告进行提取。

    在 METADATA 行中,可以使用以下格式指定每个源引用列的提示:

    SourceRef001={source-column-001}|SourceRef002={source-column-002}|SourceRef003={source-column-003}

    例如:

    METADATA|ElementEntry|...|SourceRef001=PersonNumber|SourceRef002=ElementName|SourceRef003=Amount
    MERGE|ElementEntry|...|892334|Travel Allowance|200

    提示:

    最多可以提供十个来源参考值。
    1. 创建包含以下行的文件:
    2. METADATA|ElementEntry|LegislativeDataGroupName|AssignmentNumber|ElementName|EffectiveStartDate|MultipleEntryCount|EntryType|CreatorType|SourceRef001=Assignment Number|SourceRef002=Element|SourceRef003=Amount
      MERGE|ElementEntry|Vision Corp|E3143464|Commutation Allowance|2019/04/01|1|E|H|E3143464|Commutation Allowance|1000
      METADATA|ElementEntryValue|LegislativeDataGroupName|AssignmentNumber|ElementName|EffectiveStartDate|MultipleEntryCount|EntryType|InputValueName|ScreenEntryValue
      MERGE|ElementEntryValue|Vision Corp|E3143464|Commutation Allowance|2019/04/01|1|E|Periodicity|Periodically
      MERGE|ElementEntryValue|Vision Corp|E3143464|Commutation Allowance|2019/04/01|1|E|Amount|1000
    3. 保存名为 ElementEntry.dat 的文件。或者,下载并编辑 ElementEntry.dat 文件。
    4. 压缩 ElementEntry.dat 文件。
    5. 使用 HCM 数据加载程序上载压缩文件
    6. 单击刷新,直到数据集完成处理。它将有加载错误。
    7. 单击对象总数计数。
    8. 单击“Total Objects(总对象)”

    9. 前三个引用名称和值与源关键字、连接的用户关键字以及导入和加载状态一起显示。
    10. 对象状态

    后续步骤

    以下教程将进一步扩展您的 HCM 数据加载程序知识:

    有关 HDL 和 HSDL 的最新教程发布在 Cloud Customer Connect 的以下主题中:

    有关详细信息,请参阅帮助指南:

    致谢

    更多学习资源

    通过 docs.oracle.com/learn 浏览其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。

    有关产品文档,请访问 Oracle 帮助中心