Обновление данных с помощью Bulloader

Я использую скрипт на Python и загружаю некоторые данные в серверную часть своего движка.

Вот это определение в bulkloader.yaml

- kind: Subcategory
  connector: csv
  connector_options:
    encoding: utf-8
  property_map:
    - property: __key__
      external_name: id
      export_transform: transform.key_id_or_name_as_string
      import_transform: transform.none_if_empty(int)

    - property: name
      external_name: name

    - property: categoryId
      external_name: categoryId    
      export_transform: transform.key_id_or_name_as_string
      import_transform: transform.none_if_empty(int) 

    - property: language
      external_name: language 

    - property: active
      external_name: active
      import_transform: bool

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

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

1 ответ

К сожалению, нет простого способа объединить свойства с массовым загрузчиком. Как вы заметили, он создает сущности на основе ваших CSV-данных, затем сохраняет их с известными ключами, перезаписывая существующие сущности. Чтобы выполнить слияние, вам нужно будет массово загрузить существующие сущности, выполнить слияние в вашем наборе данных, а затем загрузить объединенные сущности.

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

Другие вопросы по тегам