2

有没有办法在 Informatica 中搜索所有映射、会话等以查找 SQL 覆盖中包含的文本字符串?

例如,假设我知道某个存储过程 ( SP_FOO) 在 INFA 进程的某处被调用,但我不知道具体在哪里。在某个地方,我认为在调用它的源或目标上有一个 Post SQL。我可以搜索包含 Post SQL 的所有会话SP_FOO吗?(类似于我可以grep用源代码做的事情。)

4

6 回答 6

3

您可以使用存储库查询来查询 REPO 表(如果您有足够的访问权限)以获取与所有映射、转换、会话等相关的数据。

请使用以下链接获取几乎所有类型的回购查询。您的答案可以在下面的链接中找到。

https://uisapp2.iu.edu/confluence-prd/display/EDW/Querying+PowerCenter+data

select *--distinct sbj.SUBJECT_AREA,m.PARENT_MAPPING_NAME
from REP_SUBJECT sbj,REP_ALL_MAPPINGS m,REP_WIDGET_INST w,REP_WIDGET_ATTR wa
where sbj.SUBJECT_ID = m.SUBJECT_ID AND
m.MAPPING_ID = w.MAPPING_ID AND
w.WIDGET_ID = wa.WIDGET_ID
and sbj.SUBJECT_AREA in ('TLR','PPM_PNLST_WEB','PPM_CURRENCY','OLA','ODS','MMS','IT_METRIC','E_CONSENT','EDW','EDD','EDC','ABS')
and (UPPER(ATTR_VALUE)  like '%PSA_CONTACT_EVENT%'
--  or UPPER(ATTR_VALUE)  like '%PSA_MEMBER_CHARACTERISTIC%'
 -- or UPPER(ATTR_VALUE)  like '%PSA_REPORTING_HH_CHRSTC%'
--  or UPPER(ATTR_VALUE)  like '%PSA_REPORTING_MEMBER_CHRSTC%'
     )
--and m.PARENT_MAPPING_NAME like '%ARM%'
order by 1

如果您有任何问题,请告诉我。

于 2013-02-02T08:39:58.987 回答
2

另一种不太科学的方法是将工作流导出为 XML,并使用文本编辑器在其中搜索存储过程名称。

于 2012-06-30T21:10:09.037 回答
2

如果您对 informatica 存储库所在的架构具有读取权限,请尝试此操作。

SELECT DISTINCT f.subj_name folder, e.mapping_name, object_type_name,
                b.instance_name, a.attr_value
           FROM opb_widget_attr a,
                opb_widget_inst b,
                opb_object_type c,
                opb_attr d,
                opb_mapping e,
                opb_subject f
          WHERE a.widget_id = b.widget_id
            AND b.widget_type = c.object_type_id
            AND (   object_type_name = 'Source Qualifier'
                 OR object_type_name LIKE '%Lookup%'
                )
            AND a.widget_id = b.widget_id
            AND a.attr_id = d.attr_id
            AND c.object_type_id = d.object_type_id
            AND attr_name IN ('Sql Query')--, 'Lookup Sql Override')
            AND b.mapping_id = e.mapping_id
            AND e.subject_id = f.subj_id
            AND a.attr_value is not null
            --AND UPPER (a.attr_value) LIKE UPPER ('%currency%')
于 2012-08-29T17:27:16.767 回答
0

是的。有一个基于 Java 的小型工具,称为 Informatica Meta Query。

使用该工具,您可以搜索 Informatica 元数据表中存在的任何信息。

如果找不到该工具,您可以直接在 Informatica Meta 数据表中编写查询以获取所需信息。

于 2012-06-26T17:50:42.713 回答
0

向 Data Origin 和 Sandeep 提供的解决方案添加更多行。

强烈建议不要直接查询存储库表。相反,您可以创建同义词或视图,然后查询这些对象以避免对代表表造成任何损坏。在我们的 dev/prod 环境中,应用程序程序员没有被授予对 repo 的任何直接访问权限。表。

于 2013-05-05T23:17:56.617 回答
0

由于查询 Informatica 数据库不是最好的主意,我建议您使用 Repository Manager 将文件夹中的所有工作流导出到 xml 中。从 Rep Mgr 中,您可以一次选择所有这些并立即导出它们。然后编写一个java程序从你拥有的xml中搜索模式。

我在这里编写了一个示例程序,请根据您的要求对其进行修改:使用工作流名称(specFileName)制作一个规范文件。

main()
{ 
    try {
        File inFile = new File(specFileName);
        BufferedReader reader = new BufferedReader(newFileReader(infile));

        String tectToSearch = '<YourString>';
        String currentLine;

        while((currentLine = reader.readLine()) != null)
        {
            //trim newline when comparing with String
            String trimmedLine = currentLine.trim();
            if(currentline has the string pattern)
            {
             SOP(specFileName); //specfile name
            }
        }
        reader.close();
    }
    catch(IOException ex)
    {
        System.out.println("Error reading to file '" + specFileName +"'");

    }
}
于 2014-08-13T09:47:41.867 回答