Как объединить два столбца из двух разных таблиц в один столбец - PullRequest
0 голосов
/ 08 мая 2020

У меня есть две таблицы, содержащие данные о продажах для Apple и Samsung

Таблица для продаж Apple

cust_id | apple_products 
0001      iPad
0002      iPhone
0002      Apple Watch
0003      Macbook
0003      Apple Watch

Таблица для продаж Samsung

cust_id | samsung_products 
0001      Galaxy S10
0002      Galaxy Tab 1
0004      Galaxy Tab 2
0004      Galaxy Note

Интересно, как следует Я пишу свой запрос, чтобы объединить эти две таблицы

Таблица общих продаж

cust_id | products 
0001      Galaxy S10
0001      iPad
0002      Galaxy Tab 1
0002      iPhone
0002      Apple Watch
0003      Macbook
0003      Apple Watch
0004      Galaxy Tab 2
0004      Galaxy Note

Я думаю об использовании UNION ALL, но не уверен, что это лучший способ. Вот запрос, который я использую.

select 
  cust_id
  , apple_products as products
from apple_sales
UNION ALL
  cust_id
  , samsung_products
from samsung_sales

1 Ответ

1 голос
/ 09 мая 2020

Объединение в порядке. Чтобы действительно принять BigQuery, подумайте:

with unioned as (
  select cust_id, 'Apple' as brand, apple_products as product from apple_sales
  union all
  select cust_id, 'Samsung' as brand, samsung_products as product from samsung_sales
)
select
  cust_id,
  array_agg(struct(brand,product)) as devices
from unioned
group by 1
...