Атрибут MSAS m2m не разрешен должным образом - PullRequest
0 голосов
/ 09 декабря 2018

Я не эксперт в 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.

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

Ответы [ 2 ]

0 голосов
/ 23 мая 2019

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

0 голосов
/ 09 декабря 2018

Я не уверен, что полностью понял вашу проблему, но я понял, что, поскольку в индикаторе факта нет оси проекции, следовательно, для аналогичных 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
...