来自URL的BigQuery REGEXP_EXTRACT - 提取参数值

时间:2016-10-18 09:41:35

标签: sql regex url parameters google-bigquery

我需要在BigQuery中使用的各种URL上使用REGEXP_EXTRACT,并从中提取不同的字符串。

例如,我有这个网址:

url = 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是网址中的参数,并且始终具有相同的名称)

所以实际上我需要使用类似的东西:

REGEXP_EXTRACT(url, "REGEXP that bring back 'nodes')

谢谢!

2 个答案:

答案 0 :(得分:2)

尝试下面的BigQuery

REGEXP_EXTRACT(url, r'context_alg=([^?&#]*)')  

答案 1 :(得分:1)

如果您需要从网址中提取所有参数,您还可以使用REGEXP_EXTRACT_ALL,如下所示:

REGEXP_EXTRACT_ALL(query,r'(?:\?|&)((?:[^=]+)=(?:[^&]*))') as params

这会将结果作为数组返回(参见How to extract URL parameters as ARRAY in Google BigQuery):

enter image description here