获取所有当前可用成员的姓名

时间:2011-03-26 15:43:35

标签: ssas mdx

我有行动网址,它将从excel打开网站。我需要将当前在excel中列出的所有员工的姓名传递给该网站。此列表来自多维数据集,可以由用户使用许多不同的度量进行过滤。 但毕竟有一些[员工]。[姓名]。

所以我的问题是如何生成包含当前成员的所有员工姓名的字符串。 在MDX下面如何从多维数据集中接收这样的员工列表:

SELECT NON EMPTY {[Measures]。[Salary]} ON COLUMNS, NON EMPTY {[员工]。[姓名]} ON ROW 来自[立方体] 在哪里( [雇员]。[处],[X] [雇员]。[标题]。[Z] ... ... ) 子句WHERE中的维度列表未知 - 它将取决于用户在excel中使用的内容

假设此MDX将返回5个名称: 一个 乙 C d Ë 我需要为每一行获取的是所有这些员工的列表,但只列出当前显示的那些员工。所以在上面的例子中,结果应如下所示: A,B,C,D,E B A,B,C,D,E C A,B,C,D,E D A,B,C,D,E E A,B,C,D,E

那么我可以通过URL将其传递给网站

我尝试使用GENERATE使用和不使用EXISTING来执行此操作,但结果是我要么从多维数据集(当前未选中)或仅一个列表中列出所有员工。

有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:1)

您需要一个计算成员,我们需要生成mdx函数(doc)。第一个想法是:

MEMBER [Measures].[ListAsName] AS Generate( [Employee].[Name].members,  [Employee].[Name].currentmember.name, ", ")

这个问题是[Employee]。[Name] .members它没有被where子句过滤(就像轴的情况一样)。这是因为它在计算的成员上下文中。

您有两种可能的解决方案:

使用EXISTING。这意味着我们确信切片器中的所有成员都是[Employee]维度的成员:

 MEMBER [Measures].[ListAsName] AS Generate( Existing [Employee].[Name].members,  [Employee].[Name].currentmember.name, ", ")

使用non empty

 MEMBER [Measures].[ListAsName] AS Generate( nonempty([Employee].[Name].members),  [Employee].[Name].currentmember.name, ", ")

同时使用:-) - >非空(现有[员工]。[姓名]。成员)

第一个不起作用的事实是SSAS的错误或MDX查询中的问题。第二个有点重,但也应该工作。第三个是防弹版本。