Проблема BigQuery с получением подстроки на основе символа справа

#sql #google-cloud-platform #google-bigquery #cloud

#sql #google-облачная платформа #google-bigquery #облако

Вопрос:

У меня возникла проблема при попытке выяснить, как разобрать строку в подстроку на основе символа, который появляется в строке несколько раз. В этом случае я пытаюсь получить все справа от последнего ‘/’.

Пример:

 Col          text_string
1            aaa/bbbb/ccccc
2            d/eeee/ff
3            gggg/hh/iiii
  

Что у меня есть до сих пор, так это:

 SELECT
SUBSTR(text_string,[*MY ISSUE*],LENGTH(text_string)) as solution
FROM mytable
  

Для вывода:

 Col          solution
1            ccccc
2            ff
3            iiii
  

Поскольку GCP не имеет правильной функции, какой был бы наилучший способ достичь этой цели?

Спасибо

Ответ №1:

Ниже приведен стандартный SQL BigQuery

 #standardSQL
SELECT col, 
  ARRAY_REVERSE(SPLIT(text_string, '/'))[OFFSET(0)] solution
FROM `project.dataset.table`
  

Вы можете протестировать, поиграть с приведенным выше примером данных из вашего вопроса, как в примере ниже

 #standardSQL
WITH `project.dataset.table` AS (
  SELECT 1 col, 'aaa/bbbb/ccccc' text_string UNION ALL
  SELECT 2, 'd/eeee/ff' UNION ALL
  SELECT 3, 'gggg/hh/iiii' 
)
SELECT col, 
  ARRAY_REVERSE(SPLIT(text_string, '/'))[OFFSET(0)] solution
FROM `project.dataset.table`
-- ORDER BY col  
  

с результатом

 Row col solution     
1   1   ccccc    
2   2   ff   
3   3   iiii