Если мы правильно понимаем и упрощаем usecase, ваш набор данных имеет две меры A и B. Для тех же записей один файл приносит меру «A», а другой файл принимает меру «B». И вы хотите свободно обновлять или удалять данные для измерения A или B независимо.
Существует несколько способов достижения этого.
Сначала вы можете отделить меры: вместо записей, которые имеют как поля А, так и В, у вас будет две записи с общим полем «значение» и поле «тип измерения», чтобы различать оба типа измерений. Этот дизайн является гибким, потому что позже вы можете ввести новую меру «C», которая сама загружается из другого файла.
Наиболее элегантным вариантом является, вероятно, использование распределенной архитектуры ActivePivot с полиморфным распределением. Вы бы установили два независимых куба, один из которых имел только меру «А», другой куб с мерой «В». Затем присоедините кубы вместе с полиморфным распределением, ActivePivot объединит их вместе «на лету» и представит обе меры, как если бы они принадлежали к одному и тому же (виртуальному) кубу.
Наконец-то быстрое и грязное решение: настройте свои меры как поля «nullable» в ActivePivot. Таким образом, когда вы хотите удалить меру «A», вы фактически записываете «null» в поля «A» ваших записей.
Не могли бы вы добавить информацию о вашей загрузки архитектуры? Используете ли вы реляционные магазины/хранилище ActivePivot? Кажется, что у вас есть исходные факты, отделенные от ваших мер. Ваши меры содержатся в отдельном магазине, связанном с магазином, содержащим исходные факты? Есть ли у них какая-то причина, по которой вам нужно отделить первоначальные факты от ваших мер? – David
Привет, Дэвид, Оба файла используются в одном хранилище Relational (ActivePivot). Мы получаем распространение данных по нескольким файлам, поэтому загружаем первый файл для создания фактов, а затем добавляем дополнительные меры к существующим фактам, используя второй файл. Отвечает ли это на ваш вопрос? – obrienk