Добрый день!
Может кто-то подскажет, как сделать нечеткое сравнение двух текстовых полей в таблице.
Например, у меня есть 2 базы данных с названиями брендов. Мне нужно получить следующую таблицу:
Название бренда -База 1 Название бренда - База 2 Результат сравнения
Данон Донон Сходятся
Буги Вуги БугиВуги Сходятся
В QlikView есть нечеткий поиск, идея близка, только нужно выводить результат сравнения.
Нашла только одну тему на форуме, но без ответа https://community.qlik.com/message/8913#8913
Добрый день.
Думаю, самый правильный способ - это все сделать "ручками". То есть, сначала выбрать строки где есть полное совпадение а дальше "ручками".
Дополнительная информация/вопросы:
1. Кроме полей что вы написали есть еще какие-то?
2. Сколько строк нужно "сопоставить"?
Привет.
Таблицу соответствий придется делать руками.
А потом - маппингом.
А я бы еще и первоисточники просмотрел бы на предмет унификации, чтобы не ломать потом голову на сопровождение.
Добрый день. Действительно вижу 4 варианта, в зависимости от данных:
1.мапинг
2.условные операторы с использованием like
3.REGEXP в части SQL запроса
...
4.Админстративный - заставить заполнять базу нормально.
Четвертый вариант считаю оптимальным)
Ну это всё в скрипте .
Так можно прям в таблице что-то придумать типа :
if( (left(Column(1),1)=left(Column(2),1) and lenght(Column(1))=lenght(Column(2)) and right(Column(1),1)=right(Column(2),1)) or .....
Но если различных данных много и написать их могут как угодно- не выйдет
Привет,
Цитата: bibis от 20 августа 2015, 02:42:25
4.Административный - заставить заполнять базу нормально.
Четвертый вариант считаю оптимальным)
Полностью поддерживаю :)
Если бы можно было заставить заполнять базу нормально, я бы уже это сделала.
База скачивается со стороннего ресурса, поэтому об этом даже речи идти не может.
Ручками это все понятно, интересует именно автоматизация этого процесса.
Что подразумевается под вариантами?
1.мапинг - что это такое?
2.условные операторы с использованием like
И все же, данную задачу, практически не возможно, полностью автоматизировать.
Автоматизировать возможно до какого то этапа, а дальше все равно "ручками".
Для примера:
Сначала вычисляем совпадения; дальше убираем пробелы в начале и конце; далее убираем пробелы вообще и т.д.
Цитата: Ирина от 20 августа 2015, 04:03:17
Ручками это все понятно, интересует именно автоматизация этого процесса.
Слишком затратно.
Проще и быстрее автоматизировать процесс контроля за корректностью таблицы сопоставления, для отлова новых пар.
мапинг:
t1:
LOAD * inline [
prod
dove
dav
dave
bugvugi
bugi-bugi]
;
map:
Mapping LOAD * Inline
[
prod,norm_prod
dove,dove
dav,dove
dave,dove
bugvugi, bugi-vugi
bugi-vugi bugi-vugi];
t2:
LOAD ApplyMap( 'map',prod) as produkt Resident t1;
DROP Table t1;
Т.е. есть шанс, что со временем, нарастив файл с картой вы учтете все варианты написаний...но практика показывает, что пользователи очень изобретательны.
Условные операторы, если вдуматься, не подходят вряд ли у вас там 10-20 товаров, чтоб писать
if(prod like 'd*v*' , dove ... и так для каждого.