2017-07-26 25 views
0

我試圖在BigQuery中使用標準SQL來連接兩個表,其中一個帶有重複字段。使用傳統的SQL我想出了這個查詢使用UNNEST()連接重複字段的表()

傳統的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()並查看migration guide,但無法自己提出查詢。幫助讚賞謝謝。

+0

數據是如何和這個查詢的響應看? –

回答

2
下面

是BigQuery的標準SQL

#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