有没有办法在 Informatica 中搜索所有映射、会话等以查找 SQL 覆盖中包含的文本字符串?
例如,假设我知道某个存储过程 ( SP_FOO
) 在 INFA 进程的某处被调用,但我不知道具体在哪里。在某个地方,我认为在调用它的源或目标上有一个 Post SQL。我可以搜索包含 Post SQL 的所有会话SP_FOO
吗?(类似于我可以grep
用源代码做的事情。)
有没有办法在 Informatica 中搜索所有映射、会话等以查找 SQL 覆盖中包含的文本字符串?
例如,假设我知道某个存储过程 ( SP_FOO
) 在 INFA 进程的某处被调用,但我不知道具体在哪里。在某个地方,我认为在调用它的源或目标上有一个 Post SQL。我可以搜索包含 Post SQL 的所有会话SP_FOO
吗?(类似于我可以grep
用源代码做的事情。)
您可以使用存储库查询来查询 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
如果您有任何问题,请告诉我。
另一种不太科学的方法是将工作流导出为 XML,并使用文本编辑器在其中搜索存储过程名称。
如果您对 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%')
是的。有一个基于 Java 的小型工具,称为 Informatica Meta Query。
使用该工具,您可以搜索 Informatica 元数据表中存在的任何信息。
如果找不到该工具,您可以直接在 Informatica Meta 数据表中编写查询以获取所需信息。
向 Data Origin 和 Sandeep 提供的解决方案添加更多行。
强烈建议不要直接查询存储库表。相反,您可以创建同义词或视图,然后查询这些对象以避免对代表表造成任何损坏。在我们的 dev/prod 环境中,应用程序程序员没有被授予对 repo 的任何直接访问权限。表。
由于查询 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 +"'");
}
}