Как выбрать последний индекс разделения столбца с помощью BigQuery - PullRequest
0 голосов
/ 11 октября 2018

Есть много вопросов о разделении столбца BigQuery, MySQL, но я не могу найти тот, который подходит для моей ситуации.

Я обрабатываю большой набор данных (сторонний), который содержит местоположение в свободной формеполе, чтобы нормализовать его для моего приложения для Android.Когда я запускаю select, я хотел бы разделить данные столбца запятыми, взять только последний сегмент и обрезать его пробелами.

До сих пор я нашел следующее в документации по Google:

SELECT RTRIM(LOWER(SPLIT(location, ',')[OFFSET(-1)])) FROM `users` WHERE location <> ''

Но трюк -1 для разделения на последнем элементе не работает (со смещением или порядковым номером).Я не могу использовать ARRAY_LENGTH с тем же встроенным массивом, и я не совсем уверен, как структурировать вложенный запрос и узнать индекс последнего столбца строки.

Возможно, я подхожу к этому неправильноТеперь я работаю с Android и NoSQL, поэтому долгое время не использовал MySQL

Как правильно структурировать этот запрос?

1 Ответ

0 голосов
/ 11 октября 2018

Я хотел бы разделить данные столбца запятыми, взять только последний сегмент ...

Вы можете использовать подход ниже (BigQuery Standard SQL)

SELECT ARRAY_REVERSE(SPLIT(location))[SAFE_OFFSET(0)]

Ниже приведен пример, иллюстрирующий это:

#standardSQL
WITH `project.dataset.table` AS (
  SELECT '1,2,3,4,5' location UNION ALL
  SELECT '6,7,8'
)
SELECT location, ARRAY_REVERSE(SPLIT(location))[SAFE_OFFSET(0)] last_segment
FROM `project.dataset.table`   

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

Row location    last_segment     
1   1,2,3,4,5   5    
2   6,7,8       8      

Для обрезки - вы можете использовать LTRIM (RTRIM ()) - как в

SELECT LTRIM(RTRIM(ARRAY_REVERSE(SPLIT(location))[SAFE_OFFSET(0)])) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...