在 Redshift 中使用活动跟踪参数捕获 URL 时遇到问题

Trouble Capturing URLs With Campaign Tracking Parameters in Redshift

我正在尝试捕获在对网站主页的查询中具有跟踪参数的 URL。在某些情况下,参数在查询开始之前可以有一个正斜杠。这里有两个应该匹配的例子:

https://test.com/?utm_campaign=email
https://test.com?utm_campaign=email

这里有两个不应该匹配的例子:

 https://test.com/blog
 https://test.com/blog?utm_campaign=email

这是一个示例查询:

SELECT t.url,COUNT(t.id) AS pageviews
FROM db.table AS t
WHERE t.url ~ '^https*:\/\/test\.com\?'
GROUP BY 1
ORDER BY 2 DESC

请注意,Redshift 文档指出:

To search for strings that include metacharacters, such as ‘. * | ? ‘, and so on, escape the character using two backslashes (' \ ')

单斜杠和双斜杠我都试过了。单斜杠 return 比我预期的多很多,而双斜杠 return 没有任何结果。我更习惯于在 Javascript 中编写正则表达式,因此我认为我在两者之间进行转换时遇到了麻烦;非常感谢任何帮助。

/ 符号不是特殊的正则表达式元字符,您不应将其转义。此外,为了避免转义 .? 的问题,您可以将它们放在括号表达式中:

WHERE t.url ~ '^https?://test[.]com[?]'

它将匹配:

  • ^ - 字符串开头
  • https?://test[.]com[?] - http://test.com?https://test.com?.