Skip to content

Связь сущностей

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

Настройка параметров:

  • Выбрать сущность-родитель и сущность-потомок
  • Режим загрузки - полный срез («full») или replace («replace»)

Параметры связи

Соотнесение дат и ключей:

  • Выбрать поле из источника, которое соответствует дате актуальности или ввести дату вручную
  • Соотнесение ключей — выбрать поля для ключей сущности родителя и потомка из источника
  • Указать тип связи между сущностями (1:1, 1:M, M:N)

Маппинг связи сущности

Предпросмотр:

Последним шагом создания загрузчика будет предпросмотр, где можно все увидеть всю конфигурацию загрузчика. Для регистрации нажать кнопку «Сохранить».

Пример конфигурации загрузчика связи сущностей в SDK

from FSClient.catalogue import (  # <--  импорт необходимых каталогов
    entity as ent,
    feature as feat,
    loader as load
)

new_loader_link = load.create(
    source='file',        # <-- Тип источника данных
    target='entity_link'  # <-- Загрузка связи сущностей
)

# Настройка конфигурации загрузчика
new_loader_link.config = {
        # Название загрузчика (Связь в каталоге будет называться так же)
        'loader_name': 'CUSTOMER_x_AGREEMENT_1_1', 
        # Пользовательское описание загрузчика
        'description': 'Связь между клиентом и договором', 
        # Разделитель
        'delimiter': ',', 
        # Сущность родитель
        'parent_entity': ent.CUSTOMER,
        # Сущность потомок
        'child_entity': ent.AGREEMENT,
        # Тип связи (допустимые: (1:1, 1:M, M:N))
        'kind': '1:1'
}

# Выбор локального файла
new_loader.select_file('data/customer_agreement.csv')

# Маппинг полей источника на сущности каталога
new_loader_link.mapping = {
    'from_dttm': 'from_dttm',
    'parent': [  # маппинг родительской сущности
        {
            'entity_key': ent.CUSTOMER.CUSTOMER_RK,
            'stg_column_name': 'customer_rk'
        }
    ],
    'child': [  # маппинг сущности потомка
        {
            'entity_key': ent.AGREEMENT.AGREEMENT_RK,
            'stg_column_name': 'agreement_rk'
        }
    ]
}

# Расписание
new_loader_link.schedule = "0 0 * * *"  # каждый день в полночь

# Регистрация
new_loader_link.save_x_execute()  # <-- регистрация (данных) загрузчика