В Bigquery: как получить значение столбца, совпадающее с другой таблицей, но сохраняющее то же значение столбца, если оно не совпадает

#join #google-bigquery #left-join #case

#Присоединиться #google-bigquery #левое соединение #случай

Вопрос:

Сценарий: есть две таблицы bigquery с одинаковыми столбцами. Необходимо сравнить эти две таблицы с категорией и статьей, i) если то же самое присутствует в table_2, необходимо извлечь столбец «Поток» из table_2 ii) в противном случае сохраните тот же столбец потока из самого Table_1.

Таблица_1:

 Category    Article     Flow
AA          11          Apple
AA          12          Orange
BB          13          Lemon
CC          14  
 

Таблица_2:

 Category    Article     Flow
AA          11          Melon
BB          13          Pine
 

Результирующая таблица:

 Category    Article     Flow
AA          11          Melon
AA          12          Orange
BB          13          Pine
CC          14
 

Запрос Tried_Out:

 select t1.Category, t1.Article, t2.Flow
from t1 left join t2
on t1.Category=t2.Category and t1.Article=t2.Article
 

Помогите мне решить эту проблему. Заранее спасибо!

Ответ №1:

Попробуйте левое соединение:

 with table_1 as (
  select 'AA' as category, 11 as article, 'Apple' as flow UNION ALL
  select 'AA', 12, 'Orange' UNION ALL
  select 'BB', 13, 'Lemon' UNION ALL
  select 'CC', 14, null
),
table_2 as (
  select 'AA' as category, 11 as article, 'Melon' as flow UNION ALL
  select 'BB', 13, 'Pine'
)
select
  table_1.category,
  table_1.article,
  ifnull(table_2.flow, table_1.flow) as flow
from table_1 left join table_2 using(category, article)
 

введите описание изображения здесь