Google bigquery Bigquery中结构数组中的DISTINCT
我正在寻找使结构数组具有唯一价值的方法。下面是示例表 进入这个 我只发现了类似的问题,但我认为它只满足1个嵌套的重复列。但是,如果表包含2个或更多嵌套的重复列,该怎么办?在这种情况下,列Google bigquery Bigquery中结构数组中的DISTINCT,google-bigquery,Google Bigquery,我正在寻找使结构数组具有唯一价值的方法。下面是示例表 进入这个 我只发现了类似的问题,但我认为它只满足1个嵌套的重复列。但是,如果表包含2个或更多嵌套的重复列,该怎么办?在这种情况下,列国家,和产品 但是,如果表包含2个或更多嵌套的重复列,该怎么办 下面是BigQuery标准SQL #standardSQL SELECT * REPLACE( (SELECT ARRAY_AGG(STRUCT(id, total_visit_count)) FROM (SELECT DISTINCT
国家
,和产品
但是,如果表包含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`
如果有更多列需要重复数据消除,只需对每一列重复上述操作即可
或者,您可以使用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)