繁体   English   中英

BigQuery 数组 - SELECT DISTINCT 排序保证?

[英]BigQuery arrays - SELECT DISTINCT ordering guarantees?

我想从 BigQuery 数组中过滤掉重复项。 我还需要保留元素的顺序。 文档提到这可以通过将SELECT DISTINCTUNNEST结合来完成。 但是,它没有提到任何排序行为。 我运行了这个查询并得到了所需的[5, 3, 1, 4, 10, 8]排序。

WITH an_array AS (
  SELECT [5, 5, 3, 1, 4, 4, 10, 8, 5, 1] AS nums
)

SELECT
  ARRAY((
    SELECT DISTINCT num
    FROM UNNEST(nums) num
  ))
FROM an_array;

我不知道这是巧合还是保证顺序。 我还尝试添加WITH OFFSETORDER BY以明确指定顺序,但在这种情况下,我收到Query error: ORDER BY clause expression references table alias offset which is not visible after SELECT DISTINCT

如果您关心它,您应该始终明确订购:WITH an_array AS (

WITH an_array as (
  SELECT [5, 5, 3, 1, 4, 4, 10, 8, 5, 1] AS nums
)
SELECT ARRAY((SELECT num
              FROM UNNEST(nums) num WITH OFFSET o
              GROUP BY num
              ORDER BY MIN(o)
             )
            )
FROM an_array;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM