#google-bigquery
#google-bigquery
Вопрос:
У меня есть данные, содержащие длинную строку, которая выглядит следующим образом
id | desc |
1 | "1. xxxxxx 2. yyyyyyyy 3. zzzzzzz"
2 | "1. xxxx 2. yyyy
3 | "1. XXX
Я хочу разделить его на основе числа, чтобы оно стало строкой
id | desc
1 | 1. xxx
1 | 2. yyyy
1 | 3. zzz
2 | 1. xxx
2 | 2. yyyy
Могу ли я как-нибудь сделать это в bigquery SQL?
Ответ №1:
Ниже приведен стандартный SQL BigQuery
#standardSQL
select id, `desc`
from `project.dataset.table`,
unnest(regexp_extract_all(`desc`, r'(d . w )')) `desc`
если применить к образцу данных из вашего вопроса — как в примере ниже
#standardSQL
with `project.dataset.table` as (
select 1 id, "1. xxxxxx 2. yyyyyyyy 3. zzzzzzz" `desc`union all
select 2, "1. xxxx 2. yyyy" union all
select 3, "1. XXX"
)
select id, `desc`
from `project.dataset.table`,
unnest(regexp_extract_all(`desc`, r'(d . w )')) `desc`
вывод