gpt4 book ai didi

regex - 在 BigQuery 中重复正则表达式

转载 作者:行者123 更新时间:2023-12-02 04:44:20 25 4
gpt4 key购买 nike

我们就在 case 子句中使用 regex 表达式的最佳方式进行了辩论...我们需要对提取的对象进行案例操作。这可以用几种方式来表达。问题是:哪一个会更有效?如果它出现在多个位置,BQ 会多次处理正则表达式吗?

我已调整我的代码以在维基百科数据样本上运行。

第一:

Select case when PS_Version='1' then '1st' 
when PS_Version='2' then '2nd'
when PS_Version='3' then '3rd'
else 'other' end as PS_VersionOrder
from
(SELECT regexp_extract(title,r'PlayStation (\d+)') as PS_Version
FROM [publicdata:samples.wikipedia] A
where title like '%PlayStation%'
limit 100)

第二个:

Select case when regexp_extract(title,r'PlayStation (\d+)')='1' then '1st' 
when regexp_extract(title,r'PlayStation (\d+)')='2' then '2nd'
when regexp_extract(title,r'PlayStation (\d+)')='3' then '3rd'
else 'other' end as PS_VersionOrder
FROM [publicdata:samples.wikipedia] A
where title like '%PlayStation%'
limit 100

正则表达式的人声称 1st 会更有效率。数据库人员更喜欢第二个,因为它不涉及子查询...

最佳答案

我同意亚历克斯所说的,但我要补充一点,从执行的角度来看,第一个查询也会更好。 BigQuery 非常有效地执行子查询,但可能不会在 case 子句中执行常见的子表达式消除(但是,它可能会,但您不应该依赖它)。

关于regex - 在 BigQuery 中重复正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20117117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com