本主题介绍使用 EPM 集成代理将数据从 Oracle Enterprise Performance Management Cloud 应用程序加载到内部部署数据仓库中所需的步骤。可使用两种不同的方法加载数据:
分别按“应用程序”选项中的表名和“应用程序维”中的表列加载数据。(EPM 集成代理会自动生成插入查询)。
使用自定义 SQL 插入查询按表名和表列加载数据。
要使用 EPM 集成代理将数据从 EPM 云应用程序加载到内部部署数据仓库中:
创建用于存放导出数据的 RDBMS 表。
在此示例中,名为 VISION_DATA 的表包含 Vision 应用程序的所有维和另外两个名为 BATCH_ID 和 DATA_AMOUNT 的列。BATCH_ID 列用于填充来自 EPM 云的数据集成进程 ID。DATA_AMOUNT 列用于填充“金额”列。
将表内容导出到 CSV 文件用于应用程序注册,该文件包含列名称的标题记录。
CSV 输出文件看起来如下所示:
假定这些列是目标表列的确切表示。将根据列名称生成 SQL 插入语句。
依次导航到数据交换、数据集成选项卡和操作菜单,然后选择应用程序。
在应用程序页上,通过完成以下操作来注册数据导出应用程序,以便执行回写过程。
在类别中,选择数据导出。
在类型中,选择数据导出到内部部署数据库。
上传并选择在步骤 2 中创建的文件。
将创建“数据导出”应用程序,并且应用程序的名称与用于注册应用程序的文件名匹配。
在应用程序页上,单击应用程序右侧的 ,然后选择应用程序详细信息。
选择维选项卡。
应用程序注册过程会自动为 CSV 文件中的所有列分配“常规”维分类,并且还会相应地分配“数据表列名称”。
对帐户、金额、期间和年列进行相应分类:
如果某列映射到导入格式中的源列,并且源字段始终有值,则将该列分类为帐户。在以下示例中,"ACCOUNT" 列分类为“帐户”。此维的“数据表列名称”分类为 "ACCOUNT"。
将 DATA_AMOUNT 分类为“金额”,并将数据表列名称保留为空。
将 YEAR 分类为“年”,并将数据表列名称保留为空。
将 PERIOD 分类为“期间”,并将数据表列名称保留为空。
从应用程序页中,单击应用程序右侧的 ,然后选择应用程序详细信息。
选择选项选项卡。
指定表名、JDBC URL和数据库凭据。
将插入查询字段保留为空。如果未指定“插入查询”,则假定应用程序维完全一致地表示目标数据库列的名称。应用程序维应包含在回写过程中需要填充的目标表中每个列。否则集成会失败。
在源应用程序和目标 EPM 云应用程序之间创建集成。
以下示例显示了一个源 "Vision Planning" 应用程序和一个名为 "ORACLE_DWH" 的目标数据导出应用程序。
映射所有列,并将 "copysource()" 用作除“金额”和 "BATCH_ID" 以外的所有维的目标表达式。
在成员映射中,将一个表达式应用于 "BATCH_ID"。“金额”维没有目标表达式。
从映射成员中,使用 TDATASEG_T 表的 LOADID 列为 BATCH_ID 创建 #SQL 映射。
依次选择选项和筛选器,根据需要指定任何源 Planning 应用程序筛选器。
在以下示例中,未选择任何筛选器,因为 Vision 应用程序的所有数据(起始/结束期间范围的数据)都导入并导出到目标应用程序。
依次选择选项和源多维数据集,指定源多维数据集(规划类型)然后在期间映射类型中,指定默认。然后单击保存,如下所示。
在可以访问目标数据库的内部部署主机上启动 EPM 集成代理。
在数据集成中,在给定期间范围内运行集成。
在以下示例中,选择了 1 月 16 日到 12 月 16 日这一期间:
观察内部部署代理从 EPM 云提取作业详细信息,等待该过程完成。
从进程详细信息中,打开日志文件,并注意查看导出的数据记录总数和插入查询语句:
验证记录已成功导出到目标数据库中。
请注意,云进程 ID 已成功映射到数据库中的 BATCH_ID 列。
在 EPM 云中使用插入查询按名称 VISION_DATA_2 将相同数据导出到另一个表。
通过 INSERT 查询,您可以使用复杂的 SQL 表达式映射数据库的列。SQL 表达式针对目标数据库执行,而不是针对云数据库 (Oracle) 执行。这样,您就可以灵活地使用特定于数据库类型(例如 MS SQL Server、MYSQ 等)的 SQL 表达式。您还可以使用子查询基于另一个表来推导列值。
在以下示例中:
BATCH_ID 重命名为:BATCH_NUMBER。
ENTITY 重命名为:ORGANIZATION。
删除了 YEAR 和 PERIOD 列,并创建了 PERIOD_NAME 列以在同一列中填充年和期间。
您无需使用 CSV 文件注册应用程序,因为您已经使用另一组列名称注册了应用程序。使用 SQL 插入查询的优势在于,您可以使用已注册的应用程序的列名称通过 SQL 插入查询映射实际列名称。因此,应用程序包含的维可以与目标数据库的实际列名称完全不同。应用程序维还可以仅表示目标数据库表中填充的一部分实际列。
有关详细信息,请参阅:使用自定义 INSERT 查询进行回写。
INSERT 查询中的值通过将目标维名称括在 ~~(波形符)内来表示。例如,如果数据导出应用程序中名称为 ABC 的维需要映射到数据库中的 DEF 列,则将 DEF 列的值指定为 ~ABC~。
使用以下值创建新查询:
将 BATCH_ID 重新映射到 BATCH_NUMBER。
使用前缀 Acc,例如用于 ACCOUNT。
使用前缀 Org,例如用于 ORGANISATION。
将期间和年串联为 PERIOD_NAME。
使用前缀 Prd,例如用于 PRODUCT。
将 DATA_AMOUNT 舍入到 2 位小数。
在应用程序详细信息中,指定已注册的数据导出应用程序中的查询名称,并将表名保留为空。
再次对某个期间范围运行集成流程,并等待该流程成功完成。
验证是否已正确填充目标表。