我正在寻找使结构数组具有唯一值的方法。这里是示例表。
我只在这里找到了类似的问题,但我认为它只适用于 1 个嵌套的重复列。但是如果表包含 2 个或更多嵌套的重复列怎么办?在这种情况下,列country和product。
Mik*_*ant 10
但是如果表包含 2 个或更多嵌套的重复列怎么办?
下面是 BigQuery 标准 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`
Run Code Online (Sandbox Code Playgroud)
如果您有更多的列要重复数据删除 - 您可以简单地对每个这样的列重复上述操作
或者,您可以使用 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`
Run Code Online (Sandbox Code Playgroud)
显然,后者将是我的选择:o)
| 归档时间: |
|
| 查看次数: |
7075 次 |
| 最近记录: |