Соедините таблицу с повторяющимся полем, используя UNNEST()

Я пытаюсь объединить две таблицы, одна с повторяющимся полем, используя стандартный SQL в BigQuery. Используя Legacy SQL, я придумал этот запрос

Устаревший SQL:

SELECT
  b.*,
  t.field1,
  t.field2
FROM
  FLATTEN([table1],repeated_field) AS b
LEFT JOIN
  [table2] AS t
ON
  b.Row = t.RowLabel
  b.seat = t.SeatLabel

Повторное поле является seat, Я пытался с помощью unnest() и смотрел руководство по миграции, но не смог придумать вопрос сам. Помогите, оценили спасибо

1 ответ

Решение

Ниже для стандартного SQL BigQuery

#standardSQL
SELECT   
  b.*,
  t.field1,
  t.field2
FROM `table1` AS b, UNNEST(Seats) AS Seat
JOIN `table2` AS t
ON b.Row = t.RowLabel
AND Seat = t.SeatLabel  

Вы можете проверить это с помощью фиктивных данных, как показано ниже

#standardSQL
WITH `table1` AS (
  SELECT '1' AS Row, ['a', 'b', 'c'] AS Seats
),
`table2` AS (
  SELECT '1' AS RowLabel, 'b' AS SeatLabel, 111 AS field1, 222 AS field2 UNION ALL
  SELECT '1' AS RowLabel, 'a' AS SeatLabel, 111 AS field1, 222 AS field2 UNION ALL
  SELECT '1' AS RowLabel, 'd' AS SeatLabel, 111 AS field1, 222 AS field2
)
SELECT   
  b.*,
  t.field1,
  t.field2
FROM `table1` AS b, UNNEST(Seats) AS Seat
JOIN `table2` AS t
ON b.Row = t.RowLabel
AND Seat = t.SeatLabel
Другие вопросы по тегам