2016-12-08 3 views
2

У меня возникли проблемы с структурированием вывода запроса Netezza. Я работаю с веб-данными и должен иметь возможность подсчитывать разные URL-адреса, которые получают трафик. Проблема заключается в том, что большинство строк содержат параметры URL, которые необходимо удалить до подсчета.Операторы строк в Netezza SQL Query

Это то, что внешний вид моего URL как:

  • www.site.com/page?utm_source=xxx & utm_campaign = ууу
  • www.site.com/another?cmp_code=zzz & cmp_vendor = ааа
  • www.site.com/page?cmp_code=nnn & cmp_vendor = БББ
  • 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
  • NULL
  • NULL

Вы можете видеть здесь, что если мой URL-адрес содержит знак вопроса, я получаю точный результат, который я хочу. Если он не содержит параметров URL, он ничего не возвращает.

Я также пробовал подход с регулярным выражением, но это в настоящее время дает мне ошибку Count field incorrect.

SELECT UID, TIMESTAMP, REGEXP_REPACE(FULL_URL, (\.\+)(\/?)(\.\*), $1) AS MY_URL 
FROM MY.TABLE 
LIMIT 100; 

Я все еще новичок в Netezza, и я не вижу логики или операторов, которые мне нужны для этого. Может кто-то указать мне верное направление?

+1

попробовать 'regexp_extract (full_url, '^ [^?] +')' –

+0

Это делает именно то, что мне нужно. Спасибо за помощь! – Lenwood

ответ

2

Это должно работать:

create temp table myTable (Full_URL varchar(5000)); 
insert into myTable values('www.site.com/page?utm_source=xxx&utm_campaign=yyy'); 
insert into myTable values('www.site.com/another?cmp_code=zzz&cmp_vendor=aaa'); 
insert into myTable values('www.site.com/page?cmp_code=nnn&cmp_vendor=bbb'); 
insert into myTable values('www.site.com/another'); 
insert into myTable values('www.site.com/something'); 

select regexp_replace(Full_URL,'\?.*','') 
from myTable