2017-06-05 20 views
1

如果我在BigQuery中有兩個我知道大小相同的數組。我如何將它們壓縮到一個結構數組或類似的兩個元素數組的數組?Bigquery - 如何將兩個數組壓縮成一個?

以下查詢給我所有可能的x和y組合,這不是我想要的。

WITH test AS (
    SELECT 
    ['a', 'b', 'c'] as xs, 
    [1, 2, 3] as ys 
) 
SELECT struct(x, y) as pairs 
FROM test, unnest(xs) as x, unnest(ys) as y 

我希望得到的東西是這樣的:

+--------+--------+ 
| pair.x | pair.y | 
+--------+--------+ 
| a  | 1  | 
| b  | 2  | 
| c  | 3  | 
+--------+--------+ 

回答

3

使用WITH OFFSET和支架操作:

WITH test AS (
    SELECT 
    ['a', 'b', 'c'] as xs, 
    [1, 2, 3] as ys 
) 
SELECT struct(x, ys[OFFSET(off)] as y) as pairs 
FROM test, unnest(xs) as x WITH OFFSET off; 
+0

嗨@Elliot,只是想知道,有沒有什麼地方BigQuery中的文檔是描述這個'WITH OFFSET'操作?我正在尋找它,但無法找到:)。 –

+0

它是[查詢語法主題](https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax#unnest)的一部分,但不是「函數與操作符」(這是一種自然的看的地方)。我會跟進我們的科技作家,使其更易被發現;它應該也可以成爲使用數組的一部分。 –

+0

哦,明白了!謝謝您的幫助 :)!事實上,我找到的第一個地方是函數和操作符,然後使用數組哈哈。 –

相關問題