• Informatica参考


    近日在做informatica项目时,要求参照informatica中原有的mapping方式实现。那么当知道源表或者目标表或者是映射时,如何快速的找出分散在不同的Subject的mapping或者是三者的关系?方法就是通过查询informatica的元数据表实现。

    ??????? 与ODI一样,informatica也会有自己的独立存储储存开发过程中产生的主题、源、目标、转换等和一些系统表来支撑informatica环境的正常运行。知道了原理,又不想在开发界面上像无头苍蝇的乱找,就花了点时间研究informatica的数据库。

    ??? OPB开头的表通常就是用于存储开发过程产生的源、目标、映射、转换、会话、工作流等和运行过程产生的session,看表的名字基本上都能猜测出用途,常用作查询的有:opb_subject、opb_mapping、opb_targ、OPB_SRC、opb_widget_inst。

    opb_subject定义了主题,informatica中的开发是按照主题进行的。一个主题一个folder。

    opb_mapping定义了映射,是informatica开发过程中最为复杂的部分,ETL的过程反映在映射里,里面会涉及数据抽取、转换、清洗。

    opb_targ定义了目标表

    OPB_SRC定义了源数据。

    opb_widget_inst定义了组件的信息,一个mapping的源、目标、转换三者之间的关系可通过此表找到。

    以下列出常用的方法:

    1)知道目标表查找所有的映射:

    SELECT DISTINCT m.mapping_name
    ? FROM opb_widget_inst w, opb_mapping m, opb_targ t
    ?WHERE m.mapping_id = w.mapping_id
    ?? AND t.target_id = w.widget_id
    ?? AND t.target_name = 'W_OFFER_D'
    ?? AND w.widget_type = 2 --限定为目标表

    2、找出源、目标、映射、主题、工作流、会话之间的关系

    SELECT f.subj_name AS folder_name,
    ?????? wf.task_name AS workflow_name,
    ?????? se.instance_name AS session_name,
    ?????? m.mapping_name,
    ?????? src.instance_name AS source_name,
    ?????? tgt.instance_name AS target_name
    ? FROM opb_subject f,
    ?????? opb_task wf,
    ?????? (SELECT workflow_id,
    ?????????????? instance_id,
    ?????????????? task_id,
    ?????????????? task_type,
    ?????????????? instance_name,
    ?????????????? MAX(version_number)
    ????????? FROM opb_task_inst sess
    ???????? WHERE sess.task_type = 68
    ???????? GROUP BY workflow_id,
    ????????????????? instance_id,
    ????????????????? task_id,
    ????????????????? task_type,
    ????????????????? instance_name) se,
    ?????? (SELECT session_id, mapping_id, MAX(version_number)
    ????????? FROM opb_session
    ???????? GROUP BY session_id, mapping_id) s,
    ?????? opb_mapping m,
    ?????? (SELECT mapping_id, instance_name, widget_type, MAX(version_number)
    ????????? FROM opb_widget_inst
    ???????? GROUP BY mapping_id, instance_name, widget_type) src,
    ?????? (SELECT mapping_id, instance_name, widget_type, MAX(version_number)
    ????????? FROM opb_widget_inst
    ???????? GROUP BY mapping_id, instance_name, widget_type) tgt
    ?WHERE /*wf.is_visible = 1
    ?? AND*/
    ?wf.subject_id = f.subj_id
    ?AND se.workflow_id = wf.task_id
    ?AND wf.task_type = 71
    ?AND se.task_id = s.session_id
    ?AND s.mapping_id = m.mapping_id
    -- AND m.is_visible = 1
    ?AND src.mapping_id = m.mapping_id
    ?AND src.widget_type = 1
    ?AND tgt.mapping_id = m.mapping_id
    ?AND tgt.widget_type = 2
    ?AND f.subj_id = 38

    此外,映射和源表的关系也可以通过以下sql执行:

    SELECT sr.source_name, NULL, s.mapping_name
    ? FROM opb_mapping s, opb_dbds od, opb_src sr
    WHERE s.subject_id IN (43, 38)
    ?? AND sr.dbdid = od.dbd_id
    ?? AND od.mapping_id = s.mapping_id
    ?? AND (s.mapping_name LIKE 'SDE%' OR s.mapping_name LIKE 'SIL%')
    ORDER BY s.mapping_name

    查看Source Quelifier的sql可从OPB_WIDGET_ATTR表查询,attri_id=1时的attri_value

    查看会话级别的pre/post sql可从OPB_SWIDGET_ATTR表查询

    数据库中还有一些REP开头的表,是用于支撑informatica运行的 基本信息表。
    ---------------------
    作者:qingqingxuelang
    来源:CSDN
    原文:https://blog.csdn.net/qingqingxuelang/article/details/7689016
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    oracle参数文件(1)
    提高HTML5 canvas性能的几种方法(转)
    基于TouchVG开发的Windows矢量图形编辑器
    使用rapidjson实现了TouchVG的序列化适配器类
    关于用例的几个问题分析
    重温《UML风格》
    API设计准则(转)
    UML初级培训录音内容
    暂定的UML培训大纲
    基于Android平台多个Icon的APk——实现多程序入口总结(转)
  • 原文地址:https://www.cnblogs.com/jycjy/p/11303264.html
Copyright © 2020-2023  润新知