Ssas MDX计算成员子多维数据集

Ssas MDX计算成员子多维数据集,ssas,mdx,Ssas,Mdx,我对MDX的这种深度还比较陌生,但这是我的困境。我的目标是使用.Net存储过程实现计算成员。计算(XIRR)将基于一组现金流日期和现金流金额。理想情况下,这将是我的多维数据集中的一个计算,可作为Excel/浏览器用户的度量 因此,简单地说,我只是尝试实现我自己的COUNT calculated member/measure(甚至不使用.Net),即根据当前上下文计算给定维度中的#个成员。假设我有一个具有客户Id密钥的客户。假设我的数据库中总共有100个客户。所以计数(Customer.Custo

我对MDX的这种深度还比较陌生,但这是我的困境。我的目标是使用.Net存储过程实现计算成员。计算(XIRR)将基于一组现金流日期和现金流金额。理想情况下,这将是我的多维数据集中的一个计算,可作为Excel/浏览器用户的度量

因此,简单地说,我只是尝试实现我自己的COUNT calculated member/measure(甚至不使用.Net),即根据当前上下文计算给定维度中的#个成员。假设我有一个具有客户Id密钥的客户。假设我的数据库中总共有100个客户。所以计数(Customer.CustomerId.AllMembers)是100。现在,当您开始使用浏览器并说filter on Customer.CustomerId.&1,Customer.CustomerId.&2(客户id 1和2)时,我希望我的计数计算成员返回2,但它返回的总数为100。我试过使用exists。我确信有些事情我还没有完全理解

希望这是有意义的,我们非常感谢对SSAS/MDX和计算有很好理解的人提供的任何帮助。提前谢谢


马蒂

你可能会遇到一些问题,我尝试做类似的事情时就遇到了

您的计算会员不遵守客户子选择,这是正常的。理论上,您要做的是创建一个动态集,然后在计算成员中使用该动态集,强制在过滤器创建的子多维数据集的上下文中计算维度计数。Mosha在这里有一篇好文章:

所以你最终会得到这样的结果:

CREATE DYNAMIC SET CurrentCube.Customers AS
EXISTING(Customer.CustomerId.CHILDREN);

CREATE MEMBER CurrentCube.Measures.CustomerCount AS
Customers.COUNT
现在,您将遇到的真正问题是SSAS中的一个bug,因此上面的代码(可能在本地工作得很好)将杀死一个生产多维数据集。这对我来说是一次激动人心的学习经历

看看你能不能找到解决办法,我不行

我能够得到我想要的,但我必须创建查询范围的动态集作为MDX查询的一部分,我无法将其创建为多维数据集对象:

WITH DYNAMIC SET Customers AS
EXISTING(Customer.CustomerId.CHILDREN);

MEMBER Measures.CustomerCount AS
Customers.COUNT

SELECT
Measures.CustomerCount 
ON COLUMNS
FROM [Cube]
WHERE Customer.CustomerId.&[1]

让我们知道你进展如何。

谢谢你为我指明了正确的方向。现在,我将使用一个解决方案,在与我的XIRR(现金流)所需的度量相关联的维度上使用一个动态命名集。将其与我计算的指标中的现有指标结合使用,可以为我提供一组准确的现金流。我最终会想找出一个更好的解决方案,该解决方案将处理使用其他维度或用于过滤器/子多维数据集的其他维度的现金流切割。但这将暂时奏效。非常感谢你!!