Я новичок в многомерных выражениях, и у меня возникла проблема с фильтрацией значений из суммирования.
Мы хотим выполнить вычисления нормализации, в частности количество (q), деленное на основу (b), чтобы получить интенсивность (I). Формула довольно проста: I=q/b.
НАША КУБИЧЕСКАЯ СТРУКТУРА:
У нас есть таблицы фактов FactQuantity и FactBasis, каждая из которых привязана к нашей таблице измерений DimOrg и DimTime. Оба измерения имеют иерархию: месяцы объединяются в годы в DimTime, а местоположения объединяются в бизнес-единицы и группы в DimOrg.
Таблицы фактов не синхронизированы друг с другом: просто потому, что количество существует для определенного org_id и времени, не гарантируется существование основы для того же самого org_id и времени.
МОЯ ПОПЫТКА РЕШЕНИЯ:
Базовая форма вычисляемого члена проста: [Показатели].[Количество]/[Показатели].[Основание].
Это прекрасно работает, когда мы просматриваем оба измерения на самом низком уровне, но проблемы возникают, когда вы сворачиваете измерения и начинаете агрегирование.
Проблема заключается в том, что включаются значения количества, которые не имеют соответствующего базового значения в то же время и в том же месте, что делает числитель слишком большим и, следовательно, неверным.
БЫСТРЫЙ ПРИМЕР:
org_id 001 в группе A имеет основу 100 и количество 1000, поэтому его расчетная интенсивность составляет 1000/100 = 10. До сих пор хорошо. org_id 002 также в Группе A не имеет основы, но имеет количество 2000, поэтому его рассчитанные ошибки интенсивности отсутствуют. Отлично.
Сведение к Группе А суммирует количество (3000) и базис (100), оставляя расчетную интенсивность 30, что неверно для Группы. 2000 год нужно было исключить, потому что у него не было соответствующего базового значения для того же org_id и времени.
Любая помощь, которую вы можете предложить, очень ценится.
Спасибо,