zoukankan      html  css  js  c++  java
  • 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
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    LeetCode 123. Best Time to Buy and Sell Stock III (stock problem)
    精帖转载(关于stock problem)
    LeetCode 122. Best Time to Buy and Sell Stock II (stock problem)
    LeetCode 121. Best Time to Buy and Sell Stock (stock problem)
    LeetCode 120. Triangle
    基于docker 搭建Elasticsearch5.6.4 分布式集群
    从零开始构建一个centos+jdk7+tomcat7的docker镜像文件
    Harbor实现容器镜像仓库的管理和运维
    docker中制作自己的JDK+tomcat镜像
    docker镜像制作---jdk7+tomcat7基础镜像
  • 原文地址:https://www.cnblogs.com/jycjy/p/11303264.html
Copyright © 2011-2022 走看看