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查询的主要内容,如果未能解决你的问题,请参考以下文章