Неофициальный форум пользователей Qlik Sense & Qlikview

Для разработчиков => Вопросы по Qlik Sense & QlikView => Тема начата: asdlegioner от 05 декабря 2014, 10:32:05

Название: Возможен ли такой фильтр. (парсинг строки параметров URL)
Отправлено: asdlegioner от 05 декабря 2014, 10:32:05
Привет, такой вопрос:

У меня есть поле в excel с таким содержанием:
http://www.сайт.ru/promo.html?utm_source=YD&utm_medium=cpc&utm_content=prodvizhenie&utm_campaign=obshhie_poisk_spb&yclid=5807162979809803946

Можно ли написать какой нить фильтр который выводил бы значения переменных из ссылки к примеру из utm_source=YD брал значение YD, и так далее по всем переменным в cсылке.
Название: Re: Возможно ли такой филтр.
Отправлено: admin от 05 декабря 2014, 10:52:01
Конечно, как ни странно, но это тоже структурированная информация.
? - начало строки параметров
& - разделитель параметров
= - разделитель параметр/значение.
Думаю, для скрипта понадобится написание макроса.
Название: Re: Возможно ли такой фильтр. (парсинг строки параметров URL)
Отправлено: asdlegioner от 05 декабря 2014, 11:04:16
А можно пример?))
Название: Re: Возможен ли такой фильтр. (парсинг строки параметров URL)
Отправлено: admin от 05 декабря 2014, 01:04:02
Для написания примера мне не совсем понятна задача, но вот перечень функций, с примерами, которые могут помочь решить задачу самостоятельно:

len( s)
Длина строки s. Результат — целое число.

left( s , n)

Подстрока строки s. Результат — строка, содержащая первые n символов строки s.

right( s , n)
Подстрока строки s. Результат — строка, содержащая последние n символов s.

mid(s, n1[, n2 ])
Подстрока строки s. Результат — строка, начинающаяся с символа n1 с длиной n2 символов. Если переменная n2 отсутствует, функция возвращает правую часть строки, начинающуюся с символа n1. Позиции строки пронумерованы, начиная с 1.

index(s1 , s2[ , n])
Позиция подстроки. Эта функция возвращает начальную позицию вхождения n: подстроки s2 в строке s1. Если переменная n отсутствует, используется первое вхождение. Если n — отрицательное число, поиск выполняется, начиная с конца строки s1. Результат — целое число. Позиции строки пронумерованы, начиная с 1.

Интересна также
subfield(s, 'delimiter' [ , index ] )
В этой версии с тремя параметрами данная функция скрипта возвращает определенную подстроку большей строки s с разделителем «delimiter». index — дополнительное целое число, обозначающее подстроку, которая должна быть возвращена. Если index отсутствует, при использовании subfield в выражении поля в операторе load функция subfield укажет оператору load на автоматическое создание одной полной записи для каждой подстроки в s.
В версии с двумя параметрами функция subfield создает одну запись для каждой подстроки, которая может быть получена для строки s большего размера с разделителем «delimiter». При использовании нескольких функций subfield в одном операторе load будет получено декартово произведение всех сочетаний.

TextBetween(s , beforetext , aftertext [, n ])
Возвращает текст между вхождением n: beforetext и непосредственно следующим вхождением aftertext в строке s.

FindOneOf(text , characterset [ , n])
Возвращает позицию n: в строке text of любых символов, найденных в строке characterset. Если n отсутствует, возвращается позиция первого вхождения. Если соответствующая строка не найдена, возвращается 0.

Примеры можно найти в справке по Qlikview или в руководстве.

Название: Re: Возможен ли такой фильтр. (парсинг строки параметров URL)
Отправлено: asdlegioner от 05 декабря 2014, 01:48:53
А задача простая, есть два excel файла первый с доходами где указан источник трафика в виде урла http://www.сайт.ru/promo.html?utm_source=YD&utm_medium=cpc&utm_content=prodvizhenie&utm_campaign=obshhie_poisk_spb&yclid=5807162979809803946 и второй файл с расходами где указаны ключевые слова и номера объявлений.

Вот мне и надо из этой ссылки вцепить ключ и номер объявления и сопоставить их с расходами из второго файла, тогда я смогу подсчитать доход от клиента с учетом расходов на рекламу). Таким образом хочу настроить связь двух таблиц по фразе и номеру объявления.
Название: Re: Возможен ли такой фильтр. (парсинг строки параметров URL)
Отправлено: admin от 05 декабря 2014, 02:09:40
Ну вот скажем для utm_content

TextBetween([Url1],'utm_content=','&')