Google bigquery 如何在BigQuery中解析regex和sum中的整数值
我有一个包含复杂字符串的列,我正在尝试从这个字符串列中提取值。这是临时表和值-Google bigquery 如何在BigQuery中解析regex和sum中的整数值,google-bigquery,Google Bigquery,我有一个包含复杂字符串的列,我正在尝试从这个字符串列中提取值。这是临时表和值- with temp as ( select 1 as event_id, ';t-Tew00;1;1.00;252=100.00,;SM-R190;1;1.00;252=200.00,;SM-G998B/DS;1;6347.00;252=300.00,;EF-PG99P;1;249.00;252=400.00' as event_list union all select 2 as event_id
with temp as (
select 1 as event_id, ';t-Tew00;1;1.00;252=100.00,;SM-R190;1;1.00;252=200.00,;SM-G998B/DS;1;6347.00;252=300.00,;EF-PG99P;1;249.00;252=400.00' as event_list union all
select 2 as event_id, ';asdI-Tww5300;1;1.00;252=99.00,,;EP-TA845;.252=49.00' as event_list union all
select 3 as event_id, ';asdI-Tww5300;1;1.00;252=10.00,,;EP-TA845;,.252=20.00,:etw:1002:2020,'
)
select *
from temp
在event\u list
列中出现252=
之后,我想提取出所有double/int
值。例如,在第一条记录中,我想提取值100.00200.00300.00和400.00
我想在输出中添加一个单独的列,它将将所有这些值添加到一起。因此,第一条记录的输出列将为1000.00。同样,第二条记录为99+49
,第三条记录为10+20
如果没有出现252=
这样的外观,则输出必须为0
我如何在BigQuery中实现这一点?请尝试下面的方法
select event_id,
(
select ifnull(sum(cast(value as float64)), 0)
from unnest(regexp_extract_all(event_list, r'252=(\d*.?\d*)')) value
) as total_252
from temp
如果应用于问题中的样本数据-输出为
谢谢@Mikhail的回答,即使在没有模式的情况下,它也能起作用。我试图让它在那些极端的情况下工作,我运行了这个查询-select event\u id,event\u list,cast(ifnull(regexp\u replace(extracted,“252=”,“”),“0”)作为float64)作为temp的产品数量,unnest(regexp\u EXTRACT\u ALL(event\u list,'252=[0-9.]+'))作为extracted
,但效果不太好。很高兴它对你有用。考虑投票,然后接受:O)谢谢,我做到了。