Мы шесть улой таблицы с образцом (например) структура, как (где каждая таблица имеет миллионы торговых записей)Hive Объединение нескольких таблиц для создания горизонтальной компоновки
Table1
MerchntId ,field1, field2
Table2
MerchantId, field3,field4
Table3
MerchantId, field5,field6,field7
Table4
MerchantId, field8,field9,field10
Table5
MerchantId, field11, field12, field13
и так далее
Требование состоит в том, чтобы создать горизонтальный макет, чтобы принимать всех уникальных торговцев, где по крайней мере одно поле имеет значение для продавца. . Торговец может иметь или не присутствовать в других таблицах. (Для торговца могут быть записи в других таблицах или могут не быть есть)
Финальный стол MerchntId, поле1, поле2, field3, Field4,
Field5, field6, field7, field8, field9, field10, field11, field12, field13
выход должен быть как после присоединения
i) 101 abc def ghi
ii) 102 ghj fert hyu ioj khhh jjh ddd aas fff kkk fff vvv ff
для случая (I) только три поля имеют значения для случая (б) все поля имеют значения
Для этого мы делаем FULL OUTER JOIN на merchantId для двух таблиц и так далее, а затем создать финальный стол
Есть ли лучший подход делает это?
например. мой нынешний подход
SELECT distinct
(case when a.MerchntId IS NOT NULL then a.MerchntId else (case when
b.MerchntId IS NOT NULL
then b.MerchntId else '' end) end) as MerchntId,
(case when a.field1 IS NOT NULL then a.field1 else '' end) as field1,
(case when a.field2 IS NOT NULL then a.field2 else '' end) as field2,
(case when b.field3 IS NOT NULL then b.field3 else '' end) as field3,
(case when b.field4 IS NOT NULL then b.field4 else '' end) as field4
from Table1 a
full outer join Table2 b
ON a.MerchntId = c.MerchntId;
полное внешнее соединение таблицы 3 и таблицы 4 , а затем полное внешнее объединение этих двух таблиц для создания финального стола