Но что, если таблицы содержат 2 или более вложенных повторяющихся столбца?
Ниже для BigQuery Standard SQL
#standardSQL
SELECT * REPLACE(
(SELECT ARRAY_AGG(STRUCT(id, total_visit_count))
FROM (SELECT DISTINCT id, total_visit_count FROM UNNEST(country) c
)) AS country,
(SELECT ARRAY_AGG(STRUCT(name, total_visit_count))
FROM (SELECT DISTINCT name, total_visit_count FROM UNNEST(product) c
)) AS product
)
FROM `project.dataset.table`
Если у вас есть больше столбцов для дедупликации - вы можете просто повторить выше для каждого такого столбца
ИЛИ, вы можете использовать SQL UDF для инкапсуляции логики дедупликации в одном месте, как в примере ниже
#standardSQL
CREATE TEMP FUNCTION dedup(val ANY TYPE) AS ((
SELECT ARRAY_AGG(t)
FROM (SELECT DISTINCT * FROM UNNEST(val) v) t
));
SELECT * REPLACE(
dedup(country) AS country,
dedup(product) AS product
)
FROM `project.dataset.table`
Очевидно, что последний будет моим выбором: o)