MSAS m2m 属性未按预期解析
MSAS m2m attribute not resolved as expected
我不是 MSAS Cube 方面的专家,所以这可能很明显,但这阻碍了我们团队的一项重要功能。
我们有 "Indicators" 的事实 table(来自计算器的基本值),是针对特定日期计算的。指标有一个 versionId,按照功能规则对它们进行分组。
它是这样的:
From Date, Value, NodeId, VersionId
D0 - 1.45 - N2 - V0
我们有 "VersionsAssociation" 的事实 table,它列出了所有有效的版本(与 "Indicator" 事实 table 中的版本完全相同)可见以及日期。
为了满足客户需求,某些版本在多个日期可见。
例如,为日期 D0 计算的版本对于日期 D1、D2、... 可能是 visible/recopied;所以对于特定版本 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",它们计算的日期,但没有 "To Date",因为它们何时可见不取决于指标, 而是由 "VersionAssociation".
决定
这意味着在我们的 "Dimension Usage" 面板中,我们在维度 "To Date" 上有一个从 "Indicator" 指向 "VersionAssociation" 的多对多关系。
到目前为止,这部分按预期工作。当我们 select "To Date" = D1 in Excel 时,我们看到从 D0 复制的指标,具有正确的值(无重复)。
然后我们有一个叫做投影的东西,我们将指标值与特定维度分开。为此,我们有一个名为 "Projection" 的第三个度量组,其值称为 "Weight".
权重有一个"To Date",因为权重是针对特定日期计算的,即使将指标从 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
问题来了:
- 度量组 "Projection" 和 "Indicator" 直接 link 到维度 "Projection"。
- "Projection" 直接 link 到 "From Date" 和 "To Date" 维度。
- "Indicator" 有一个直接 link 到 "From Date" 维度,但只有一个 m2m 引用到 "To Date" 维度,通过 "Version Association" 度量组.
为了应用投影权重,我们对 "Indicator" 度量组中的度量使用度量表达式,类似于“[Value Unit] * [Weight]”。
由于某些原因,这导致 MSAS 无法正确区分有资格应用于 "Indicator" 度量组中某个值的权重。
例如,如果我们查看 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)
这会导致值毫无意义且不可读。
所以这一切的目的是寻求一种方法来限制可以在度量表达式中应用的权重。我们尝试在 "From Date" 、 "To Date" 上使用 "Weight" 度量或 "Value" 度量的范围,但多维数据集从不执行我们的 SCOPE 指令。
这很长,也很复杂,但我们卡住了。
I am not sure that I understoond your problem completely, but what I understood is that since there is no projection axis in the fact Indicator, hence for a similar FromDate and ToDate, when Projection is selected they repeat values.
来自您的数据的示例
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
对于关闭,事实证明预期的行为是不可能的(就我们团队的尝试而言)。所以我们恢复到将 3 个表中的两个合并在一起,并且只有一个 many-to-many 加入度量值组。
我不是 MSAS Cube 方面的专家,所以这可能很明显,但这阻碍了我们团队的一项重要功能。
我们有 "Indicators" 的事实 table(来自计算器的基本值),是针对特定日期计算的。指标有一个 versionId,按照功能规则对它们进行分组。
它是这样的:
From Date, Value, NodeId, VersionId
D0 - 1.45 - N2 - V0
我们有 "VersionsAssociation" 的事实 table,它列出了所有有效的版本(与 "Indicator" 事实 table 中的版本完全相同)可见以及日期。
为了满足客户需求,某些版本在多个日期可见。 例如,为日期 D0 计算的版本对于日期 D1、D2、... 可能是 visible/recopied;所以对于特定版本 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",它们计算的日期,但没有 "To Date",因为它们何时可见不取决于指标, 而是由 "VersionAssociation".
决定这意味着在我们的 "Dimension Usage" 面板中,我们在维度 "To Date" 上有一个从 "Indicator" 指向 "VersionAssociation" 的多对多关系。
到目前为止,这部分按预期工作。当我们 select "To Date" = D1 in Excel 时,我们看到从 D0 复制的指标,具有正确的值(无重复)。
然后我们有一个叫做投影的东西,我们将指标值与特定维度分开。为此,我们有一个名为 "Projection" 的第三个度量组,其值称为 "Weight".
权重有一个"To Date",因为权重是针对特定日期计算的,即使将指标从 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
问题来了:
- 度量组 "Projection" 和 "Indicator" 直接 link 到维度 "Projection"。
- "Projection" 直接 link 到 "From Date" 和 "To Date" 维度。
- "Indicator" 有一个直接 link 到 "From Date" 维度,但只有一个 m2m 引用到 "To Date" 维度,通过 "Version Association" 度量组.
为了应用投影权重,我们对 "Indicator" 度量组中的度量使用度量表达式,类似于“[Value Unit] * [Weight]”。
由于某些原因,这导致 MSAS 无法正确区分有资格应用于 "Indicator" 度量组中某个值的权重。
例如,如果我们查看 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)
这会导致值毫无意义且不可读。
所以这一切的目的是寻求一种方法来限制可以在度量表达式中应用的权重。我们尝试在 "From Date" 、 "To Date" 上使用 "Weight" 度量或 "Value" 度量的范围,但多维数据集从不执行我们的 SCOPE 指令。
这很长,也很复杂,但我们卡住了。
I am not sure that I understoond your problem completely, but what I understood is that since there is no projection axis in the fact Indicator, hence for a similar FromDate and ToDate, when Projection is selected they repeat values. 来自您的数据的示例
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
对于关闭,事实证明预期的行为是不可能的(就我们团队的尝试而言)。所以我们恢复到将 3 个表中的两个合并在一起,并且只有一个 many-to-many 加入度量值组。