如何忽略以|分隔的字符串中第4个词之后的内容?
解决方案
要实现忽略category_tag中第4个分隔部分之后的内容,只需先对原字符串进行截断处理,保留前4个由|分隔的元素,再基于处理后的字符串执行原逻辑。修改后的BigQuery代码如下:
SELECT SPLIT(truncated_tag, '|')[OFFSET(0)] AS category_name, ['', 'Parent', 'Child', 'Grandchild', 'Greatgrandchild'][OFFSET(ARRAY_LENGTH(SPLIT(truncated_tag, '|')))] AS category_type, '/' || REGEXP_REPLACE(REPLACE(truncated_tag, '|', '/'), r'^([^/]+)(/)(.*)', r'\3\2\1') AS category FROM ( SELECT -- 截取前4个分隔部分,忽略后续内容 ARRAY_TO_STRING(ARRAY_SLICE(SPLIT(category_tag, '|'), 0, 4), '|') AS truncated_tag FROM your_table )
关键逻辑说明
SPLIT(category_tag, '|'):将原字符串按|分割成数组ARRAY_SLICE(..., 0, 4):从数组中截取前4个元素(索引0到3,不包含4)ARRAY_TO_STRING(..., '|'):将截取后的数组重新拼接成用|分隔的字符串,完成截断- 后续的
category_name、category_type和category计算逻辑与原代码一致,但基于截断后的字符串执行
例如,当category_tag为animals|land-mammals|cats|domestic-cats|blackcat|cutecat时,会先被处理为animals|land-mammals|cats|domestic-cats,再进行后续计算。
内容的提问来源于stack exchange,提问作者Zahra Safdari
相关产品推荐
相关产品推荐

