Skip to main content

Модуль подготовки модели данных

Цель

Автоматическое формирование связей между загруженными таблицами в модели данных: определение ключевых полей и типов соединений между ними в зависимости от их данных.

Концепт для интерфейса

image.png

В диспетчере данных в разделе Модель данных необходимо добавить 3 управляющих кнопки:

  1. Сформировать модель – отправляет на бэкенд набор данных и метаданных по столбцам таблиц в итоговой модели: названия столбцов, их типы данных, количество уникальных значений, поля в сортировке. Вызывается модель ИИ для формирования связей между таблицами. Отображает в интерфейсе результаты работы модели.
  2. Применить – применяет предложенные связи, соединяет таблицы в единую модель данных.
  3. Отменить – удаляет все предложенные связи, возвращает модель данных в состояние, предшествующее использованию ИИ.

Кнопки "Сохранить" и "Удалить" появляются только тогда, когда нажата кнопка "Сформировать модель" и исчезают после нажатия одной из них.

Любой переход в другой раздел вызывает системное сообщение, оповещающее пользователя о том, что все изменения будут отменены. 

Сформированная ИИ модель представляет собой набор полей и их соединений в области предварительного просмотра; пунктирные линии между полями таблиц в области модели.

Сформированная, но не примененная модель позволяет пользователю вносить изменения в созданные связи, удалять их и добавлять новые.

Концепт для ML

Модель получает из интерфейса набор данных и метаданных по столбцам таблиц в итоговой модели: названия столбцов, их типы данных, количество уникальных значений, поля в сортировке. Используя эту информацию, а также некоторые вычисляемые характеристики, необходимо определить поля для создания связей между предложенными таблицами, тип связи (вид Join) и условия соединения (On). Для этого можно выполнить:

  • Анализ уникальности полей
  • Частотный анализ
  • Оценку названий полей
  • Определение полей в сортировке и фильтрации
  • Поиск совпадающих значений
  • Методы машинного обучения

Кроме того, при формировании связей существует ряд ограничений. Так, не должно быть создано модели, в которой существует хотя бы одно "кольцо" – замкнутая связь между 3 и более таблицами.

В качестве выхода модели необходимо предоставить пары полей в таблицах, тип Join (Inner, Left, Right или Full) и условие соединения On (=, >, < и т.д.).

Задание на разработку ML

На вход модели ИИ попадают следующие данные из итоговой модели данных проекта:

  • Названия таблиц вида Table
  • Названия столбцов с принадлежностью таблице вида Table.Column
  • Типы данных для каждого из столбцов вида Int32, String, Decimal (2)
  • Количество уникальных значений в столбце в процентном соотношении к общему числу значений вида n%
  • Сами значения из столбца, если объём невелик, или подвыборка из столбца (н-р, как результат сэмплирования), если данных достаточно много
  • Информация о полях в сортировке и первичных ключах вида Order By (список полей со всех таблиц) и Primary Key (список полей со всех таблиц)
  • Разрешено ли использовать одну таблицу более чем в одной модели

Для получения наиболее корректного результата рекомендуется разбить работу модели на 4 блока: определение групп таблиц для связей, определение типа Join и условия соединения в зависимости от контекста каждой группы,  классификацию столбцов внутри групп для выявления ключей соединения, формирование связей между таблицами (выход модели).

Формирование групп для соединения

Для FastBoard принципиально важно, чтобы все имеющиеся в модели данных таблицы были соединены. Если между таблицами нет связи, то они должны быть разделены на разные группы.

image.png

image.png

image.png

 


 

 

 

 

 

Набор входных таблиц со столбцами необходимо разбить по группам таким образом, чтобы выполнялись следующие правила:

  • Ни одна таблица не должна встречаться более чем в одной группе, если не установлена соответствующая настройка
  • Могут быть группы из одной таблицы, причём их число должно быть минимизировано
  • Должна быть как минимум одна группа из более чем одной таблицы
  • Не должно быть создано группы, в которой существует хотя бы одно "кольцо" – замкнутая связь между 3 и более таблицами

Формирование групп происходит в зависимости от контекста использования таблиц. Модель должна определять этот контекст, опираясь на названия таблиц и другие входные данные (пример: связь между Income и Goods для определения результатов продаж по категориям товаров)

Определение типа и условия соединения

Исходя из выбранного контекста модель должна определять тип связи между таблицами внутри группы:

  • Если необходимо сохранить все строки из обеих таблиц в итоговом результате, то FULL JOIN
  • Если необходимо сохранить все строки из одной таблицы в итоговом результате, то RIGHT JOIN
  • Если нет необходимости сохранить все строки, а в итоговом результате должны быть только значения из пересекающихся строк, то INNER JOIN

ON возможен только по равенству столбцов...

Другие типы JOIN и условий ON в FastBoard не поддерживаются!