Большой запрос - строковая функция - PullRequest
0 голосов
/ 06 февраля 2019

Я очень новичок в платформе BigQuery, я хочу взять следующие строки SOCKETIOEXCEPTION##APS.COM, NULLPOINTEREXCEPTION##RSJAVA.COM, CLASSCASTEEXCEPTION##MPS.COM

и получить в результате: SOCKETIOEXCEPTION, NULLPOINTEREXCEPTION, CLASSCASTEEXCEPTION

До ## символов, которые я хочуотделить от заданной строки, а затем я хочу сгруппировать по числовым строкам, имеющимся в вышеупомянутом теге, например SOCKETIOEXCEPTION, NULLPOINTEREXCEPTION, CLASSCASTEEXCEPTION

Пример базы данных

enter image description here

Как мне написать этот запрос?

1 Ответ

0 голосов
/ 06 февраля 2019

Ниже для BigQuery Standard 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    
...