Проблема с BigQuery при получении подстроки на основе символа справа - PullRequest
2 голосов
/ 14 марта 2019

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

Пример:

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 Ответ

2 голосов
/ 14 марта 2019

Ниже для BigQuery Standard SQL

#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     
...