首页 > 解决方案 > 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 中做到这一点?

标签: google-bigquery

解决方案


以下是 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`

输出是

在此处输入图像描述


推荐阅读