2016-01-07 5 views
0

В настоящее время я работаю над сценарием в Informatica PowerCenter дизайнера, где ситуация выглядит следующим образом:Informatica кодирование

SQ1: Я вытягивать записи сотрудников в соответствии с критериями, имеющим слой работников в зависимости от их иерархии (отношение клиента директор), который является первым источником отборочным и в котором я делаю SQL переопределение для извлечения данных из 3 таблиц, и для тех отобранных сотрудников я должен тянуть некоторую другую информацию, например:

SQ2: какие отношения с клиентами они обрабатывают, находящиеся в отдельный исходный классификатор и

SQ3 некоторые персональные данные из их профиля, который находится в третьем квалификаторе источника.

У меня есть одно отображение, в котором есть три критерия источника, как описано выше, и во всех них я использую переопределение SQL. Мой вопрос в том, что данные, которые я вытащил в первом квалификаторе, приносят подмножество полных записей сотрудников, но в Source qualifier 2 и исходном квалификаторе 3 мне нужно вытащить все данные о сотрудниках, а затем сделать соединение на employee_id в двух участниках, чтобы, наконец, собирать данные для слоя сотрудников, которые поступают из исходного квалификатора 1. Я хочу, чтобы, если каким-то образом я сохраняю идентификаторы сотрудников и SQ1 и использую их в SQ2 и SQ3, чтобы я извлекал данные только для подмножества сотрудников, проблема в том, что я не могу разбить отображение и не могу добавить код для выбора подмножества из SQ1 bc, это будет повторение кода и длительное время работы, а также количество записей около миллиона. Я не могу найти способ выполнить вышеизложенное, поэтому я прошу о помощи здесь.

Я тяну данные от db2 и работаю в дизайнере PowerCenter 9.5.1. Я буду благодарен, если я смогу получить руководство по вышеуказанному вопросу

+0

Один из способов сделать это - запустить предварительную сессию, которая запускает ваш запрос в SQ1 и загружает временную таблицу. Затем в вашем сопоставлении у вас есть только 2 исходных квалификатора SQ2 и SQ3, которые используют эту временную таблицу. – vmachan

+0

Почему вы не обрабатываете SQ2 и SQ3 в поиске? – pgruetter

ответ

0

Что вы можете сделать, это если вся таблица находится в базе данных, вы можете вытащить исходные таблицы в один исходный определитель, а затем переопределить SQL и создать соединение , Таким образом, вместо трех разных спецификаторов источника вы можете иметь один квалификатор источника.

0

Я предполагаю, что у вас есть три отдельных классификатора источника, поскольку данные присутствуют в разных базах данных. Если нет, то соединение с тремя разными квалификаторами источника (вам нужно будет использовать 2 участника) очень дорого. Есть несколько способов, вы можете сделать это:

  1. разделить отображение на первом этапе данные, а затем использовать этот плацдарм слой в качестве источника для выполнения более сложной операции

  2. Определите таблицу вождения. Поскольку количество записей в SQ2 и SQ3 больше, я предполагаю, что они могут быть ведущим столом. Используйте поиск для SQ1 (С момента своего меньшего размера таблицей, время кэша будет не очень большое)

Я бы предложил вам использовать промежуточный слой, чтобы извлечь и поставить данные, а затем преобразовать его. Попробуйте выполнить объединение баз данных (или поисковых запросов) столько, сколько сможете, вместо того, чтобы присоединяться к прикладному уровню.

0

Рассмотрите возможность использования поиска трубопровода в качестве запроса для вашего SQ1 и используйте его в конвейере, который соединяет SQ2 и SQ3.

Использование для поиска трубопроводов можно найти по адресу:

https://marketplace.informatica.com/solutions/performance_tuning_pipeline_lookup

Позвольте мне знать, если это помогает.