【问题标题】:Get names all currently available members获取所有当前可用成员的名称
【发布时间】:2011-03-26 15:43:34
【问题描述】:

我有可以从 excel 打开网站的操作 URL。我需要将当前在 excel 中列出的所有员工的姓名传递给该网站。该列表来自多维数据集,可以由用户使用许多不同的措施进行过滤。 但毕竟会有一些 [Employee].[Name].

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

在列上选择非空 {[Measures].[Salary]}, 非空 {[Employee].[Name]} ON ROW 来自 [立方体] 在哪里 ( [员工].[部门].[X], [雇员].[职务].[Z] … … ) 子句 WHERE 中的维度列表未知 - 这将取决于用户将在 excel 中使用什么

假设这个 MDX 将返回 5 个名称: 一个 乙 C D 乙 我需要为每一行获取所有这些员工的列表,但只显示当前显示的员工。所以在上面的例子中,结果应该是这样的: A 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 传递给网站

我尝试在有和没有 EXISTING 的情况下使用 GENERATE 来做到这一点,但结果是我要么从多维数据集(当前未选择)中获取所有员工的列表,要么只获取一个。

有人可以帮我解决这个问题吗?

【问题讨论】:

  • 您能否使用 VBA 在 Excel 中循环单元格以获取您需要的名称?

标签: ssas mdx


【解决方案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, ", ")

同时使用 :-) -> nonempty( EXISTING [Employee].[Name].members )

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-02
    • 2011-10-20
    • 2011-01-04
    • 2018-12-12
    相关资源
    最近更新 更多