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 中删除单引号和双引号

BigQuery REGEXP_EXTRACT 返回 null

在 Bigquery 中使用 REGEXP_EXTRACT 查找破折号之间的字符串