Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
Ноябрь 21, 2017, 07:30:12 am

Автор Тема: Нечеткое сравнение текстовых полей (Qlikview, Qlik Sense)  (Прочитано 1844 раз)

Оффлайн Ирина

  • Наставник
  • **
  • Сообщений: 78
  • Рейтинг: +5/-0
    • Просмотр профиля
Добрый день!
Может кто-то подскажет, как сделать нечеткое сравнение двух текстовых полей в таблице.
Например, у меня есть 2 базы данных с названиями брендов. Мне нужно получить следующую таблицу:

Название бренда -База 1      Название бренда - База 2        Результат сравнения
Данон                                    Донон                                        Сходятся
Буги Вуги                              БугиВуги                                   Сходятся

В QlikView есть нечеткий поиск, идея близка, только нужно выводить результат сравнения.
Нашла только одну тему на форуме, но без ответа https://community.qlik.com/message/8913#8913

Оффлайн kvv

  • Гуру
  • ***
  • Сообщений: 135
  • Страна: 00
  • Рейтинг: +36/-0
    • Просмотр профиля
Re: Нечеткое сравнение текстовых полей
« Ответ #1 : Август 20, 2015, 12:17:40 pm »
Добрый день.
Думаю, самый правильный способ - это все сделать "ручками". То есть, сначала выбрать строки где есть полное совпадение а дальше "ручками".

Дополнительная информация/вопросы:
1. Кроме полей что вы написали есть еще какие-то?
2. Сколько строк нужно "сопоставить"?

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 981
  • Страна: ru
  • Рейтинг: +97/-0
    • Просмотр профиля
Re: Нечеткое сравнение текстовых полей
« Ответ #2 : Август 20, 2015, 01:51:57 pm »
Привет.
Таблицу соответствий придется делать руками.
А потом - маппингом.
А я бы еще и первоисточники просмотрел бы на предмет унификации, чтобы не ломать потом голову на сопровождение.

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

Re: Нечеткое сравнение текстовых полей
« Ответ #2 : Август 20, 2015, 01:51:57 pm »

Оффлайн bibis

  • Наставник
  • **
  • Сообщений: 78
  • Рейтинг: +31/-0
    • Просмотр профиля
Re: Нечеткое сравнение текстовых полей
« Ответ #3 : Август 20, 2015, 02:42:25 pm »
Добрый день. Действительно вижу 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 .....

Но если различных данных много и написать их могут как угодно- не выйдет

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 981
  • Страна: ru
  • Рейтинг: +97/-0
    • Просмотр профиля
Re: Нечеткое сравнение текстовых полей
« Ответ #4 : Август 20, 2015, 03:57:04 pm »
Привет,
4.Административный - заставить заполнять базу нормально.

Четвертый вариант считаю оптимальным)
Полностью поддерживаю :)

Оффлайн Ирина

  • Наставник
  • **
  • Сообщений: 78
  • Рейтинг: +5/-0
    • Просмотр профиля
Re: Нечеткое сравнение текстовых полей
« Ответ #5 : Август 20, 2015, 04:03:17 pm »
Если бы можно было заставить заполнять базу нормально, я бы уже это сделала.
База скачивается со стороннего ресурса, поэтому об этом даже речи идти не может.

Ручками это все понятно, интересует именно автоматизация этого процесса.

Что подразумевается под вариантами?
1.мапинг - что это такое?
2.условные операторы с использованием like

Оффлайн kvv

  • Гуру
  • ***
  • Сообщений: 135
  • Страна: 00
  • Рейтинг: +36/-0
    • Просмотр профиля
Re: Нечеткое сравнение текстовых полей
« Ответ #6 : Август 20, 2015, 04:31:50 pm »
И все же, данную задачу, практически не возможно, полностью автоматизировать.
Автоматизировать возможно до какого то этапа, а дальше все равно "ручками".

Для примера:
Сначала вычисляем совпадения; дальше убираем пробелы в начале и конце; далее убираем пробелы вообще и т.д.


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

Re: Нечеткое сравнение текстовых полей
« Ответ #6 : Август 20, 2015, 04:31:50 pm »

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 981
  • Страна: ru
  • Рейтинг: +97/-0
    • Просмотр профиля
Re: Нечеткое сравнение текстовых полей
« Ответ #7 : Август 20, 2015, 05:01:11 pm »
Ручками это все понятно, интересует именно автоматизация этого процесса.
Слишком затратно.
Проще и быстрее автоматизировать процесс контроля за корректностью таблицы сопоставления, для отлова новых пар.

Оффлайн bibis

  • Наставник
  • **
  • Сообщений: 78
  • Рейтинг: +31/-0
    • Просмотр профиля
Re: Нечеткое сравнение текстовых полей
« Ответ #8 : Август 20, 2015, 05:15:01 pm »
мапинг:
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 ... и так для каждого.