Соедините таблицу с повторяющимся полем, используя 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