3-4. Восстановление непрямых ассоциаций

Из-за «плоской» структуры таблицы связей теряются связи между таблицами, которые соединены не напрямую. Например, у нас сделки соединены с контактами, а контакты с компаниями. По идее, мы ожидаем, что сможем анализировать данные по сделкам в разрезе компаний, за счет связи по контактам. Но пока это не так.

В таблице со сделками отсутствует ID компании, а т.к. каждый фрагмент таблицы связей основывался только на данных из «родной» таблицы, связи между сделками и компаниями неоткуда взяться. Но сейчас мы это исправим. Я называю этот процесс «Восстановлением непрямых ассоциаций».

Именно для его осуществления мы создавали временные таблицы связей. Перейдите во вкладку Link Table TMP, и допишите после загрузки полей связи для сделок вот такую конструкцию:

    left join (Сделки.LinkTMP) load distinct
    "ID контакта",
    "ID компании"
    resident Контакты;

Таким образом, мы добавим в записи к полям связи сделок идентификаторы компаний, на основе совпадения значений ID контактов и компаний из таблицы Контакты.

Операция Join присоединяет к указанной таблице совпадающие значения полей, на основе общих полей между соединямыми таблицами.

Загрузим данные. Теперь в у записей связей сделок есть ID компании, и значит работают ассоциации между сделками и компаниями.

В реальных проектах вам может потребоваться сделать несколько последовательных джойнов для восстановления всей нужной цепочки связей. Также этот метод хорошо работает для создания связей в логике один ко многим, т.к. для одного ID сущности может быть сопоставлено несколько ID другой сущности. Например если сделка привязана к нескольким контактам.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *