BigQuery REGEXP_EXTRACT from URL - 提取参数值
Posted
技术标签:
【中文标题】BigQuery REGEXP_EXTRACT from URL - 提取参数值【英文标题】:BigQuery REGEXP_EXTRACT from URL - extract parameters values 【发布时间】:2016-10-18 09:41:34 【问题描述】:我需要在 BigQuery 中的各种 URL 上使用 REGEXP_EXTRACT 并从中提取不同的字符串。
例如,我有这个网址:
网址 =
https://www.whatever.com/record-a-beautiful-and-professional-voice-over?sec_context=recommendation&context_alg=nodes&sec_context_referrer=search
我想使用 BigQuery REGEXP_EXTRACT
函数并提取位于名为 context_alg=
的参数之后的字符串(在 URL 中的第一个 &
之后显示)。
含义 - 我的输出将是 nodes
。
(context_alg
是URL中的参数,总是同名)
所以实际上我需要使用类似的东西:
REGEXP_EXTRACT(url, "REGEXP that bring back 'nodes')
谢谢!
【问题讨论】:
您的问题不够清楚...请用正确的输入和您想要的准确输出来澄清...如果您不能更好地解释,请分别给出两组输入和两组输出 【参考方案1】:如果你需要从一个URL中提取所有个参数,你也可以使用REGEXP_EXTRACT_ALL,如下:
REGEXP_EXTRACT_ALL(query,r'(?:\?|&)((?:[^=]+)=(?:[^&]*))') as params
这会将结果作为数组返回(参见How to extract URL parameters as ARRAY in Google BigQuery):
【讨论】:
非常感谢分享这段代码。只需添加一件事以节省一些人的时间:如果您想获取特定参数的值,。使用这个正则表达式r'(?:\?|&)(?:(?:[myparameter=]+)=([^&]*))'
【参考方案2】:
试试下面的 BigQuery
REGEXP_EXTRACT(url, r'context_alg=([^?&#]*)')
【讨论】:
以上是关于BigQuery REGEXP_EXTRACT from URL - 提取参数值的主要内容,如果未能解决你的问题,请参考以下文章
Google BigQuery 中的 REGEXP_EXTRACT 不返回任何结果
如何在 BigQuery 中使用 REGEXP_EXTRACT 仅提取数值?
BigQuery REGEXP_EXTRACT from URL - 提取参数值
使用 regexp_extract 从 BigQuery 中删除单引号和双引号