在 Redshift 中使用活动跟踪参数捕获 URL 时遇到问题
Posted
技术标签:
【中文标题】在 Redshift 中使用活动跟踪参数捕获 URL 时遇到问题【英文标题】:Trouble Capturing URLs With Campaign Tracking Parameters in Redshift 【发布时间】:2018-02-08 22:03:54 【问题描述】:我正在尝试在对网站主页的查询中捕获具有跟踪参数的 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 文档指出:
搜索包含元字符的字符串,例如'. * | ? ‘, 依此类推,使用两个反斜杠('\\')转义字符
我试过单斜杠和双斜杠。单斜杠返回的结果比我预期的要多得多,而双斜杠不返回任何结果。我更习惯于用 javascript 编写正则表达式,因此我认为我在两者之间翻译时遇到了麻烦;非常感谢任何帮助。
【问题讨论】:
试试'^https?://test[.]com[?]'
。无需逃避/
。
@WiktorStribiżew '^https?://test[.]com/[?]' 工作...谢谢
【参考方案1】:
/
符号不是特殊的正则表达式元字符,您不应对其进行转义。此外,为了避免.
或?
转义的问题,您可以将它们放入括号表达式中:
WHERE t.url ~ '^https?://test[.]com[?]'
它将匹配:
^
- 字符串开头
https?://test[.]com[?]
- http://test.com?
或 https://test.com?
。
【讨论】:
以上是关于在 Redshift 中使用活动跟踪参数捕获 URL 时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章