Имена сущностей

ViTalk работает с сущностями (показатели, атрибуты, значения атрибутов, измерения) в базе данных ViQube. Чтобы при запросе выделялись корректные сущности, необходимо, чтобы их можно было найти, используя интуитивные обозначения на естественном языке. Рекомендации к именованию сущностей приведены здесь.

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

Поэтому, для управления именами сущностей, используемыми в ViTalk, предоставляется несколько инструментов.

В разделе синонимы описано, как можно настроить глобальные (независимые от конкретных показателей, измерений и др. сущностей) синонимичные фразы, а также можно указать части сущностей, которые должны игнорироваться при их поиске в ViTalk (например, в измерении Медиастор_клиенты, можно срезать часть Медиастор_).

В данном разделе описана работа с конфигурационным файлом entity_names.json. Конфигурация в этом файле позволяет переименовать или задать альтернативные имена конкретным сущностям БД. Именно заданные имена будут использоваться ViTalk для распознавания присутствия сущностей в запросе на естественном языке.

Файл entity_names.json генерируется после заполнения файла metadata.json. В него попадают те сущности, которые не будут игнорироваться ViTalk в соответствии с конфигурацией в metadata.json.

Файл имеет следующую структуру:


{
  "measure_groups": {
      "ИМЯ_ГРУППЫ ПОКАЗАТЕЛЕЙ_1": {
        "имя показателя": [
          "новое имя показателя1",
          "новое имя показателя2"
        ],
        "имя показателя2": [
          ...
        ],
        ...
      },
      "ИМЯ_ГРУППЫ ПОКАЗАТЕЛЕЙ_2": {
        ..
        },
        ...
    }
  },
  "dimensions": {
    "Имя измерения1" {
      "vitalk_name": [
        "Новое имя измерения1", ...
      ],
      "attributes": {
        "имя_атрибута1": [
          "Новое имя атрибута1", ...
        ],
        "имя_атрибута2": [...],
        ...
      }
      "roles": {
        "Имя ГП": {
          "Имя роли измерения1": ["новое имя роли"],
          ...
        },
        ...
      }
    }
  },
  "attribute_values": []
}

Далее, опишем настройку имен разных типов сущностей.

Переименование показателей

Чтобы переименовать показатель или добавить новое имя, необходимо найти этот показатель в разделе "measure_groups".

Например, мы хотим, чтобы показатель “отгрузка” также назывался “продажи”. Для этого достаточно добавить слово “продажи” в список имён.

"measure_groups": {
  "Медиастор_Оборот": {
   "Оборот": [
    "Оборот"
   ],
   "прибыль": [
    "прибыль"
   ],
    "отгрузка": [
    "отгрузка",
    "продажи" # добавлено новое имя
   ],
   ...

Переименование измерений, ролей измерений и атрибутов

Чтобы переименовать измерение, его атрибуты или роли, необходимо найти это измерение в разделе "dimensions". Предположим, мы хотим, чтобы атрибут “филиал” измерения “Медиастор_филиал” можно было найти по слову "офис".

В таком случае нам нужно найти атрибут “филиал” в поле “attributes” и дописать имя “офис”.

"dimensions": {
  ...,
  "Медиастор_Филиал": {
   "vitalk_name": [
    "Медиастор_Филиал"
   ],
   "attributes": {
    "филиал": [
     "филиал",
     "офис" # добавлено новое имя
    ]
   },
   "roles": {
    "Медиастор_Оборот": {
     "Медиастор_Филиал": [
      "Медиастор_Филиал"
     ]
    },
    "Медиастор_Дебиторка": {
     "Медиастор_Филиал": [
      "Медиастор_Филиал"
     ]
    },
    "Медиастор_Расходы": {
     "Медиастор_Филиал": [
      "Медиастор_Филиал"
     ]
    }
   }
  },

Чтобы отредактировать имя роли измерения, нужно найти раздел с ролями для интересующей группы показателей (поле roles).

Поле vitalk_name позволяет отредактировать имя не ролевого измерения.

Переименование значений атрибутов.

Чтобы переименовать значения атрибутов (фильтры), нужно самостоятельно дописать их в раздел attribute_values.

{
  "measure_groups": {
   ...
  },
  "dimensions": {
   ...
  },
  "attribute_values": []
}

Формат записи для переименования и добавления имён следующий:

  {
   "dimension": "ИМЯ ИЗМЕРЕНИЯ", # можно использовать только оригинальное имя, а не переименование
   "attribute": "ИМЯ АТРИБУТА",
   "value": "ЗНАЧЕНИЕ АТРИБУТА",
   "new_values": [
    "новое значение 1",
    "новое значение 2"
   ]
  }

Приведём примеры:

"attribute_values": [
  {
   "dimension": "Медиастор_Филиал",
   "attribute": "филиал",
   "value": "Москва",
   "new_values": [
    "Столица",
    "Москва"
   ]
  },
  {
   "dimension": "Медиастор_Клиенты",
   "attribute": "Наименование клиента",
   "value": "«Красноярский завод цветных металлов имени В. Н. Гулидова»",
   "new_values": [
    "КЗЦМ",
    "«Красноярский завод цветных металлов имени В. Н. Гулидова»"
   ]
  }
 ]