1

对 MDX 很陌生,所以这可能是一个新手问题。但是无法“翻译”任何解决方案的答案!

我有一个衡量我的行数的度量,称为 [Measures].[Fact Count]

我还有一个名为 [Document] 的维度,其中有一个名为 [Is Completed] 的字段。

[Document].[Is Completed] 可以具有以下两个值之一:[Yes] 或 [No]。

[文档] 维度确实有几个其他字段,例如 [文档类型]

我想问一个问题,比如“我的不同文档类型有多大比例已经完成”。

我尝试过像这样制作 [Completed Count]:

([Measures].[Fact Count],
[Document].[Is Completed].&[Yes])

然后像这样使用它:

[Measures].[Completed Count]/[Measures].[Fact Count]*100

但是(当然)[Completed Count] 然后会获取我所有已完成的文档,而不仅仅是那些 [Document Type]

希望这对某人有意义!

4

3 回答 3

2

啊,有办法了!

由于我的 Dimension 包含“是”或“否”值,我可以将它们转换为 1 和 0,并将它们作为 [Measures].[Is Completed Sum] 添加到我的 [Measures] 中。正如名字所说:我将对这些值求和。

然后计算很简单:

[Measures].[Is Completed Sum]/
[Measures].[Fact Count]*100

或者如果我确保不除以 0:

iif(
[Measures].[Fact Count] = 0,
null,
[Measures].[Is Completed Sum]/
[Measures].[Fact Count]*100
)

我仍然会在维度中保留我的是/否,因为我可以在需要时将它们用作过滤器。

whytheq,非常感谢您的所有投入!它非常有价值,让我的大脑朝着正确的方向旋转 :-)

于 2018-05-17T17:49:17.063 回答
1

也许是另一方需要更明确?

(
 ([Measures].[Fact Count],
  [Document].[Is Completed].&[Yes])
/
 ([Measures].[Fact Count],
  [Document].[Is Completed].[All])
)
*100

如果您有 Is Completed 的属性层次结构,请尝试使用它 - 可能像这样......

(
 ([Measures].[Fact Count],
  [Is Completed].[Is Completed].[Is Completed].&[Yes])
/
 ([Measures].[Fact Count],
  [Is Completed].[Is Completed].[All])
)
*100

或这个

(
 ([Measures].[Fact Count],
  [Is Completed].[Is Completed].&[Yes])
/
 ([Measures].[Fact Count],
  [Is Completed].[All])
)
*100

如果您将度量更改为以下内容并输入 Yes | 否 ON COLUMNS 你开始得到正确的结果了吗?

(
 ([Measures].[Fact Count])
/
 ([Measures].[Fact Count],
  [Document].[Is Completed].[All])
)
*100
于 2018-05-17T13:30:00.883 回答
0

也许范围它。(从whytheq偷了代码,我认为他得到了正确的答案)

SCOPE ([Document].[Is Completed].&[Yes])
THIS = (
 ([Measures].[Fact Count],
  [Document].[Is Completed].&[Yes])
/
 ([Measures].[Fact Count],
  [Document].[Is Completed].[All])
)
*100
END SCOPE

关于

由于我的维度包含“是”或“否”值,我可以将它们转换为 1 和 0 您可以改进您的模型并为您的维度添加一个新的列值。

实际上只用 <Member> 就可以得到 1 和 0。价值

于 2018-05-18T17:45:59.643 回答