[英]BigQuery arrays - SELECT DISTINCT ordering guarantees?
我想从 BigQuery 数组中过滤掉重复项。 我还需要保留元素的顺序。 文档提到这可以通过将SELECT DISTINCT
与UNNEST
结合来完成。 但是,它没有提到任何排序行为。 我运行了这个查询并得到了所需的[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 OFFSET
和ORDER 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.