如何使用 regexp_extract 从 Big Query 中的键值对数据中提取特定字符串?
How to extract a specific string from a key,value pair data in Big Query using regexp_extract?
我正在尝试提取特定键的值 'xyz' 并尝试使用下面的正则表达式来完成它。这是处理键值对的有效方法吗?如果有任何其他更有效的解决方案,有人可以建议我吗?谢谢。
**
- Input & SQL :-
**
SELECT FIRST( SPLIT( regexp_extract(kvp,r'SuppressFlexCacheHydrationIndicator=(.*)&'), '&' ) ) AS SuppressFlexCacheHydrationIndicator,
regexp_extract(kvp,r'campaignName=(.*)$') AS campaign,
regexp_extract(LOWER(kvp),r'resultcode=(.*)&') AS resultcode,
FROM ( SELECT 'SuppressFlexCacheHydrationIndicator=True&templateVersionId=5&vmtaText=mail2&sequenceId=300&resultCode=DoNotMailBounceList&campaignName=classicimport' AS kvp )
Output :-
SuppressFlexCacheHydrationIndicator campaign resultcode
True classicimport donotmailbouncelist
评论:-
在上面 SQL 我使用 FIRST(SPLIT()) 从输入中提取子字符串,我认为它无效并且可以通过使用常规 expression.Please 如果有任何其他可能的解决方案,请分享您的见解。谢谢。
我会使用稍微不同的正则表达式来避免 SPLIT 和 FIRST 成本,以及对 URL 中参数位置的特殊知识进行编码:
SELECT regexp_extract(kvp,r'SuppressFlexCacheHydrationIndicator=([^&]*)') AS SuppressFlexCacheHydrationIndicator,
regexp_extract(kvp,r'campaignName=([^&]*)') AS campaign,
regexp_extract(LOWER(kvp),r'resultcode=([^&]*)') AS resultcode,
FROM ( SELECT 'SuppressFlexCacheHydrationIndicator=True&templateVersionId=5&vmtaText=mail2&sequenceId=300&resultCode=DoNotMailBounceList&campaignName=classicimport' AS kvp )
我正在尝试提取特定键的值 'xyz' 并尝试使用下面的正则表达式来完成它。这是处理键值对的有效方法吗?如果有任何其他更有效的解决方案,有人可以建议我吗?谢谢。
**
- Input & SQL :-
**
SELECT FIRST( SPLIT( regexp_extract(kvp,r'SuppressFlexCacheHydrationIndicator=(.*)&'), '&' ) ) AS SuppressFlexCacheHydrationIndicator,
regexp_extract(kvp,r'campaignName=(.*)$') AS campaign,
regexp_extract(LOWER(kvp),r'resultcode=(.*)&') AS resultcode,
FROM ( SELECT 'SuppressFlexCacheHydrationIndicator=True&templateVersionId=5&vmtaText=mail2&sequenceId=300&resultCode=DoNotMailBounceList&campaignName=classicimport' AS kvp )
Output :-
SuppressFlexCacheHydrationIndicator campaign resultcode
True classicimport donotmailbouncelist
评论:-
在上面 SQL 我使用 FIRST(SPLIT()) 从输入中提取子字符串,我认为它无效并且可以通过使用常规 expression.Please 如果有任何其他可能的解决方案,请分享您的见解。谢谢。
我会使用稍微不同的正则表达式来避免 SPLIT 和 FIRST 成本,以及对 URL 中参数位置的特殊知识进行编码:
SELECT regexp_extract(kvp,r'SuppressFlexCacheHydrationIndicator=([^&]*)') AS SuppressFlexCacheHydrationIndicator,
regexp_extract(kvp,r'campaignName=([^&]*)') AS campaign,
regexp_extract(LOWER(kvp),r'resultcode=([^&]*)') AS resultcode,
FROM ( SELECT 'SuppressFlexCacheHydrationIndicator=True&templateVersionId=5&vmtaText=mail2&sequenceId=300&resultCode=DoNotMailBounceList&campaignName=classicimport' AS kvp )