Я не эксперт в MSAS Cube, поэтому, может быть, это очевидно, но это блокирует важную функцию в нашей команде.
У нас есть таблица фактов "Индикаторы" (основные значения из калькулятора)), которые рассчитываются на конкретную дату.у индикаторов есть идентификатор версии, чтобы сгруппировать их в соответствии с функциональным правилом.
Это выглядит так:
From Date, Value, NodeId, VersionId
D0 - 1.45 - N2 - V0
У нас есть таблица фактов "VersionsAssociation", в которой перечислены все версии (оченьверсии, указанные в таблице фактов «Индикатор»), которые являются действительными и видимыми и на какую дату.
Для соответствия потребностям клиента некоторые версии доступны с нескольких дат.Например, версия, вычисленная для даты D0, может быть видимой / повторно записанной для даты D1, D2, ...;поэтому для конкретной версии V0 в "VersionAssociation" мы должны иметь:
VersionId , Date From (computed), Date To (Visible at what date)
V0 - D0 - D0
V0 - D0 - D1
V0 - D0 - D2
V0 - D0 - D3
...
В нашей модели куба факты "Indicators" имеют "From Date",дата, для которой они вычисляются, но без «На дату», потому что когда они видны, это зависит не от индикатора, а от решения «VersionAssociation».
Означает, что на нашей панели «Использование измерений»У нас есть отношение «многие ко многим» из «Индикатора», указывающего на «Ассоциация версий» в измерении «На дату».
Пока что эта часть работает, как и ожидалось.Когда мы выбираем «До даты» = D1 в Excel, мы видим индикаторы, повторно записанные из D0, с правильными значениями (без дублирования).
Затем у нас есть вещь, называемая проекцией, где мы разделяем значение индикатора вместе с определеннымизмерение.Для этого у нас есть третья группа мер под названием «Проекция», со значениями под названием «Вес».
Веса имеют «На дату», потому что вес рассчитывается на определенную дату, и даже если индикаторкопируется из D0 в D1, когда проецируется, она проецируется с использованием весов D1.
Также мы дублируем вес для всех доступных с даты, что странно, но без этого результат - чистый хаос.
Значение, которое мы имели бы в весах:
NodeId,From Date, To Date, Projection Axis, Weight
N2 , D0 , D0 , P1 , 0.75
N2 , D0 , D0 , P2 , 0.25 (a value on node N2 would be split into 2 different values, where the sum is still the same)
N2 , D0 , D1 , P1 , 0.70
N2 , D0 , D1 , P2 , 0.30
Здесь возникает проблема:
- Группа мер "Проекция" и "Индикатор" напрямую связана с измерением«Проекция».
- «Проекция» имеет прямую ссылку на измерение «С даты» и «До даты».
- «Индикатор» имеет прямую ссылку на измерение «С даты», но тольком2м ссылка на измерение «На дату» через группу мер «Ассоциация версий».
Чтобы применить веса проекции, мы используем выражение меры для измерений из группы показателей «Индикатор».с чем-то вроде «[Единица стоимости] * [Вес]».
По причинам, это приводит к тому, что MSAS не корректно определяет вес, который может применяться к определенному значению в группе мер «Индикатор».
Например, если мы посмотрим в Excel и запросим дату D1 (одинаковое поведение для всех дат), на проекции Axsi P1 мы получим:
Value Weight
1.45 * 0.75 (Weight: From Date D0, To Date D0, P1)
+ 1.45 * 0.70 (Weight: From Date D0, To Date D1, P1)
для D1 и P2у нас есть:
Value Weight
1.45 * 0.25 (Weight: From Date D0, To Date D0, P2)
+ 1.45 * 0.30 (Weight: From Date D0, To Date D1, P2)
Это приводит к тому, что значения ничего не значат и не могут быть прочитаны.
Итак, для чего все это нужно, это попросить способ ограничить веса, которые могутприменяться в выражении меры.Мы пытались использовать область действия «С даты», «До даты» с показателем «Вес» или «Значением», но куб никогда не переходил в наших инструкциях по SCOPE.
Это очень долго, исложно, но мы застряли.