Улей присоединиться к разделу - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть эти 2 таблицы:

table products
(
product_id bigint, 
product_name string
)
partitioned by (product_category as string)

table place_of_sale
(
product_id bigint, 
city string
)
partitioned by (country as string)

как я могу присоединиться к двум таблицам на основе 'product_id', но через раздел 'country' таблицы place_of_sale?

Thisпример с желаемым результатом:

table products
product_id      product_name    product_category
1000            banana          fruit
1001            coconut         fruit
1002            ananas          fruit
2002            cow             animal
2003            beef            animal


table place_of_sale
product_id      city        country
1000            Texas       USA
1002            Miami       USA
2003            Sydney      Australia


desired result for a left join between table products and table place_of_sale over the partition country :

product_id      product_name        product_category    city   country
1000            banana              fruit               Texas  USA
1001            coconut             fruit               null   null
1002            ananas              fruit               Miam   USA

2002            cow                 animal              null   null
2003            beef                animal              Sydney Australia

Здесь приведен пример только с двумя разными странами, но представьте себе множество разных стран. Это как левое объединение для каждой страны, а затем объединение результатов всех стран.

1 Ответ

0 голосов
/ 06 ноября 2019

Если проданный товар присутствует в таблице place_of_sale, используйте LEFT JOIN:

select s.country, p.product_id, p.product_name, p.category, 
       case when s.product_id is NULL then "not sold" else "sold" as sold 
 from products p
      left join place_of_sale s on p.product_id = s.product_id 
 order by country, product_id --order if necessary
...