You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ODI12c中如何从数据存储别名获取实际资源名称?

在ODI12c中通过数据存储别名获取实际资源名称(平面文件名)

针对你遇到的问题——用odiRef.getObjectName()只能拿到数据存储别名,无法获取关联的实际资源名称(平面文件名),可以通过以下几种方法解决:

方法1:直接查询ODI元数据视图

ODI的元数据存储在工作库的Oracle表中,通过关联数据存储和资源的核心表即可获取对应关系:

  1. 关键关联表说明:
    • SNP_TABLE:存储数据存储的基础信息,ALIAS字段是你设置的别名,RESOURCE_ID字段关联到资源表
    • SNP_RESOURCE:存储资源(如平面文件)的实际名称,RESOURCE_NAME字段就是你需要的实际文件名
  2. 查询语句示例:
SELECT r.RESOURCE_NAME
FROM SNP_TABLE t
INNER JOIN SNP_RESOURCE r 
    ON t.RESOURCE_ID = r.RESOURCE_ID
WHERE t.ALIAS = '你的数据存储别名'
-- 可选:添加模型过滤避免同名别名冲突
AND t.I_MODEL = (SELECT I_MODEL FROM SNP_MODEL WHERE CODE = '你的模型代码')

你可以将这个查询配置为ODI变量的「SQL SELECT」类型,执行后就能获取对应的资源名称。

方法2:使用ODI内置的odiRef.getResourceName()方法

ODI的odiRef对象提供了专门获取资源名称的方法,无需手动查询元数据表:

  • 如果是在接口步骤上下文中(比如加载/转换逻辑里),直接调用无参方法即可获取当前数据存储的资源名称:
    odiRef.getResourceName()
    
  • 如果是在包、变量等独立上下文中,需要指定数据存储的完整标识(模型代码+别名):
    odiRef.getResourceName('TABLE', '模型代码.数据存储别名', 'D')
    
    参数说明:
    • 第一个参数'TABLE'表示对象类型为数据存储
    • 第二个参数是数据存储的完整标识(模型代码+别名,用点分隔)
    • 第三个参数'D'表示目标对象为数据存储(Data Store)

方法3:快速验证关联关系的小技巧

如果不确定数据存储的关联资源ID,可以先查询SNP_TABLE表确认:

SELECT RESOURCE_ID, ALIAS, TABLE_NAME FROM SNP_TABLE WHERE ALIAS = '你的数据存储别名'

拿到RESOURCE_ID后,直接查询SNP_RESOURCE表就能看到对应的RESOURCE_NAME。

内容的提问来源于stack exchange,提问作者ume05rw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 15:42:36