【问题标题】:How to sort an array in BigQuery standard SQL?如何在 BigQuery 标准 SQL 中对数组进行排序?
【发布时间】:2018-05-18 01:10:15
【问题描述】:

我想知道是否可以对 Google BigQuery 中的单个数组值进行排序(应用排序依据)?

我可以通过先在整个事务基表上应用 order by 然后聚合数组来实现这一点;但是当表太大时,按大表排序会出现资源错误..

所以我想知道是否可以使用 SQL 或 UDF 对每个单独的数组值进行排序。

这被问过一次Order of data in bigquery repeated records,但那是 4.5 年前。

【问题讨论】:

    标签: sql arrays google-bigquery


    【解决方案1】:

    当然,您可以使用 ARRAY 函数。它支持可选的 ORDER BY 子句。您尚未提供示例数据,但假设您有一个名为 arr 的顶级数组列,您可以执行以下操作:

    SELECT
      col1,
      col2,
      ARRAY(SELECT x FROM UNNEST(arr) AS x ORDER BY x) AS arr
    FROM MyTable;
    

    这会将arr 的元素按其值排序。如果你确实有一个struct类型的数组,比如ARRAY<STRUCT<a INT64, b STRING>>,你可以按照struct字段之一进行排序:

    SELECT
      col1,
      col2,
      ARRAY(SELECT x FROM UNNEST(arr) AS x ORDER BY a) AS arr
    FROM MyTable;
    

    【讨论】:

      猜你喜欢
      • 2020-01-23
      • 1970-01-01
      • 2010-12-23
      • 2015-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多