google-bigquery - Bigquery SQL 长文本拆分与数字
问题描述
我有一个包含长字符串的数据,看起来像这样
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 中做到这一点?
解决方案
以下是 BigQuery 标准 SQL
#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`
输出是