【问题标题】:Bigquery - How to zip two arrays into one?Bigquery - 如何将两个数组压缩为一个?
【发布时间】:2017-11-06 00:34:54
【问题描述】:

如果我知道 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      |
+--------+--------+

【问题讨论】:

    标签: arrays google-bigquery


    【解决方案1】:

    使用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;
    

    【讨论】:

    • 嗨@Elliot,只是想知道,BigQuery 文档中是否有描述此WITH OFFSET 操作的地方?我正在寻找它,但找不到:)。
    • 它是Query Syntax topic 的一部分,但不是函数和运算符的一部分(这是一个很自然的地方)。我将跟进我们的技术作家,以使其更容易被发现;它也应该是使用数组的一部分。
    • 哦,明白了!谢谢您的帮助 :)!事实上,我首先寻找的地方是函数和运算符,然后是使用数组哈哈。
    • 谢谢你!像魅力一样工作!
    猜你喜欢
    • 1970-01-01
    • 2014-05-31
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    • 2014-03-27
    • 1970-01-01
    相关资源
    最近更新 更多