У меня есть 3 таблицы Sourcetable, Mappingtable, Destinationtable в Hive.
Здесь я соединяю первые две таблицы на основе условия соединения.Но при попытке выполнить Правильное соединение с третьей таблицей у меня возникают проблемы.Критерии, которым необходимо следовать в «Таблице назначения».
- Должен извлекать только данные 5 марта и должен содержать совпадающие строки из исходных таблиц, а также оставшиеся строки из целевой таблицы.Запрос, который я использовал, приведен ниже.Левое соединение работает правильно.Но когда я пытаюсь присоединиться к Таблице назначения, это не правильно.
Я предоставил связи таблиц и вывод, который должен быть достигнут в выходной таблице.Любое руководство приветствуется.
(select a.Account as Accounts, a.customer as customers,a.productci,b.product_cr as Productcr,sum(a.cost)/sum(a.quantity) as perprice,
from sourcetable a
LEFT join mappingtable b on( a.productci = b.product_ci ) where (a.createddate >= '2018-03-01' and a.createddate < '2018-03-06')
GROUP BY a.customer,a.Account,a.productci,b.product_cr order by a.Account,a.customer) AS TEST
RIGHT JOIN destinationtable Temp on(TEST.Productcr=Temp.productgr) where temp.createddate='2018-03-05'
GROUP BY temp.customer,temp.Account,temp.productgr
Подробности таблицы показаны ниже
SOURCETABLE
Account,customer,productci,quantity,cost,Createddate
A01,S01,100,3000,120000,3/5/2018
A02,S02,140,4000,180000,3/4/2018
Mappingtable
product_ci,product_cr,proddesc
100,4991089,Product1
140,4991090,Product2
150,4991091,Product3
120,4991092,Product4
Таблица назначения
Account,customer,productgr,volume,placeid,Createddate
A01,S01,4991089,1890000,P01,3/5/2018
A02,S02,4991090,1890001,P02,3/5/2018
A03,S03,4991091,1890002,P03,3/5/2018
A04,S04,4991092,1890003,P04,3/5/2018
A05,S05,4991093,1890004,P05,3/5/2018
Вывод: Результат
Account,customer,productgr,volume,Perprice,placeid
A01,S01,4991089,1890000,40,P01
A02,S02,4991090,1890001,45,P02
A03,S03,4991091,1890002,285.1002865,P03
A04,S04,4991092,1890003,30,P04
A05,S05,4991093,1890004,1170.113097,P05