Skip to content

Сущность

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

Сущность необходима для регистрации данных в приложении. Каждая сущность объединяет в себе данные из разных источников (таблиц).

Пример: CUSTOMER (CUSTOMER_ID), OFFER (CUSTOMER_ID + CAMPAIGN_ID) и т.д.

Каталог сущностей в SDK

from FSClient.catalogue import entity  # Каталог сущностей

entity

Подробная информация о сущности в SDK:

from FSClient.catalogue import entity  # Каталог сущностей

entity.CUSTOMER

Реестр сущности

Реестр сущности = якорная таблица, которая содержит целевой набор значений сущности, на основе которого строятся датасеты.

Пользователь может определить загрузчик реестра сущности в опциях сущности.

Требования к загрузчику реестра сущности:

  • Таблица загрузчика содержит эталонный (полный и актуальный) набор значений сущности
  • Загрузчик зарегистрирован под той же сущностью, по которой определяется реестр
  • Тип загрузчика = "готовые переменные" (final)

Определение реестра сущности в SDK:

from FSClient.catalogue import (
    entity as ent,  # Каталог сущностей
    loader as load  # Каталог загрузчиков
)

edit_entity = ent.CUSTOMER.edit()  # редактирование сущности

# загрузчик готовых фичей CUSTOMER_HIST_FINAL как реестр
edit_entity.registry = load.CUSTOMER_HIST_FINAL

edit_entity.save()  # сохранение изменений сущности

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

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

  • для операции "Слияние датасетов" - объединяются значения сущности из всех таблиц загрузчиков готовых переменных
  • для операции "Узел перехода" - объединяются значения сущности из всех используемых таблиц без связи (при этом сохраняется требование обязательного наличия в конфигурации хотя бы одной переменной без связи)

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