首页 > 解决方案 > 大查询 - 字符串函数

问题描述

我是 BigQuery 平台的新手,我想使用以下字符串 SOCKETIOEXCEPTION##APS.COM, NULLPOINTEREXCEPTION##RSJAVA.COM, CLASSCASTEEXCEPTION##MPS.COM

结果得到这个:SOCKETIOEXCEPTION, NULLPOINTEREXCEPTION, CLASSCASTEEXCEPTION

##字符之前,我想从给定的字符串中分离出来,然后我想按上述标签中可用的行数进行分组,例如SOCKETIOEXCEPTION, NULLPOINTEREXCEPTION, CLASSCASTEEXCEPTION

示例数据库详细信息

在此处输入图像描述

如何编写此查询?

标签: google-bigquerybigdata

解决方案


以下是 BigQuery 标准 SQL

#standardSQL
SELECT SPLIT(line, '##')[OFFSET(0)] type, COUNT(1) cnt 
FROM `project.dataset.table`
GROUP BY type  

您可以使用您问题中的示例数据进行测试,使用上面的示例数据,如下例所示

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 'SOCKETIOEXCEPTION##111' line UNION ALL
  SELECT 'SOCKETIOEXCEPTION##222' UNION ALL
  SELECT 'SOCKETIOEXCEPTION##333' UNION ALL
  SELECT 'NULLPOINTEREXCEPTION##444' UNION ALL
  SELECT 'NULLPOINTEREXCEPTION##555' UNION ALL
  SELECT 'CLASSCASTEEXCEPTION##666' UNION ALL
  SELECT 'CLASSCASTEEXCEPTION##777' UNION ALL
  SELECT 'CLASSCASTEEXCEPTION##888' 
)
SELECT SPLIT(line, '##')[OFFSET(0)] type, COUNT(1) cnt 
FROM `project.dataset.table`
GROUP BY type   

结果

Row type                    cnt  
1   SOCKETIOEXCEPTION       3    
2   NULLPOINTEREXCEPTION    2    
3   CLASSCASTEEXCEPTION     3    

推荐阅读