2

InformaticaのすべてのマッピングやセッションなどでSQLオーバーライドに含まれるテキスト文字列を検索する方法はありますか?

たとえば、特定のストアドプロシージャ(SP_FOO)がINFAプロセスのどこかで呼び出されていることはわかっているが、正確な場所がわからないとします。どこかに、それを呼び出すソースまたはターゲットにPostSQLがあると思います。すべてのセッションでPostSQLを含むものを検索できます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

Data Origin と Sandeep が提供するソリューションにさらに数行追加します。

リポジトリ テーブルを直接クエリしないことを強くお勧めします。代わりに、シノニムまたはビューを作成し、それらのオブジェクトをクエリして、rep テーブルへの損傷を回避できます。私たちの開発/本番環境では、アプリケーション プログラマーはリポジトリへの直接アクセスを許可されていません。テーブル。

于 2013-05-05T23:17:56.617 に答える
0

はい。Informatica Meta Query と呼ばれる小さな Java ベースのツールがあります。

このツールを使用して、Informatica メタデータ テーブルに存在する情報を検索できます。

そのツールが見つからない場合は、Informatica メタデータ テーブルにクエリを直接記述して、必要な情報を取得できます。

于 2012-06-26T17:50:42.713 に答える
0

Informatica データベースにクエリを実行するのは最善の方法ではないため、Repository Manager を使用してフォルダー内のすべてのワークフローを xml にエクスポートすることをお勧めします。Rep Mgr から、それらすべてを一度に選択して、一度にエクスポートできます。次に、持っている xml からパターンを検索する Java プログラムを作成します。

ここにサンプル プログラムを書きました。必要に応じて変更してください。ワークフロー名 (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 に答える