Informatica存储库:如何获取SQL转换中存储的SQL查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Informatica存储库:如何获取SQL转换中存储的SQL查询相关的知识,希望对你有一定的参考价值。

我想使用INFA repo表获取SQL转换中使用的以下sql查询。在映射中 - > sql transformation - > SQL ports - > SQL查询

答案

您要查找的数据位于表OPB_METAEXT_VAL.PM_VALUE上的OPB_METAEXT_VAL列中

SELECT *
FROM OPB_METAEXT_VAL
WHERE METAEXT_NAME='SQL_Query' 

大型报表可能分布在多行中,因此按OPB_METAEXT_VAL.LINE_NO排序。

您可以加入OPB_SUBJECT上的OPB_SUBJECT.SUBJ_ID = OPB_METAEXT_VAL.SUBJECT_ID获取文件夹名称。您也可以加入OPB_WIDGET_INST上的OPB_WIDGET_INST.WIDGET_ID = OPB_METAEXT_VAL.OBJECT_ID AND OPB_WIDGET_INST.REF_VERSION_NUMBER = OPB_METAEXT_VAL.VERSION_NUMBER以获得有关转型的其他详细信息。

然后,您可以进一步加入其他表,例如,如果您需要文件夹名称,工作流/工作组,会话,映射,转换,SQL和数据库连接,请使用以下内容:

  WITH OPB_SESS_CNX_REFS_WRAPPER AS
(
    SELECT OPB_SESS_CNX_REFS.*,
    rank() over(
           partition BY 
                  WORKFLOW_ID, 
                  SESSION_ID, 
                  SESSION_INST_ID, 
                  PROC_INSTANCE_ID  
           order by 
                  VERSION_NUMBER DESC, 
                  SESS_WIDG_INST_ID ASC 
    ) AS  THE_RANK
    FROM OPB_SESS_CNX_REFS
)
SELECT OPB_SUBJECT.SUBJ_NAME AS FOLDER
, WORKFLOW.TASK_NAME AS WORKFLOW_WORKLET_NAME
, OPB_TASK.TASK_NAME AS SESSION_NAME
, OPB_MAPPING.MAPPING_NAME
, OPB_WIDGET_INST.INSTANCE_NAME
, OPB_METAEXT_VAL.PM_VALUE
, OPB_METAEXT_VAL.LINE_NO
,(CASE WHEN OPB_SESS_CNX_REFS_WRAPPER.REF_OBJECT_VALUE IN  ('$Target','$Source') THEN OPB_SESS_CNX_REFS_WRAPPER.REF_OBJECT_VALUE ||'-->' ||OPB_TASK_ATTR.ATTR_VALUE
       ELSE NVL(OPB_SESS_CNX_REFS_WRAPPER.REF_OBJECT_VALUE,OPB_CNX.OBJECT_NAME) END) AS CNX_NAME
FROM       OPB_MAPPING      
INNER JOIN OPB_SUBJECT               ON (OPB_MAPPING.SUBJECT_ID = OPB_SUBJECT.SUBJ_ID 
                                     AND OPB_MAPPING.IS_VISIBLE=1)        
INNER JOIN OPB_WIDGET_INST           ON (OPB_WIDGET_INST.MAPPING_ID = OPB_MAPPING.MAPPING_ID 
                                     AND OPB_WIDGET_INST.VERSION_NUMBER = OPB_MAPPING.VERSION_NUMBER)
LEFT JOIN OPB_WIDGET                 ON (OPB_WIDGET_INST.WIDGET_ID = OPB_WIDGET.WIDGET_ID 
                                     AND OPB_WIDGET.IS_VISIBLE = OPB_MAPPING.IS_VISIBLE)
INNER JOIN OPB_METAEXT_VAL           ON (OPB_METAEXT_VAL.OBJECT_ID = OPB_WIDGET_INST.WIDGET_ID
                                     AND OPB_METAEXT_VAL.VERSION_NUMBER = OPB_WIDGET_INST.REF_VERSION_NUMBER
                                     AND OPB_METAEXT_VAL.METAEXT_NAME='SQL_Query')   
INNER JOIN OPB_SESSION               ON (OPB_SESSION.MAPPING_ID = OPB_MAPPING.MAPPING_ID)
INNER JOIN OPB_TASK                  ON (OPB_SESSION.SESSION_ID = OPB_TASK.TASK_ID 
                                     AND OPB_TASK.IS_VISIBLE = OPB_MAPPING.IS_VISIBLE 
                                     AND OPB_SESSION.VERSION_NUMBER = OPB_TASK.VERSION_NUMBER)
INNER JOIN OPB_TASK         WORKFLOW ON (OPB_TASK.RU_PARENT_ID = WORKFLOW.TASK_ID 
                                     AND WORKFLOW.IS_VISIBLE = OPB_MAPPING.IS_VISIBLE)
INNER JOIN OPB_SWIDGET_INST          ON (OPB_SESSION.SESSION_ID =   OPB_SWIDGET_INST.SESSION_ID 
                                     AND OPB_SESSION.VERSION_NUMBER = OPB_SWIDGET_INST.VERSION_NUMBER 
                                     AND OPB_SWIDGET_INST.INSTANCE_ID = OPB_WIDGET_INST.INSTANCE_ID )
LEFT JOIN OPB_SESS_EXTNS             ON (OPB_SWIDGET_INST.SESSION_ID = OPB_SESS_EXTNS.SESSION_ID 
                                     AND OPB_SWIDGET_INST.VERSION_NUMBER = OPB_SESS_EXTNS.VERSION_NUMBER 
                                     AND OPB_SWIDGET_INST.SESS_WIDG_INST_ID = OPB_SESS_EXTNS.SESS_WIDG_INST_ID)                 
LEFT JOIN OPB_SESS_CNX_REFS_WRAPPER  ON (OPB_SESS_CNX_REFS_WRAPPER.THE_RANK = 1
                                     AND OPB_SESS_EXTNS.SESSION_ID = OPB_SESS_CNX_REFS_WRAPPER.SESSION_ID 
                                     AND OPB_SESS_EXTNS.PROC_INSTANCE_ID = OPB_SESS_CNX_REFS_WRAPPER.PROC_INSTANCE_ID)       
LEFT JOIN  OPB_CNX                   ON (OPB_SESS_CNX_REFS_WRAPPER.REF_OBJECT_TYPE = OPB_CNX.OBJECT_TYPE 
                                     AND OPB_SESS_CNX_REFS_WRAPPER.REF_OBJECT_SUBTYP = OPB_CNX.OBJECT_SUBTYPE 
                                     AND OPB_SESS_CNX_REFS_WRAPPER.REF_OBJECT_ID = OPB_CNX.OBJECT_ID)
LEFT JOIN  OPB_MMD_TASK_ATTR         ON (OPB_SESS_CNX_REFS_WRAPPER.REF_OBJECT_VALUE = SUBSTR(OPB_MMD_TASK_ATTR.ATTR_NAME,1,7) 
                                     AND OPB_SESS_CNX_REFS_WRAPPER.REF_OBJECT_VALUE IN ('$Target','$Source'))
LEFT JOIN  OPB_TASK_ATTR             ON (OPB_TASK_ATTR.TASK_TYPE = OPB_MMD_TASK_ATTR.OBJECT_TYPE_ID 
                                     AND OPB_TASK_ATTR.ATTR_ID = OPB_MMD_TASK_ATTR.ATTR_ID 
                                     AND OPB_TASK_ATTR.TASK_ID = OPB_TASK.TASK_ID 
                                     AND OPB_TASK_ATTR.VERSION_NUMBER = OPB_SWIDGET_INST.VERSION_NUMBER)
WHERE OPB_SUBJECT.SUBJ_NAME = '<YOUR FOLDER NAME>'
ORDER BY OPB_SUBJECT.SUBJ_NAME
, WORKFLOW.TASK_NAME
, OPB_TASK.TASK_NAME
, OPB_MAPPING.MAPPING_NAME
, OPB_WIDGET_INST.INSTANCE_NAME
, OPB_METAEXT_VAL.LINE_NO

以上是关于Informatica存储库:如何获取SQL转换中存储的SQL查询的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 存储过程在 Informatica 存储过程转换映射中的会话结束时运行

Informatica参考

在INFORMATICA表达式转换中添加列

Informatica抽取SQL Server数据库乱码

Informatica_第一个例子

获取逗号分隔值到informatica中的多行?