У меня возникли проблемы с структурированием вывода запроса 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, и я не вижу логики или операторов, которые мне нужны для этого. Может кто-то указать мне верное направление?
попробовать 'regexp_extract (full_url, '^ [^?] +')' –
Это делает именно то, что мне нужно. Спасибо за помощь! – Lenwood