Атрибут MSAS m2m не разрешен должным образом

Я не специалист по 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

...

В нашей модели куба факты "Индикаторы" имеют "От даты", дату, для которой они рассчитаны, но не "До даты", потому что когда они видны, это не до индикатора, а скорее определяется "Ассоциацией версий",

Это означает, что на нашей панели "Использование измерений" мы имеем отношение "многие ко многим" из "Индикатора", указывающего на "Ассоциация версий" в измерении "На дату".

Пока что эта часть работает как положено. Когда мы выбираем "До даты" = 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 (одинаковое поведение для всех дат), на Projection 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.

Это очень долго и сложно, но мы застряли.

1 ответ

Я не уверен, что полностью понял вашу проблему, но я понял, что, поскольку в индикаторе факта нет оси проекции, следовательно, для аналогичных FromDate и ToDate при выборе Projection они повторяют значения. пример из ваших данных

D0, D0, P1, 0,75 D0, D0, P2, 0,25

для этого значение индикатора повторяется 1,45 для обеих строк, где оно должно быть 1,45*0,75 для первой строки и 1,45*0,25 для второй.

Если это проблема, попробуйте следующий запрос

with member Measures.IndicatorTest
as 
([DimFromDate].[FromDate].CurrentMember,
[DimToDate].[ToDate].CurrentMember,
[Value Unit])

member Measures.ProjectionTest
as 
([DimFromDate].[FromDate].CurrentMember,
[DimToDate].[ToDate].CurrentMember,
[DimProjection].[Projection].CurrentMember
[Weight])


member Measures.WeightedIndicator
as
Measures.IndicatorTest*Measures.ProjectionTest

select Measures.WeightedIndicator
on columns,
nonempty
(
[DimFromDate].[FromDate].[FromDate],
[DimToDate].[ToDate].[ToDate],
[DimProjection].[Projection].[Projection]
)
on rows 
from yourCube

Для закрытия, как оказалось, ожидаемое поведение невозможно (насколько постаралась наша команда). поэтому мы вернулись к объединению двух из трех таблиц и получили только одно объединение "многие ко многим" в группы мер.

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