#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