【发布时间】:2016-12-08 22:24:21
【问题描述】:
我在构建 Netezza 查询的输出时遇到问题。我正在处理网络数据,需要能够计算接收流量的不同 URL。问题是大多数行都包含在计数之前需要删除的 URL 参数。
这是我的 URL 的样子:
- www.site.com/page?utm_source=xxx&utm_campaign=yyy
- www.site.com/another?cmp_code=zzz&cmp_vendor=aaa
- www.site.com/page?cmp_code=nnn&cmp_vendor=bbb
- www.site.com/another
- www.site.com/something
我想返回的是这样的:
- www.site.com/page
- www.site.com/another
- www.site.com/page
- www.site.com/another
- www.site.com/something
我的查询如下。它运行没有错误,但它没有产生我想要的结果。
SELECT UID, TIMESTAMP, SUBSTR(FULL_URL, 1, INSTR(FULL_URL, '?', -1) AS MY_URL
FROM MY.TABLE
LIMIT 100;
这是结果
- www.site.com/page
- www.site.com/another
- www.site.com/page
- 空
- 空
您可以在此处看到,如果我的 URL 包含问号,我将得到我想要的确切结果。如果它不包含 URL 参数,那么它什么也不返回。
我也尝试过正则表达式方法,但目前这给了我一个Count field incorrect 错误。
SELECT UID, TIMESTAMP, REGEXP_REPACE(FULL_URL, (\.\+)(\/?)(\.\*), $1) AS MY_URL
FROM MY.TABLE
LIMIT 100;
我还是 Netezza 的新手,我没有看到完成此操作所需的逻辑或运算符。谁能指出我正确的方向?
【问题讨论】:
-
试试
regexp_extract(full_url,'^[^?]+') -
这正是我所需要的。感谢您的帮助!