大查询-字符串函数

时间:2019-02-06 05:51:51

标签: google-bigquery bigdata

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

并得到以下结果:SOCKETIOEXCEPTION, NULLPOINTEREXCEPTION, CLASSCASTEEXCEPTION

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

示例数据库详细信息

enter image description here

如何编写此查询?

1 个答案:

答案 0 :(得分:2)

以下是用于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