Ниже для BigQuery Standard SQL
#standardSQL
CREATE TEMP FUNCTION STRING_DEDUP(str STRING) AS (
(SELECT STRING_AGG(item ORDER BY item) FROM (
SELECT DISTINCT item FROM UNNEST(SPLIT(str)) item
))
);
SELECT
STRING_DEDUP(str) `string_agg`
FROM `project.dataset.table`
Вы можете проверить, поиграть с выше, используя фиктивные данные, как в примере ниже
#standardSQL
CREATE TEMP FUNCTION STRING_DEDUP(str STRING) AS (
(SELECT STRING_AGG(item ORDER BY item) FROM (
SELECT DISTINCT item FROM UNNEST(SPLIT(str)) item
))
);
WITH `project.dataset.table` AS (
SELECT 'B,A,A,D,C,B' str UNION ALL
SELECT 'X,X,Z,Y,Y'
)
SELECT
STRING_DEDUP(str) `string_agg`
FROM `project.dataset.table`
с результатом
Row string_agg
1 A,B,C,D
2 X,Y,Z