繁体   English   中英

带过滤器的MDX计算成员

[英]MDX Calculated member with filter

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

我有一个度量,该度量对我的行数进行计数,称为[度量]。[事实计数]

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

[文档]。[已完成]可以具有两个值之一:[是]或[否]。

[Document]维度确实还有其他几个字段,例如[Document Type]

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

我试过像这样[完成计数]:

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

然后像这样使用它:

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

但是(当然)然后[完成计数]会取走我所有已完成的文档,而不是仅取每个[Document Type]的文档

希望这对某人有意义!

啊,找到解决方案了!

由于我的维度包含“是”或“否”值,因此我可以将它们分别转换为1和0,并将它们作为[度量]添加到我的[度量]。[已完成的总和]。 顾名思义,我将求和。

那么计算很简单:

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

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

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

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

whytheq,非常感谢您的所有意见! 这非常有价值,并使我的大脑朝着正确的方向旋转:-)

也许是另一端需要更加明确?

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

如果您具有“已完成”的属性层次结构,请尝试使用该属性层次结构-可能像这样...

(
 ([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

如果将度量值更改为以下值,然后将是| 否,您不会开始获得正确的结果吗?

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

也许范围 (从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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM