如何使用Google Big Query在GROUP_CONCAT上获取不同的值

莱昂纳多·纳雷斯蒂

在BigQuery中使用GROUP_CONCAT时,我试图获取不同的值。

我将使用一个更简单的静态示例来重新创建情况:

编辑:我已经修改了示例,以更好地代表我的真实情况:group_concat的2列需要与众不同:

SELECT 
  category, 
  GROUP_CONCAT(id) as ids, 
  GROUP_CONCAT(product) as products
FROM 
 (SELECT "a" as category, "1" as id, "car" as product),
 (SELECT "a" as category, "2" as id, "car" as product),
 (SELECT "a" as category, "3" as id, "car" as product),
 (SELECT "b" as category, "4" as id, "car" as product),
 (SELECT "b" as category, "5" as id, "car" as product),
 (SELECT "b" as category, "2" as id, "bike" as product),
 (SELECT "a" as category, "1" as id, "truck" as product),
GROUP BY 
  category

此示例返回:

Row category    ids products
1   a   1,2,3,1 car,car,car,truck
2   b   4,5,6   car,car,bike

我想剥离找到的重复值,以返回:

Row category    ids products 
1   a   1,2,3   car,truck
2   b   4,5,6   car,bike

在MySQL中,GROUP_CONCAT具有DISTINCT OPTION,但在BigQuery中则没有。

有任何想法吗?

莫莎·帕苏曼斯基(Mosha Pasumansky)

这是使用UNIQUE范围聚合功能删除重复项的解决方案注意,为了使用它,首先我们需要构建一个REPEATEDusingNEST聚合:

SELECT 
  GROUP_CONCAT(UNIQUE(ids)) WITHIN RECORD,
  GROUP_CONCAT(UNIQUE(products)) WITHIN RECORD 
FROM (
SELECT 
  category, 
  NEST(id) as ids, 
  NEST(product) as products
FROM 
 (SELECT "a" as category, "1" as id, "car" as product),
 (SELECT "a" as category, "2" as id, "car" as product),
 (SELECT "a" as category, "3" as id, "car" as product),
 (SELECT "b" as category, "4" as id, "car" as product),
 (SELECT "b" as category, "5" as id, "car" as product),
 (SELECT "b" as category, "2" as id, "bike" as product),
 (SELECT "a" as category, "1" as id, "truck" as product),
GROUP BY 
  category
)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Google Big Query中正确使用GROUP BY命令?

在具有值数组的行上使用group_concat

如何使用group_concat和concat引用单列的值,不同

如何在不同表上使用group_concat和group by进行求和

Google Big Query SQL-获取最新列值

使用Big Query或Big Table查询聚合值的用例?

如何将字段中的值转换为Google Big Query中的不同字段?

从 Google Big Query 获取任何信息

Google Big Query 的奇怪活动

如何使用 ruby 在 Google big Query 中设置/更新表的到期时间

Google Data Studio:如何使用自定义Big Query查询创建时间序列图

如何扩展GROUP_CONCAT的值?

如何存储BIG int值

如何在 Google Big Query 的 SQL 中展平表?

如何使用GROUP_CONCAT来获取行ID的数据?

Google Big Query Flatten表并使用table_range函数

Google Big Query在表名中间使用通配符

在 Google Big Query 中使用 SQL Server 数据

如何在整个子查询上使用 group_concat?

如何从group_concat MySQL的结果中获取最大值

如何仅对具有最大值的行获取GROUP_CONCAT

如何获取GROUP_CONCAT返回的逗号分隔值的总和(if(type ='tax',amount,NULL))AS'tax'

使用不同的阈值在同一列上多次选择,然后组合结果(在 Google Big Query 视图中)

在Google Bigquery中运行不同的GROUP_CONCAT的语法

Google Cloud Storage/Big Query 成本估算

熊猫数据框到Google Big Query

从group_concat使用

使用group_concat?

Google Big Query:如何获取授权以更改数据集的授权