Как получить только одну запись для каждой двойной строки идентификатора в datastage

Я имею

**Table**

Name,RNo,M1,M2,M3,M4

Raj,1,25,26,Null,Null

**File**

Name,RNo,M,T

Raj,1,100,M3

Raj,1,200,M4

Если я присоединяюсь к таблице с выходным файлом необходимо как

Name,RNo,M1,M2,M3,M4

Raj,1,25,26,100,200

Поскольку данные поступают из файла, я не могу получить данные по запросу. здесь не могу присоединиться к данным

я получаю данные как

Name,RNo,M1,M2,M3,M4

Raj,1,25,26,100,NULL

Raj,1,25,26,NULL,200

3 ответа

Попробуйте это решение:

1) Прочитайте последовательный файл и используйте стадию разворота с параметром "Горизонтальное вращение", чтобы преобразовать строки в столбцы. Теперь выходной будет Радж, 1 100 200

2) Используйте этап поиска с первичными данными, поступающими с шага 1, и справочными данными, полученными из таблицы, и поиском на основе RNO в качестве ключа.

После шага 2 вывод будет Raj, 1, 25, 26, 100, 200

Вы можете использовать условное агрегирование с max, case а также group by:

select t1.name, t1.rno, t1.M1, t1.M2, 
    max(case when f.t = 'M3' then f.M end) M3,
    max(case when f.t = 'M4' then f.M end) M4
from table1 t1
    join file f on t1.name = f.name and t1.rno = f.rno
group by t1.name, t1.rno

Поскольку вы уже достигли этого уровня, проще всего было бы использовать агрегатор.

Предполагая, что значения M3 и M4 являются числовыми 1. сначала преобразуйте все NULL в нули.

  1. Используйте этап и группу агрегатора на основе всех других столбцов (сумма (M3) и сумма (M4)

  2. В идеале это должно дать вам то, что вы ищете

Другим способом сделать это было бы использование нескольких просмотров файла.

  1. Исходный этап будет извлекать данные из исходной таблицы.

  2. Сначала ищите M1 (условие поиска будет иметь все ключи И T=M1). Получите значение M1 из файла и сохраните его в новом столбце с именем M1.

  3. Затем другой поиск для M2(условие поиска будет иметь все ключи И T=M2). Получите значение M1 из файла и сохраните его в новом столбце с именем M1.

  4. .... и так далее для всех M столбцов, которые вам понадобятся. Так что к концу все выглядит взлеты; если вы делаете, как ожидалось - тогда ваша конечная ссылка на выход должна быть тем выходом, который вы искали

Оба шага имеют свои плюсы и минусы.

Ashish

Другие вопросы по тегам