Невозможно удалить вложенность в bigquery, если внутри списка есть запятая, которая имеет строковый тип.

Невозможно удалить вложенность в bigquery, если внутри списка есть запятая, имеющая строковый тип. У меня есть данные в следующем формате, где значение представляет собой тип строки

name value
Aashis ["A,B",AC"]
Rahul ["AA",AD"]

Когда я использую следующий запрос, он неправильно разбивается и не может правильно понять логику в regexp_replace

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 'Aashis' name, '["A,B","AC"]' value UNION ALL
  SELECT 'Rahul', '["AA","AD"]'
)
SELECT name, value
FROM `project.dataset.table`,
UNNEST(SPLIT(REGEXP_REPLACE(value, r'^\[|]$', ''))) value   

С приведенным выше кодом я получаю

Aashis A
Aashis B
Aashis AC
Rahul AA
Rahul AD

Мой ожидаемый результат

Aashis AB
Aashis AC
Rahul AA
Rahul AD

Я перешел по следующей ссылке преобразование массива строк в однострочные значения

Любая помощь очень ценится


person sandeep007    schedule 17.02.2021    source источник


Ответы (2)


Попробуй это:

WITH `project.dataset.table` AS (
  SELECT 'Aashis' name, '["A,B","AC"]' value UNION ALL
  SELECT 'Rahul', '["AA","AD"]'
)
SELECT name, value
FROM `project.dataset.table`,
UNNEST(SPLIT(TRIM(REGEXP_REPLACE(value, r'^\[|]$', ''), '"'),'","')) value

введите здесь описание изображения

person Sergey Geron    schedule 17.02.2021

Рассмотрим ниже менее подробный вариант

SELECT name, TRIM(new_value, '"') new_value
FROM `project.dataset.table`,
UNNEST(REGEXP_EXTRACT_ALL(value, r'".*?"')) new_value 

Если применить к выборке данных в вашем вопросе - вывод

введите здесь описание изображения

person Mikhail Berlyant    schedule 17.02.2021