我不是MSAS Cube的专家,所以也许这很明显,但这阻碍了我们团队的重要功能。
我们有一个“指标”事实表(一个来自计算器的基本值),该表针对特定日期进行计算。指示器具有versionId,可以按照功能规则对其进行分组。
它就像:
From Date, Value, NodeId, VersionId
D0 - 1.45 - N2 - V0
我们有一个“ VersionsAssociation”事实表,其中列出了所有有效且可见的版本(与“ Indicator”事实表中的版本完全相同),并显示了什么日期。
为满足客户需求,某些版本在多个日期可见。 例如,对于日期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
...
在我们的多维数据集模型中,“指标”事实具有一个“从日期”,即它们要计算的日期,但没有“到日期”,因为可见时并不取决于指标,而是由指标决定的。 “ VersionAssociation”。
这意味着在“维度使用情况”面板中,我们从“指标”指向“日期”维度上的“ VersionAssociation”具有多对多关系。
到目前为止,这部分工作正常。当我们在Excel中选择“ To Date” = D1时,我们会看到从D0复制的指示符具有正确的值(无重复)。
然后我们有一个叫做投影的东西,我们在其中将指标值与特定维度分开。为此,我们有一个名为“ Projection”的第三个度量值组,其值称为“ Weight”。
权重具有“截止日期”,因为权重是针对特定日期计算的,即使将指标从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
问题出在这里:
要应用“投影”权重,我们在“指标”度量值组的度量值上使用度量表达式,其值类似于“ [[Value Unit] * [Weight]””。
由于某些原因,这会导致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指令。
这很长而且很复杂,但是我们被困住了。
答案 0 :(得分:0)
我不确定我是否完全理解了您的问题,但是我理解的是,由于事实指标中没有投影轴,因此对于类似的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
答案 1 :(得分:0)
对于关闭,事实证明不可能达到预期的行为(就团队尝试而言)。因此我们恢复到将3个表中的2个合并在一起,并且仅在度量值组中进行多对多联接。